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

ΠšΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Ρ‰ΠΈΡ‚Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Wasmtime 6.0.1, 5.0.1 ΠΈ 4.0.1 ΠΏΠΎΠΏΡ€Π°Π²ΠΈΡ…Π° уязвимостта (CVE-2023-26489), Π½Π° която бСшС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎ Π½ΠΈΠ²ΠΎ Π½Π° опасност. Уязвимостта позволява Π΄Π° сС записват Π΄Π°Π½Π½ΠΈ Π² област Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° извън Π³Ρ€Π°Π½ΠΈΡ†ΠΈΡ‚Π΅, Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈ Π·Π° ΠΈΠ·ΠΎΠ»ΠΈΡ€Π°Π½ WebAssembly ΠΊΠΎΠ΄, ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»Π½ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ ΠΎΡ‚ Π½Π°ΠΏΠ°Π΄Π°Ρ‚Π΅Π», Π·Π° Π΄Π° изпълни своя ΠΊΠΎΠ΄ извън ΠΈΠ·ΠΎΠ»ΠΈΡ€Π°Π½Π°Ρ‚Π° WASI срСда.

Wasmtime Π΅ срСда Π·Π° изпълнСниС Π·Π° стартиранС Π½Π° WebAssembly прилоТСния с Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡ WASI (WebAssembly System Interface) ΠΊΠ°Ρ‚ΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈ самостоятСлни прилоТСния. Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΡƒΠΌΡŠΡ‚ Π΅ написан Π½Π° Π΅Π·ΠΈΠΊΠ° Rust ΠΈ уязвимостта Π΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅Π½Π° ΠΎΡ‚ логичСска Π³Ρ€Π΅ΡˆΠΊΠ° ΠΏΡ€ΠΈ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»Π° Π·Π° Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ адрСсиранС Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° Π² Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π½Π° ΠΊΠΎΠ΄ Cranelift, ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΡ€Π΅Π²Π΅ΠΆΠ΄Π° ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΎ прСдставянС, нСзависимо ΠΎΡ‚ Ρ…Π°Ρ€Π΄ΡƒΠ΅Ρ€Π½ΠΈΡ‚Π΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈ, Π² изпълним машинСн ΠΊΠΎΠ΄ Π·Π° x86_64 Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π°.

По-спСциално, Π·Π° прилоТСнията Π½Π° WebAssembly бяха изчислСни 35-Π±ΠΈΡ‚ΠΎΠ²ΠΈ Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΈ адрСси вмСсто 33-Π±ΠΈΡ‚ΠΎΠ²ΠΈΡ‚Π΅ адрСси, Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈ Π² WebAssembly, ΠΊΠΎΠ΅Ρ‚ΠΎ измСсти Π»ΠΈΠΌΠΈΡ‚Π° Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π°Ρ‚Π° ΠΏΠ°ΠΌΠ΅Ρ‚, Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Π° Π·Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π·Π° Ρ‡Π΅Ρ‚Π΅Π½Π΅ ΠΈ запис, Π΄ΠΎ 34 GB, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ настройкитС Π½Π° срСдата Π½Π° ΠΏΡΡΡŠΡ‡Π½ΠΈΠΊΠ° осигуряват Π·Π°Ρ‰ΠΈΡ‚Π° Π·Π° 6 GB ΠΎΡ‚ основния адрСс. Π’ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° Ρ‚ΠΎΠ²Π° ΠΎΠ±Ρ…Π²Π°Ρ‚ΡŠΡ‚ Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π°Ρ‚Π° ΠΏΠ°ΠΌΠ΅Ρ‚ ΠΎΡ‚ 6 Π΄ΠΎ 34 GB ΠΎΡ‚ основния адрСс бСшС Π΄ΠΎΡΡ‚ΡŠΠΏΠ΅Π½ Π·Π° Ρ‡Π΅Ρ‚Π΅Π½Π΅ ΠΈ запис ΠΎΡ‚ прилоТСния Π½Π° WebAssembly. Π’Π°Π·ΠΈ ΠΏΠ°ΠΌΠ΅Ρ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° хоства Π΄Ρ€ΡƒΠ³ΠΈ срСди Π½Π° WebAssembly ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ Π·Π° изпълнСниС Π½Π° WebAssembly.

Ако Π½Π΅ Π΅ възмоТно Π΄Π° Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ вСрсията Π½Π° Wasmtime, Π·Π°ΠΎΠ±ΠΈΠΊΠΎΠ»Π½ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π·Π° Π±Π»ΠΎΠΊΠΈΡ€Π°Π½Π΅ Π½Π° Π³Ρ€Π΅ΡˆΠΊΠ°Ρ‚Π° Π΅ Π΄Π° посочитС опцията β€žConfig::static_memory_maximum_size(0)β€œ, Π·Π° Π΄Π° Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ‚Π΅ ΠΎΡ‚Π΄Π΅Π»Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Π³Ρ€Π°Π½ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° всички Π»ΠΈΠ½Π΅ΠΉΠ½ΠΈ Π΄ΠΎΡΡ‚ΡŠΠΏΠΈ Π΄ΠΎ ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° (ΠΊΠΎΠ΅Ρ‚ΠΎ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΡƒΠ²Ρ€Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° производитСлността) . Π”Ρ€ΡƒΠ³Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ настройката β€žConfig::static_memory_guard_size(1 < 36)β€œ, Π·Π° Π΄Π° ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚Π΅ броя Π½Π° Π·Π°Ρ‰ΠΈΡ‚Π½ΠΈΡ‚Π΅ страници (ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, Ρ…Π²ΡŠΡ€Π»Π΅Π½ΠΎ ΠΏΡ€ΠΈ Π΄ΠΎΡΡ‚ΡŠΠΏ), поставСни Π² проблСмния Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚ (ΠΊΠΎΠ΅Ρ‚ΠΎ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π½Π° голямо количСство Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚ ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π°Π²Π°Π½Π΅ Π½Π° броя Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ΠΈ WebAssembly прилоТСния).

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€