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