ΠΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ Π΅ ΠΌΠ΅ΡΠΎΠ΄ Π·Π° Π·Π°ΠΎΠ±ΠΈΠΊΠ°Π»ΡΠ½Π΅ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΈΡΠ΅ Π·Π° ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½ΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ΄ Π½Π° Python, ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΡΠ΄Π°Π²Π½Π° ΠΈΠ·Π²Π΅ΡΡΠ½Π° Π³ΡΠ΅ΡΠΊΠ°, ΠΏΠΎΡΠ²ΠΈΠ»Π° ΡΠ΅ Π² Python 2.7, ΠΎΡΠΊΡΠΈΡΠ° ΠΏΡΠ΅Π· 2012 Π³ΠΎΠ΄ΠΈΠ½Π° ΠΈ Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ ΠΏΠΎΠΏΡΠ°Π²Π΅Π½Π° Π² Python 3. ΠΡΠ΅ΡΠΊΠ°ΡΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΡΡΠ΅Π· ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½ ΠΊΠΎΠ΄ Π½Π° Python Π΄Π° ΡΠ΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠ° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Π²Π΅ΡΠ΅ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄Π΅Π½Π° ΠΏΠ°ΠΌΠ΅Ρ (Use-After-Free) Π² CPython. ΠΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΎ ΡΠ΅ ΡΠΌΡΡΠ°ΡΠ΅, ΡΠ΅ Π³ΡΠ΅ΡΠΊΠ°ΡΠ° Π½Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π° Π·Π°ΠΏΠ»Π°Ρ Π° Π·Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡΡΠ° ΠΈ ΡΠ°ΠΌΠΎ Π² ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΅Π΄ΠΊΠΈ ΡΠ»ΡΡΠ°ΠΈ, ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΠΈΠ·ΠΊΡΡΡΠ²Π΅Π½ΠΎ ΡΡΠ·Π΄Π°Π΄Π΅Π½ΠΈ, ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Π°Π²Π°ΡΠΈΠΉΠ½ΠΎ ΠΏΡΠΈΠΊΠ»ΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠΊΡΠΈΠΏΡΠ°.
ΠΠ·ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π» Π½Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡΡΠ° Ρ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌ kn32 ΡΠ΅ Π·Π°ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ²Π° ΠΎΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΈ ΡΡΠΏΡ Π΄Π° ΠΏΠΎΠ΄Π³ΠΎΡΠ²ΠΈ ΡΠ°Π±ΠΎΡΠ΅Ρ Π΅ΠΊΡΠΏΠ»ΠΎΠΈΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π²ΡΡΠΊΠ° ΡΠΈΡΡΠ΅ΠΌΠ½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°, Π±Π΅Π· ΠΏΡΡΠΊ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΠΌΠ΅ΡΠΎΠ΄ΠΈ ΠΊΠ°ΡΠΎ os.system. ΠΠΊΡΠΏΠ»ΠΎΠΈΡΡΡ Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ Π½Π° ΡΠΈΡΡ Python ΠΈ ΡΠ°Π±ΠΎΡΠΈ Π±Π΅Π· ΠΈΠΌΠΏΠΎΡΡ Π½Π° Π²ΡΠ½ΡΠ½ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ Π±Π΅Π· ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ βcode.__new__β. ΠΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ΅ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΎ βbuiltin.__id__β, ΠΊΠΎΠΉΡΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π½Π΅ Π΅ Π·Π°Π±ΡΠ°Π½Π΅Π½. ΠΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠ° ΡΡΡΠ°Π½Π°, ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° Π·Π°ΠΎΠ±ΠΈΠΊΠ°Π»ΡΠ½Π΅ Π½Π° ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΈΡΠ΅ Π·Π° ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΡΠ»ΡΠ³ΠΈ ΠΈ ΡΡΠ΅Π΄ΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΠΎΠ±ΡΡΠΈΡΠ΅Π»Π½ΠΈ ΡΡΠ΅Π΄Π°, ΠΎΠ½Π»Π°ΠΉΠ½ ΠΎΠ±ΠΎΠ»ΠΊΠΈ, Π²Π³ΡΠ°Π΄Π΅Π½ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ ΠΈ Ρ.Π½.), Π΄ΠΎΠΏΡΡΠΊΠ°ΡΠΈ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ΄ Π½Π° Python, Π½ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ°Π²Π°ΡΠΈ Π½Π°Π»ΠΈΡΠ½ΠΈΡΠ΅ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡ ΠΈ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΡΠΈ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΡΠ°ΠΊΠΈΠ²Π° ΠΌΠ΅ΡΠΎΠ΄ΠΈ, ΠΊΠ°ΡΠΎ os.system.
ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡΡ ΠΊΠΎΠ΄ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π° Π°Π½Π°Π»ΠΎΠ³ Π½Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ΡΠΎ Π½Π° os.system, ΡΠ°Π±ΠΎΡΠ΅Ρ ΡΡΠ΅Π· Π΅ΠΊΡΠΏΠ»ΠΎΠ°ΡΠ°ΡΠΈΡ Π½Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡΠ° Π² CPython. ΠΠΊΡΠΏΠ»ΠΎΠΈΡΡΡ ΡΠ°Π±ΠΎΡΠΈ Ρ Π²ΡΠΈΡΠΊΠΈ Π²Π΅ΡΡΠΈΠΈ Π½Π° Python 3 Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΈ Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° x86-64 ΠΈ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠ° ΡΡΠ°Π±ΠΈΠ»Π½Π° ΡΠ°Π±ΠΎΡΠ° Π² Ubuntu 22.04, Π΄ΠΎΡΠΈ ΠΏΡΠΈ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ Π½Π° Π·Π°ΡΠΈΡΠ½ΠΈ ΡΠ΅ΠΆΠΈΠΌΠΈ Π½Π° PIE, RELRO ΠΈ CET. Π Π°Π±ΠΎΡΠ°ΡΠ° ΡΠ΅ ΡΡΡΡΠΎΠΈ Π² ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ ΠΎΡ ΠΊΠΎΠ΄Π° Π½Π° Python Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° Π°Π΄ΡΠ΅Ρ Π½Π° Π΅Π΄Π½Π° ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅ Π² ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄ Π½Π° CPython. ΠΠ° Π±Π°Π·Π°ΡΠ° Π½Π° ΡΠΎΠ·ΠΈ Π°Π΄ΡΠ΅Ρ, ΡΠ΅ ΠΈΠ·ΡΠΈΡΠ»ΡΠ²Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΡ Π°Π΄ΡΠ΅Ρ Π½Π° CPython Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ° ΠΈ Π°Π΄ΡΠ΅ΡΡΡ Π½Π° ΡΡΠ½ΠΊΡΠΈΡΡΠ° system() Π² Π·Π°ΡΠ΅Π΄Π΅Π½ΠΈΡ Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ° Π΅ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π½Π° libc. Π Π·Π°Π²ΡΡΡΠ΅ΠΊ ΡΠ΅ ΠΈΠ½ΠΈΡΠΈΠΈΡΠ° ΠΏΡΡΠΊ ΠΏΡΠ΅Ρ ΠΎΠ΄ ΠΏΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ Π°Π΄ΡΠ΅Ρ Π½Π° system, ΠΏΠΎΠ΄ΠΌΠ΅Π½ΡΠΉΠΊΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΠΏΡΡΠ²ΠΈΡ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΡΡΡ ΡΡΡΠΈΠ½Π³Π° β/bin/shβ.

ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
