Կրիտիկական խոցելիություն 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-բիթանոց արդյունավետ հասցեներ WebAssembly-ում թույլատրված 33-բիթանոց հասցեների փոխարեն, ինչը տեղափոխել է կարդալու և գրելու գործողությունների համար թույլատրված վիրտուալ հիշողության սահմանը մինչև 34 ԳԲ, մինչդեռ ավազատուփի միջավայրի կարգավորումները ապահովում են պաշտպանություն. 6 ԳԲ բազային հասցեից: Արդյունքում, վիրտուալ հիշողության տիրույթը բազային հասցեից 6-ից 34 ԳԲ հասանելի էր WebAssembly հավելվածներից կարդալու և գրելու համար: Այս հիշողությունը կարող է հյուրընկալել այլ WebAssembly միջավայրեր կամ WebAssembly գործարկման ժամանակի բաղադրիչներ:

Եթե ​​հնարավոր չէ թարմացնել Wasmtime տարբերակը, սխալն արգելափակելու համար լուծում է «Config::static_memory_maximum_size(0)» տարբերակը՝ հնարավորություն տալու առանձին սահմանների ստուգում բոլոր գծային հիշողության հասանելիությունների վրա (որը հանգեցնում է կատարողականի զգալի տույժի): . Մեկ այլ տարբերակ է օգտագործել «Config::static_memory_guard_size(1 <36)» պարամետրը, որպեսզի ավելացնեք Պաշտպանական էջերի քանակը (բացառություն, որը բացառվում է, երբ մուտք եք գործում) տեղադրված խնդրահարույց վիրտուալ հիշողության տիրույթում (որը հանգեցնում է մեծ քանակությամբ վիրտուալ հիշողության պահպանման և պահպանման: սահմանափակելով միաժամանակ WebAssembly հավելվածների քանակը):

Source: opennet.ru

Добавить комментарий