Π ΠΊΠΎΡΡΠ΅ΠΊΡΠΈΡΡΡΡΠΈΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡΡ Wasmtime 6.0.1, 5.0.1 ΠΈ 4.0.1 ΡΡΡΡΠ°Π½Π΅Π½Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡ (CVE-2023-26489), ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΡΠΎΠ²Π΅Π½Ρ ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ. Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ Π·Π°ΠΏΠΈΡΡ Π΄Π°Π½Π½ΡΡ Π² ΠΎΠ±Π»Π°ΡΡΡ ΠΏΠ°ΠΌΡΡΠΈ Π²Π½Π΅ Π³ΡΠ°Π½ΠΈΡΡ, Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎΠΉ Π΄Π»Ρ ΠΈΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ WebAssembly-ΠΊΠΎΠ΄Π°, ΡΡΠΎ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΎ Π°ΡΠ°ΠΊΡΡΡΠΈΠΌ Π΄Π»Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° Π²Π½Π΅ ΠΈΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ WASI.
Wasmtime ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ runtime Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ WebAssembly-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡΠΌΠΈ WASI (WebAssembly System Interface) ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΡΡ ΠΎΠ±ΠΎΡΠΎΠ±Π»Π΅Π½Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° ΡΠ·ΡΠΊΠ΅ Rust, Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡ Π²ΡΠ·Π²Π°Π½Π° Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ ΠΏΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΏΡΠ°Π²ΠΈΠ» Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ Π°Π΄ΡΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΠ°ΠΌΡΡΠΈ Π² Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ΅ ΠΊΠΎΠ΄Π° Cranelift, ΡΡΠ°Π½ΡΠ»ΠΈΡΡΡΡΠ΅ΠΌ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΠ΅ ΠΎΡ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π² ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΠΌΠ°ΡΠΈΠ½Π½ΡΠΉ ΠΊΠΎΠ΄ Π΄Π»Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ x86_64.
Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, Π΄Π»Ρ WebAssembly-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΡΠ°ΡΡΡΠΈΡΡΠ²Π°Π»ΠΈΡΡ 35-ΡΠ°Π·ΡΡΠ΄Π½ΡΠ΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠ΅ Π°Π΄ΡΠ΅ΡΠ° Π²ΠΌΠ΅ΡΡΠΎ ΡΠ°Π·ΡΠ΅ΡΡΠ½Π½ΡΡ Π² WebAssembly 33-ΡΠ°Π·ΡΡΠ΄Π½ΡΡ Π°Π΄ΡΠ΅ΡΠΎΠ², ΡΡΠΎ ΡΠ΄Π²ΠΈΠ³Π°Π»ΠΎ Π³ΡΠ°Π½ΠΈΡΡ Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎΠΉ Π΄Π»Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΡΡΠ΅Π½ΠΈΡ ΠΈ Π·Π°ΠΏΠΈΡΠΈ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ Π΄ΠΎ 34 ΠΠ, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ sandbox-ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ Π·Π°ΡΠΈΡΡ Π΄Π»Ρ 6 ΠΠ ΠΎΡ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ Π°Π΄ΡΠ΅ΡΠ°. Π ΠΈΡΠΎΠ³Π΅, Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΠΎΡ 6 Π΄ΠΎ 34 ΠΠ ΠΎΡ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ Π°Π΄ΡΠ΅ΡΠ° ΠΎΠΊΠ°Π·ΡΠ²Π°Π»ΡΡ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ ΠΈ Π·Π°ΠΏΠΈΡΠΈ ΠΈΠ· WebAssembly-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΠΌΠΎΠ³ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΡΡΡΡ Π΄ΡΡΠ³ΠΈΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ WebAssembly ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ WebAssembly runtime.
ΠΡΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ Π²Π΅ΡΡΠΈΡ Wasmtime Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΠ±Ρ
ΠΎΠ΄Π½ΡΡ
ΠΏΡΡΠ΅ΠΉ Π΄Π»Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΊΠΈ ΡΠΏΠΎΠΌΠΈΠ½Π°Π΅ΡΡΡ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΠΎΠΏΡΠΈΠΈ «Config::static_memory_maximum_size(0)» Π΄Π»Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π³ΡΠ°Π½ΠΈΡ ΠΏΡΠΈ Π»ΡΠ±ΠΎΠΌ Π΄ΠΎΡΡΡΠΏΠ΅ ΠΊ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ (ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠΌΡ ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ). ΠΡΡΠ³ΠΈΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ «Config::static_memory_guard_size(1 < 36)» Π΄Π»Ρ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΡ ΡΠΈΡΠ»Π° Ρ ΡΡΠΎΡΠΎΠΆΠ΅Π²ΡΡ
ΡΡΡΠ°Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ (Guard Page, ΠΏΡΠΈ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΈ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅), ΡΠ°Π·ΠΌΠ΅ΡΠ°Π΅ΠΌΡΡ
Π² ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ½ΠΎΠΌ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ (ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠΌΠ° Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΡΠΈΡΠ»Π° ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ
WebAssembly-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ).
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru