ΠΠ·ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΎΡ ΠΠ±ΠΎΡΠΎΠ½Π½ΠΈΡ Π½Π°ΡΡΠ½ΠΎ-ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈ ΡΠ½ΠΈΠ²Π΅ΡΡΠΈΡΠ΅Ρ Π½Π° ΠΠ°ΡΠΎΠ΄Π½ΠΎ-ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡΠ΅Π»Π½Π°ΡΠ° Π°ΡΠΌΠΈΡ Π½Π° ΠΠΈΡΠ°ΠΉ, ΠΠ°ΡΠΈΠΎΠ½Π°Π»Π½ΠΈΡ ΡΠ½ΠΈΠ²Π΅ΡΡΠΈΡΠ΅Ρ Π½Π° Π‘ΠΈΠ½Π³Π°ΠΏΡΡ ΠΈ Π¨Π²Π΅ΠΉΡΠ°ΡΡΠΊΠ°ΡΠ° Π²ΠΈΡΡΠ° ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠ° ΡΠΊΠΎΠ»Π° Π² Π¦ΡΡΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΈΡ Π° Π½ΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄ Π·Π° Π°ΡΠ°ΠΊΠ° ΡΡΠ΅ΡΡ ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½ΠΈ Π°Π½ΠΊΠ»Π°Π²ΠΈ Intel SGX (Software Guard eXtensions). ΠΡΠ°ΠΊΠ°ΡΠ°, Π½Π°ΡΠ΅ΡΠ΅Π½Π° SmashEx, Π΅ ΠΏΡΠ΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ°Π½Π° ΠΎΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Ρ ΡΠ΅Π΅Π½ΡΠ΅ΡΠ°ΡΠΈΡΡΠ° ΠΏΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΠΈΠ·ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΈ ΡΠΈΡΡΠ°ΡΠΈΠΈ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ°Π±ΠΎΡΠ° Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈΡΠ΅ Π² runtime Π·Π° Intel SGX. ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄ Π·Π° Π°ΡΠ°ΠΊΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°, ΠΏΡΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ» Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°, Π΄Π° ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡ ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»Π½ΠΈ Π΄Π°Π½Π½ΠΈ, ΡΠ°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈ Π² Π°Π½ΠΊΠ»Π°Π²Π°, ΠΈΠ»ΠΈ Π΄Π° ΡΠ΅ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ° ΠΊΠΎΠΏΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½ ΠΊΠΎΠ΄ Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ° Π½Π° Π°Π½ΠΊΠ»Π°Π²Π° ΠΈ Π½Π΅Π³ΠΎΠ²ΠΎΡΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅.
ΠΡΠΎΡΠΎΡΠΈΠΏΠΈ Π½Π° Π΅ΠΊΡΠΏΠ»ΠΎΠΈΡΠΈ ΡΠ° ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ΠΈ Π·Π° Π°Π½ΠΊΠ»Π°Π²ΠΈ Ρ runtime, Π±Π°Π·ΠΈΡΠ°Π½ΠΈ Π½Π° Intel SGX SDK (CVE-2021-0186) ΠΈ Microsoft Open Enclave (CVE-2021-33767). Π ΠΏΡΡΠ²ΠΈΡΡ ΡΠ»ΡΡΠ°ΠΉ Π΅ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠ°Π½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΠΈΠ·Π²Π»ΠΈΡΠ°Π½Π΅ Π½Π° RSA-ΠΊΠ»ΡΡΠ°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ Π½Π° ΡΠ΅Π± ΡΡΡΠ²ΡΡ Π·Π° HTTPS, Π° Π²ΡΠ² Π²ΡΠΎΡΠΈΡ Π΅ ΡΡΠΏΡΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ, ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΎ Ρ ΡΡΠΈΠ»ΠΈΡΠ° cURL, ΡΡΠ°ΡΡΠΈΡΠ°Π½Π° Π² Π°Π½ΠΊΠ»Π°Π²Π°. Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡΡΠ° Π²Π΅ΡΠ΅ Π΅ ΠΎΡΡΡΡΠ°Π½Π΅Π½Π° ΡΠΎΡΡΡΠ΅ΡΠ½ΠΎ Π² ΠΈΠ·Π΄Π°Π½ΠΈΡΡΠ° Π½Π° Intel SGX SDK 2.13 ΠΈ Open Enclave 0.17.1. ΠΡΠ²Π΅Π½ ΠΏΠ°ΠΊΠ΅ΡΠΈΡΠ΅ Intel SGX SDK ΠΈ Microsoft Open Enclave, ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡΠ° ΡΠ΅ ΠΏΡΠΎΡΠ²ΡΠ²Π° ΠΈ Π² SDK Π½Π° Google Asylo, EdgelessRT, Apache Teaclave, Rust SGX SDK, SGX-LKL, CoSMIX ΠΈ Veracruz.
ΠΠ°ΠΏΠΎΠΌΠ½ΡΠΌΠ΅, ΡΠ΅ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΡΠ° SGX (Software Guard Extensions) ΡΠ΅ ΠΏΠΎΡΠ²ΠΈ Π² ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈΡΠ΅ Intel Core ΡΠ΅ΡΡΠΎ ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠ΅ (Skylake) ΠΈ ΠΏΡΠ΅Π΄Π»Π°Π³Π° ΡΠ΅ΡΠΈΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΡΠΈ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ° ΠΎΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈΡ ΡΠ»ΠΎΠΉ Π΄Π° ΠΎΡΠ΄Π΅Π»ΡΡ Π·Π°ΡΠ²ΠΎΡΠ΅Π½ΠΈ ΠΎΠ±Π»Π°ΡΡΠΈ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ° β Π°Π½ΠΊΠ»Π°Π²ΠΈ, ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΏΡΠΎΡΠ΅ΡΠ΅Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΡΠ½ΠΎ Π΄ΠΎΡΠΈ ΠΎΡ ΡΠ΄ΡΠΎΡΠΎ ΠΈ ΠΊΠΎΠ΄Π°, ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Π½ Π² ΡΠ΅ΠΆΠΈΠΌΠΈΡΠ΅ ring0, SMM ΠΈ VMM. ΠΡΠ΅Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ΄Π° Π² Π°Π½ΠΊΠ»Π°Π²Π° Π½Π΅ Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π° ΠΏΡΠ΅Ρ Π²ΡΡΠ»ΡΠ½Π΅ ΠΈ ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΈΠΈ Ρ ΡΠ΅Π³ΠΈΡΡΡΠΈ ΠΈ ΡΡΠ΅ΠΊ β Π·Π° ΠΏΡΠ΅Π΄Π°Π²Π°Π½Π΅ Π½Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π² Π°Π½ΠΊΠ»Π°Π²Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ ΡΡΠ·Π΄Π°Π΄Π΅Π½ΠΈ Π½ΠΎΠ²ΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ EENTER, EEXIT ΠΈ ERESUME, ΠΊΠΎΠΈΡΠΎ ΠΈΠ·Π²ΡΡΡΠ²Π°Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΠΏΡΠ»Π½ΠΎΠΌΠΎΡΠΈΡΡΠ°. ΠΡΠΈ ΡΠΎΠ²Π° ΠΏΠΎΡΡΠ°Π²Π΅Π½ΠΈΡΡ Π² Π°Π½ΠΊΠ»Π°Π² ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠ»Π°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π·Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΡΡΡΠ΅ Π² Π°Π½ΠΊΠ»Π°Π²Π° ΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»Π½Π° ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ Π·Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° Π²ΡΠ½ΡΠ½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠ° Π·Π°ΡΠΈΡΠ° ΠΎΡ Ρ Π°ΡΠ΄ΡΠ΅ΡΠ½ΠΈ Π°ΡΠ°ΠΊΠΈ, ΠΊΠ°ΡΠΎ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ ΠΊΡΠΌ ΠΌΠΎΠ΄ΡΠ»Π° DRAM, ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π° ΡΠΈΡΡΡΠ²Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ° Π½Π° Π°Π½ΠΊΠ»Π°Π²Π°.

ΠΡΠΎΠ±Π»Π΅ΠΌΠ°ΡΠ° Π΅ ΡΠ²ΡΡΠ·Π°Π½Π° Ρ ΡΠ°ΠΊΡΠ°, ΡΠ΅ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΡΠ° SGX ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Π΄Π° ΠΏΡΠ΅ΠΊΡΠ°ΡΠΈ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° Π°Π½ΠΊΠ»Π°Π²Π° ΡΡΠ΅Π· Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° Ρ Π°ΡΠ΄ΡΠ΅ΡΠ½ΠΎ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, Π° Π² Π°Π½ΠΊΠ»Π°Π²Π°Ρ Π½Π΅ ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π°Π΄Π΅ΠΊΠ²Π°ΡΠ½ΠΎ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΈΡΠ΅ Π·Π° Π°ΡΠΎΠΌΠ°ΡΠ½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ. ΠΠ° ΡΠ°Π·Π»ΠΈΠΊΠ° ΠΎΡ ΡΠ΄ΡΠΎΡΠΎ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° ΠΈ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΠ΄ΡΡ Π² Π°Π½ΠΊΠ»Π°Π²Π΅ΡΠ΅ Π½ΡΠΌΠ° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΈ Π·Π° ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° Π°ΡΠΎΠΌΠ°ΡΠ½ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π²ΡΠ·Π½ΠΈΠΊΠ²Π°ΡΠΈ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ. ΠΠ΅Π· ΡΠ΅Π·ΠΈ Π°ΡΠΎΠΌΠ°ΡΠ½ΠΈ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΈ Π°Π½ΠΊΠ»Π°Π²Π΅ΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ΅Π½ΠΈ ΠΏΠΎ Π²ΡΡΠΊΠΎ Π²ΡΠ΅ΠΌΠ΅ ΠΈ Π΄Π° ΡΠ΅ Π²ΡΡΠ½Π°Ρ ΠΊΡΠΌ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅, Π΄ΠΎΡΠΈ ΠΊΠΎΠ³Π°ΡΠΎ Π² Π°Π½ΠΊΠ»Π°Π²Π΅ΡΠ΅ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ ΠΊΡΠΈΡΠΈΡΠ½ΠΈ ΡΠ΅ΠΊΡΠΈΠΈ ΠΈ ΡΠΎΠΉ ΡΠ΅ Π½Π°ΠΌΠΈΡΠ° Π² Π½Π΅Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠ΅ Π½Π° CPU Π½Π΅ ΡΠ° Π·Π°ΠΏΠ°Π·Π΅Π½ΠΈ/Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²Π΅Π½ΠΈ).

ΠΠ° Π½ΠΎΡΠΌΠ°Π»Π½ΠΎΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠ°Π½Π΅ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΡΠ° SGX ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΏΡΠ΅ΠΊΡΠ°ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° Π°Π½ΠΊΠ»Π°Π²Π° ΡΡΠ΅Π· Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΠΈ Ρ Π°ΡΠ΄ΡΠ΅ΡΠ½ΠΈ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ. Π’Π°Π·ΠΈ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π° runtime-ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡΡΠ° Π½Π° Π°Π½ΠΊΠ»Π°Π²Π΅ΡΠ΅ Π΄Π° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π²ΡΡΡΠ΅-Π°Π½ΠΊΠ»Π°Π²Π½ΠΈ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΡΠΈΠ³Π½Π°Π»ΠΈ, Π½ΠΎ ΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡΠΎΠ²ΠΎΠΊΠΈΡΠ° ΠΈ Π³ΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈ ΡΠ΅Π΅Π½ΡΠ΅ΡΠ°Π±ΠΈΠ»Π½ΠΎΡΡ. ΠΡΠ°ΠΊΠ°ΡΠ° SmashEx ΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π°Π²Π° Π½Π° Π΅ΠΊΡΠΏΠ»ΠΎΠ°ΡΠ°ΡΠΈΡΡΠ° Π½Π° Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΡΠΈ Π² SDK, ΠΏΠΎΡΠ°Π΄ΠΈ ΠΊΠΎΠΈΡΠΎ ΡΠΈΡΡΠ°ΡΠΈΡΡΠ° Ρ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° Π½Π° ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π½Π΅ ΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π° Π°Π΄Π΅ΠΊΠ²Π°ΡΠ½ΠΎ. ΠΠ°ΠΆΠ½ΠΎ Π΅, ΡΠ΅ Π·Π° Π΅ΠΊΡΠΏΠ»ΠΎΠ°ΡΠ°ΡΠΈΡ Π½Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡΠ° Π°ΡΠ°ΠΊΡΠ²Π°ΡΠΈΡΡ ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠΌΠ° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π΄Π° ΠΏΡΠ΅ΠΊΡΠ°ΡΠΈ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° Π°Π½ΠΊΠ»Π°Π²Π°, Ρ.Π΅. ΡΡΡΠ±Π²Π° Π΄Π° ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΡΠΎ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅.
Π‘Π»Π΅Π΄ Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π°ΡΠ°ΠΊΡΠ²Π°ΡΠΈΡΡ ΠΏΠΎΠ»ΡΡΠ°Π²Π° ΠΌΠ°Π»ΠΊΠΎ Π²ΡΠ΅ΠΌΠ΅Π²ΠΎ ΠΏΡΠΎΠ·ΠΎΡΡΠ΅, Π² ΠΊΠΎΠ΅ΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠ΅ΡΠ΅Ρ Π²ΡΡΠ»ΠΈ ΠΏΠΎΡΠΎΠΊΠ° Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠ΅Π· ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΈΡ Ρ Π²Ρ ΠΎΠ΄Π½ΠΈΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ. ΠΠΎ-ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ, ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠ΅ Π½Π° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° (ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ·Π²ΡΠ½ Π°Π½ΠΊΠ»Π°Π²Π°) ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΡΠ·Π΄Π°Π΄Π΅ Π½ΠΎΠ²ΠΎ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π²Π΅Π΄Π½Π°Π³Π° ΡΠ»Π΅Π΄ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈΡΠ΅ Π·Π° Π²Ρ ΠΎΠ΄ Π² Π°Π½ΠΊΠ»Π°Π²Π° (EENTER), ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Π²ΡΠ·Π²ΡΡΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π° Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π² ΠΌΠΎΠΌΠ΅Π½Ρ, ΠΊΠΎΠ³Π°ΡΠΎ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΡΠ° Π½Π° ΡΡΠ΅ΠΊΠ° Π·Π° Π°Π½ΠΊΠ»Π°Π²Π° Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ Π΅ Π·Π°Π²ΡΡΡΠ΅Π½Π°, Π² ΠΊΠΎΡΡΠΎ Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΡΠ΅ Π·Π°ΠΏΠ°Π·Π²Π° ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠ΅ Π½Π° CPU.
Π‘ΠΈΡΡΠ΅ΠΌΠ°ΡΠ° ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π²ΡΡΠ½Π΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΡΠΎ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ ΠΊΡΠΌ Π°Π½ΠΊΠ»Π°Π²Π°, Π½ΠΎ ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΡΠ΅ΠΊΠ° Π½Π° Π°Π½ΠΊΠ»Π°Π²Π° ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΏΡΠ΅ΠΊΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π΅ Π΅ Π±ΠΈΠ» ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½, Π°Π½ΠΊΠ»Π°Π²ΡΡ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Π½ ΡΡΡ ΡΡΠ΅ΠΊΠ°, Π½Π°ΠΌΠΈΡΠ°Ρ ΡΠ΅ Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ° Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°, ΠΊΠΎΠ΅ΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° Π΅ΠΊΡΠΏΠ»ΠΎΠ°ΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ ΡΠ΅Ρ Π½ΠΈΠΊΠΈ, ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ Ρ ΠΎΠ±ΡΠ°ΡΠ½Π° ΠΎΡΠΈΠ΅Π½ΡΠ°ΡΠΈΡ (ROP β Return-Oriented Programming). ΠΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΠ΅Ρ Π½ΠΈΠΊΠ°ΡΠ° ROP Π°ΡΠ°ΠΊΡΠ²Π°ΡΠΈΡΡ Π½Π΅ ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π° Π΄Π° ΠΏΠΎΡΡΠ°Π²ΠΈ ΡΠ²ΠΎΡ ΠΊΠΎΠ΄ Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ°, Π° ΡΠ°Π±ΠΎΡΠΈ Ρ Π²Π΅ΡΠ΅ Π½Π°Π»ΠΈΡΠ½ΠΈ Π² Π·Π°ΡΠ΅Π΄Π΅Π½ΠΈΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΏΠ°ΡΡΠ΅ΡΠ° ΠΌΠ°ΡΠΈΠ½Π½ΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ, Π·Π°Π²ΡΡΡΠ²Π°ΡΠΈ Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ Π·Π° Π²ΡΡΡΠ°Π½Π΅ Π½Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΡΠΎ (ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΡΠΎΠ²Π° ΡΠ° ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΡΠ½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ). Π Π°Π±ΠΎΡΠ°ΡΠ° Π½Π° Π΅ΠΊΡΠΏΠ»ΠΎΠΉΡΠ° ΡΠ΅ ΡΠ²Π΅ΠΆΠ΄Π° Π΄ΠΎ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° Π²Π΅ΡΠΈΠ³Π° ΠΎΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ Π±Π»ΠΎΠΊΠΎΠ²Π΅ (βΠ³Π°Π΄ΠΆΠ΅ΡΠΈβ) Π·Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ°ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ.


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