ΠΠ·ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΎΡ Π‘ΡΠ°Π½ΡΠΎΡΠ΄ΡΠΊΠΈΡ ΡΠ½ΠΈΠ²Π΅ΡΡΠΈΡΠ΅Ρ, ΠΠ°Π»ΠΈΡΠΎΡΠ½ΠΈΠΉΡΠΊΠΈΡ ΡΠ½ΠΈΠ²Π΅ΡΡΠΈΡΠ΅Ρ Π² Π‘Π°Π½ ΠΠΈΠ΅Π³ΠΎ ΠΈ Π’Π΅ΠΊΡΠ°ΡΠΊΠΈΡ ΡΠ½ΠΈΠ²Π΅ΡΡΠΈΡΠ΅Ρ Π² ΠΡΡΠΈΠ½ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌ , ΠΊΠΎΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠ°ΡΠΎ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π΅Π½ ΡΠ»ΠΎΠΉ ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ Π·Π° Π±Π»ΠΎΠΊΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Ρ ΡΡΠ½ΠΊΡΠΈΠΈ. 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
