සෑන්ඩ්බොක්ස් ස්ක්‍රිප්ට් වලින් පද්ධති විධාන ඇමතීමට ඉඩ දෙන පයිතන් හි ඇති අවදානම

Python 2.7 හි දර්ශනය වූ දිගුකාලීන දෝෂයක් මත පදනම්ව Python කේත ක්‍රියාත්මක කිරීමේ පද්ධති සඳහා විසඳුමක් ප්‍රකාශයට පත් කරන ලදී, 2012 දී හඳුනා ගන්නා ලද අතර තවමත් Python 3 හි නිවැරදි කර නොමැත. මෙම දෝෂය දැනටමත් නිදහස් කර ඇති ඇමතුමක් ආරම්භ කිරීමට විශේෂයෙන් සම්බන්ධ කර ඇති Python කේතය භාවිතා කිරීමට ඉඩ සලසයි. Python හි මතකය (භාවිතයෙන් පසු-නොමිලේ). මුලදී, දෝෂය ආරක්ෂක තර්ජනයක් නොවන බව උපකල්පනය කරන ලද අතර, සාමාන්යයෙන් කෘතිමව නිර්මාණය කරන ලද ඉතා දුර්ලභ අවස්ථාවන්හිදී පමණක්, පිටපත අසාමාන්ය ලෙස අවසන් කිරීමට හේතු විය හැක.

kn32 යන අන්වර්ථ නාමය යටතේ ආරක්ෂක පර්යේෂකයෙකු මෙම ගැටලුව ගැන උනන්දු වූ අතර os.system වැනි ක්‍රමවලට සෘජු ප්‍රවේශයකින් තොරව ඕනෑම පද්ධති විධානයක් ඇමතීමට හැකි වන පරිදි ක්‍රියාකාරී සූරාකෑමක් සකස් කිරීමට සමත් විය. සූරාකෑම පිරිසිදු Python තුළ ක්‍රියාත්මක වන අතර බාහිර පුස්තකාල ආනයනය නොකර සහ "code.__new__" හසුරුවන්න ස්ථාපනය නොකර ක්‍රියා කරයි. කොකුවලින්, සාමාන්‍යයෙන් තහනම් නොවන "builtin.__id__" පමණක් භාවිතා වේ. ප්‍රායෝගික පැත්තෙන්, පයිතන් කේතය ක්‍රියාත්මක කිරීමට ඉඩ සලසන, නමුත් පවතින ඇමතුම් සීමා කරන විවිධ සේවා සහ පරිසරයන් (උදාහරණයක් ලෙස, ඉගෙනුම් පරිසරයන්, ඔන්ලයින් ෂෙල්, බිල්ට් හසුරුවන්නා, ආදිය) හුදකලා යාන්ත්‍රණයන් මඟ හැරීමට යෝජිත කේතය භාවිතා කළ හැක. සහ os.system වැනි ප්‍රවේශ ක්‍රම වලට ඉඩ නොදෙන්න.

යෝජිත කේතය os.system ඇමතුමේ ප්‍රතිසමයක් වන අතර එය CPython හි අවදානමක් සූරාකෑම හරහා ක්‍රියා කරයි. මෙම සූරාකෑම x3-86 පද්ධති මත Python 64 හි සියලුම අනුවාද සමඟ ක්‍රියා කරන අතර PIE, RELRO සහ CET ආරක්ෂක මාතයන් සක්‍රීය කර තිබියදීත් Ubuntu 22.04 මත ස්ථායී වේ. ක්‍රියාත්මක කළ හැකි CPython කේතයේ එක් කාර්යයක ලිපිනය පිළිබඳ පයිතන් කේත තොරතුරු ලබා ගැනීම දක්වා කාර්යය අඩු වේ. මෙම ලිපිනය මත පදනම්ව, මතකයේ ඇති CPython හි මූලික ලිපිනය සහ libc හි පටවන ලද අවස්ථාවෙහි පද්ධතියේ() ශ්‍රිතයේ ලිපිනය ගණනය කෙරේ. අවසානයේදී, පළමු තර්ක දර්ශකය "/bin/sh" තන්තුවට ආදේශ කිරීමත් සමඟ නිශ්චිත පද්ධති ලිපිනයකට සෘජු පැනීමක් ආරම්භ වේ.

සෑන්ඩ්බොක්ස් ස්ක්‍රිප්ට් වලින් පද්ධති විධාන ඇමතීමට ඉඩ දෙන පයිතන් හි ඇති අවදානම


මූලාශ්රය: opennet.ru

අදහස් එක් කරන්න