Gwendid difrifol yn Wasmtime, amser rhedeg ar gyfer cymwysiadau WebCynulliad

Roedd y diweddariadau cywirol Wasmtime 6.0.1, 5.0.1 a 4.0.1 yn gosod y bregusrwydd (CVE-2023-26489), a neilltuwyd lefel critigol o berygl. Mae'r bregusrwydd yn caniatΓ‘u i ddata gael ei ysgrifennu i ardal cof y tu allan i'r ffiniau a ganiateir ar gyfer cod WebAssembly ynysig, y gallai ymosodwr o bosibl ei ddefnyddio i weithredu eu cod y tu allan i amgylchedd ynysig WASI.

Amser rhedeg yw Wasmtime ar gyfer rhedeg cymwysiadau WebAssembly gydag estyniadau WASI (Rhyngwyneb System WebAssembly) fel cymwysiadau annibynnol rheolaidd. Mae'r pecyn cymorth wedi'i ysgrifennu yn yr iaith Rust, ac mae'r bregusrwydd yn cael ei achosi gan gamgymeriad rhesymegol wrth ddiffinio rheolau cyfeirio cof llinol yn y generadur cod Cranelift, sy'n trosi cynrychiolaeth ganolraddol yn annibynnol ar bensaernΓ―aeth caledwedd yn god peiriant gweithredadwy ar gyfer pensaernΓ―aeth x86_64.

Yn benodol, ar gyfer cymwysiadau WebAssembly, cyfrifwyd cyfeiriadau effeithiol 35-did yn lle'r cyfeiriadau 33-did a ganiateir yn WebAssembly, a symudodd terfyn y cof rhithwir a ganiateir ar gyfer gweithrediadau darllen ac ysgrifennu i 34 GB, tra bod gosodiadau amgylchedd y blwch tywod yn darparu amddiffyniad ar gyfer 6 GB o'r cyfeiriad sylfaenol. O ganlyniad, roedd yr ystod cof rhithwir o 6 i 34 GB o'r cyfeiriad sylfaenol ar gael ar gyfer darllen ac ysgrifennu o gymwysiadau WebAssembly. Gall y cof hwn fod yn gartref i amgylcheddau WebAssembly eraill neu gydrannau amser rhedeg WebAssembly.

Os nad yw'n bosibl diweddaru'r fersiwn Wasmtime, ateb i rwystro'r gwall yw nodi'r opsiwn "Config:: static_memory_maximum_size(0)" i alluogi gwiriad ffiniau ar wahΓ’n ar bob mynediad cof llinol (gan arwain at gosb perfformiad sylweddol) . Opsiwn arall yw defnyddio'r gosodiad "Config::static_memory_guard_size(1 < 36)" i gynyddu nifer y Tudalennau Gwarchod (eithriad sy'n cael ei daflu pan gyrchir) sydd wedi'i osod yn yr ystod cof rhithwir problemus (gan arwain at gadw llawer iawn o gof rhithwir a cyfyngu ar y nifer sy'n rhedeg rhaglenni WebAssembly ar yr un pryd).

Ffynhonnell: opennet.ru

Ychwanegu sylw