ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π½Π° уязвимост Π² Wasmtime, runtime Π·Π° прилоТСния Π½Π° WebAssembly

Π’ ΠΊΠΎΡ€Π΅ΠΊΡ†ΠΈΠΎΠ½Π½ΠΈΡ‚Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° 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

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster