ΠΠ·ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΎΡ Π£Π½ΠΈΠ²Π΅ΡΡΠΈΡΠ΅ΡΠ° Π‘ΡΠ΅Π½ΡΠΎΡΠ΄, ΠΠ°Π»ΠΈΡΠΎΡΠ½ΠΈΠΉΡΠΊΠΈΡ ΡΠ½ΠΈΠ²Π΅ΡΡΠΈΡΠ΅Ρ Π² Π‘Π°Π½ ΠΠΈΠ΅Π³ΠΎ ΠΈ Π’Π΅ΠΊΡΠ°ΡΠΊΠΈΡ ΡΠ½ΠΈΠ²Π΅ΡΡΠΈΡΠ΅Ρ Π² ΠΡΡΠΈΠ½ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ , ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠ°ΡΠΎ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π΅Π½ ΡΠ»ΠΎΠΉ ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ Π·Π° Π±Π»ΠΎΠΊΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΈ. RLBox Π΅ Π½Π°ΡΠΎΡΠ΅Π½ ΠΊΡΠΌ ΡΠ΅ΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΡΡ ΡΠΈΠ³ΡΡΠ½ΠΎΡΡΡΠ° Π½Π° Π½Π΅Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π½Π° ΡΡΠ΅ΡΠΈ ΡΡΡΠ°Π½ΠΈ, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ°Ρ ΠΎΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅, Π½ΠΎ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈΡΠ΅ Π² ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΊΠΎΠΌΠΏΡΠΎΠΌΠ΅ΡΠΈΡΠ°Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡ.
ΠΠΎΠΌΠΏΠ°Π½ΠΈΡ Mozilla Π΄Π° ΡΠ΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠ° RLBox Π² Linux Π²Π΅ΡΡΠΈΠΈ Π½Π° Firefox 74 ΠΈ macOS Π²Π΅ΡΡΠΈΠΈ Π½Π° Firefox 75 Π·Π° ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° , ΠΎΡΠ³ΠΎΠ²Π°ΡΡΡΠ° Π·Π° Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° ΡΡΠΈΡΡΠΎΠ²Π΅. ΠΡΠΈ ΡΠΎΠ²Π° RLBox Π½Π΅ Π΅ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅Π½ Π·Π° Firefox ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ Π½Π° Π²ΡΡΠΊΠ°ΠΊΠ²ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ. RLBox ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΡ MIT. Π ΠΌΠΎΠΌΠ΅Π½ΡΠ° RLBox ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΠ°Π±ΠΎΡΠ° Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ Linux ΠΈ macOS, Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π·Π° Windows ΡΠ΅ ΠΎΡΠ°ΠΊΠ²Π° ΠΏΠΎ-ΠΊΡΡΠ½ΠΎ.
Π½Π° ΡΠ°Π±ΠΎΡΠ° Π½Π° RLBox ΡΠ΅ ΡΡΡΡΠΎΠΈ Π² ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° C/C++ ΠΊΠΎΠ΄ ΠΎΡ ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π² Π½ΠΈΡΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²Π΅Π½ ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π΅Π½ ΠΊΠΎΠ΄ WebAssembly, ΠΊΠΎΠΉΡΠΎ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΡΠ΅ ΠΎΡΠΎΡΠΌΡ Π² ΠΌΠΎΠ΄ΡΠ»Π° Π½Π° WebAssembly, ΡΠΈΠΈΡΠΎ ΠΏΡΠ°Π²Π° ΡΠ° Π·Π°Π΄Π°Π΄Π΅Π½ΠΈ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΎ Π·Π° ΡΠΎΠ·ΠΈ ΠΌΠΎΠ΄ΡΠ» (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π½ΠΈΠ·ΠΎΠ²Π΅ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΡΠ²ΠΎΡΠΈ ΠΌΡΠ΅ΠΆΠΎΠ² ΡΠΎΠΊΠ΅Ρ ΠΈΠ»ΠΈ ΡΠ°ΠΉΠ»). ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° C/C++ ΠΊΠΎΠ΄ Π² WebAssembly ΡΠ΅ ΠΎΡΡΡΠ΅ΡΡΠ²ΡΠ²Π° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° .
ΠΠ° Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½ΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ WebAssembly ΠΌΠΎΠ΄ΡΠ»ΡΡ ΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ° Π² ΠΌΠ°ΡΠΈΠ½Π΅Π½ ΠΊΠΎΠ΄ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠ° ΠΈ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° Π² ΠΎΡΠ΄Π΅Π»Π΅Π½ Β«Π½Π°Π½ΠΎΠΏΡΠΎΡΠ΅ΡΒ», ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½ ΠΎΡ ΠΎΡΡΠ°Π½Π°Π»Π°ΡΠ° ΠΏΠ°ΠΌΠ΅Ρ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ. ΠΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΡΡ Lucet Π΅ Π±Π°Π·ΠΈΡΠ°Π½ Π½Π° ΡΡΡΠΈΡ ΠΊΠΎΠ΄ ΠΊΠ°ΡΠΎ JIT Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»Ρ , ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² Firefox Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° WebAssembly.
Π‘ΡΠ±ΡΠ°Π½ΠΈΡΡ ΠΌΠΎΠ΄ΡΠ» ΡΠ°Π±ΠΎΡΠΈ Π² ΠΎΡΠ΄Π΅Π»Π½Π° ΠΎΠ±Π»Π°ΡΡ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ° ΠΈ Π½ΡΠΌΠ° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΠΎΡΡΠ°Π½Π°Π»ΠΎΡΠΎ Π°Π΄ΡΠ΅ΡΠ½ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ. Π ΡΠ»ΡΡΠ°ΠΉ Π½Π° Π΅ΠΊΡΠΏΠ»ΠΎΠ°ΡΠ°ΡΠΈΡ Π½Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ°, Π°ΡΠ°ΠΊΡΠ²Π°ΡΠΈΡΡ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ ΠΈ Π½ΡΠΌΠ° Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΎΠ±ΡΡΠ½Π΅ ΠΊΡΠΌ ΠΎΠ±Π»Π°ΡΡΠΈΡΠ΅ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ° Π½Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡ ΠΏΡΠΎΡΠ΅Ρ ΠΈΠ»ΠΈ Π΄Π° ΠΏΡΠ΅Π΄Π°Π΄Π΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Π° ΠΈΠ·Π²ΡΠ½ ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½Π°ΡΠ° ΡΡΠ΅Π΄Π°.
ΠΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ Π΅ ΠΎΡΠΈΠ³ΡΡΠ΅Π½ Π²ΠΈΡΠΎΠΊΠΎΠΏΡΠΎΡΠΈΠ»Π΅Π½ , ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° Π² ΡΠ΅ΠΆΠΈΠΌ Π½Π° ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ. WebAssembly ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ ΠΏΠΎΡΡΠΈ Π½Π΅ ΠΈΠ·ΠΈΡΠΊΠ²Π°Ρ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΡΠ΅ΡΡΡΡΠΈ ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΡΠΎ Ρ ΡΡΡ
Π½Π΅ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-Π±Π°Π²Π½ΠΎ ΠΎΡ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ (ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅ ΠΎΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ ΠΊΠ°ΡΠΎ Π½Π°ΡΠΈΠ²Π΅Π½ ΠΊΠΎΠ΄, Π° ΡΠ°Π·Ρ
ΠΎΠ΄ΠΈΡΠ΅ ΠΈΠ΄Π²Π°Ρ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΎ ΠΎΡ ΠΊΠΎΠΏΠΈΡΠ°Π½Π΅ΡΠΎ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°ΡΠ° Π½Π° Π΄Π°Π½Π½ΠΈΡΠ΅ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½Π°ΡΠ° ΡΡΠ΅Π΄Π°). Π€ΡΠ½ΠΊΡΠΈΠΈΡΠ΅ ΠΎΡ ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π½Π΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΠΈ Π΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°
ΠΏΡΠΎΡΠ»ΠΎΠΉΠΊΠ° invoke_sandbox_function().
ΠΡ ΡΠ²ΠΎΡ ΡΡΡΠ°Π½Π°, Π°ΠΊΠΎ ΠΎΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΈΠ·Π²ΠΈΠΊΠ°Ρ Π²ΡΠ½ΡΠ½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠ΅Π·ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π°Ρ ΡΠ²Π½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ ΡΡΠ΅Π· ΠΌΠ΅ΡΠΎΠ΄Π° register_callback (ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ RLBox ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅ ). ΠΠ° ΠΎΡΠΈΠ³ΡΡΡΠ²Π°Π½Π΅ Π½Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½Π° ΡΠ°Π±ΠΎΡΠ° Ρ ΠΏΠ°ΠΌΠ΅ΡΡΠ° (memory safety) ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡΡΠ° Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠ΄Π° Π½Π΅ Π΅ Π΄ΠΎΡΡΠ°ΡΡΡΠ½Π° ΠΈ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΡΠ΅ ΠΎΡΠΈΠ³ΡΡΠΈ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° Π²ΡΡΡΠ°ΡΠΈΡΠ΅ ΡΠ΅ ΠΏΠΎΡΠΎΡΠΈ ΠΎΡ Π΄Π°Π½Π½ΠΈ.
Π‘ΡΠΎΡΠΌΠΈΡΠ°Π½ΠΈΡΠ΅ Π² ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½Π°ΡΠ° ΡΡΠ΅Π΄Π° ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡ ΠΊΠ°ΡΠΎ Π½Π΅Π΄ΠΎΠ²Π΅ΡΡΠΈΠ²ΠΈ, ΠΎΠ³ΡΠ°Π½ΠΈΡΠ°Π²Π°Ρ ΡΠ΅ ΡΡΠ΅Π· ΠΈ Π·Π° Β«ΠΎΡΠΈΡΡΠΊΠ°Β» ΠΈΠ·ΠΈΡΠΊΠ²Π°Ρ ΠΈ ΠΊΠΎΠΏΠΈΡΠ°Π½Π΅ Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ.
ΠΠ΅Π· ΠΎΡΠΈΡΡΠΊΠ°, ΠΎΠΏΠΈΡΡΡ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° tainted-Π΄Π°Π½Π½ΠΈ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ, ΠΈΠ·ΠΈΡΠΊΠ²Π°Ρ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈ Π΄Π°Π½Π½ΠΈ (ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ), Π²ΠΎΠ΄ΠΈ Π΄ΠΎ Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ Π½Π° Π΅ΡΠ°ΠΏΠ° Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ. ΠΠ°Π»ΠΊΠΈΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅, Π²ΡΡΠ½Π°ΡΠΈΡΠ΅ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ ΠΈ ΡΡΡΡΠΊΡΡΡΠΈΡΠ΅ ΡΠ΅ ΠΏΡΠ΅Π΄Π°Π²Π°Ρ ΡΡΠ΅Π· ΠΊΠΎΠΏΠΈΡΠ°Π½Π΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠ°ΠΌΠ΅ΡΡΠ° Π½Π° ΠΏΡΠΎΡΠ΅ΡΠ° ΠΈ ΠΏΠ°ΠΌΠ΅ΡΡΠ° Π½Π° ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½Π°ΡΠ° ΡΡΠ΅Π΄Π°. ΠΠ° Π³ΠΎΠ»Π΅ΠΌΠΈ Π½Π°Π±ΠΎΡΠΈ ΠΎΡ Π΄Π°Π½Π½ΠΈ ΠΏΠ°ΠΌΠ΅ΡΡΠ° ΡΠ΅ Π²ΡΠ΄Π΅Π»Ρ Π² ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½Π°ΡΠ° ΡΡΠ΅Π΄Π°, Π° Π½Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡ ΠΏΡΠΎΡΠ΅Ρ ΡΠ΅ Π²ΡΡΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠ΅Π½ ΡΠΊΠ°Π·Π°ΡΠ΅Π» Β«sandbox-referenceΒ».
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
