በ Wasmtime ውስጥ ወሳኝ ተጋላጭነት፣ ለድር ስብሰባ አፕሊኬሽኖች የሩጫ ጊዜ

Wasmtime 6.0.1፣ 5.0.1 እና 4.0.1 የማስተካከያ ዝማኔዎች ተጋላጭነትን (CVE-2023-26489) ያስተካክላሉ፣ እሱም ወሳኝ ደረጃ የተሰጠው። ተጋላጭነቱ ለገለልተኛ WebAssembly ኮድ ከሚፈቀደው ወሰን ውጭ ወደሚገኝ ማህደረ ትውስታ አካባቢ መረጃን ለመፃፍ ያስችላል፣ይህም አጥቂ ከተገለለ የWASI አካባቢ ውጭ የኮዳቸውን አፈጻጸም ለማደራጀት ሊጠቀምበት ይችላል።

Wasmtime የWebAssembly አፕሊኬሽኖችን በWASI (WebAssembly System Interface) ማራዘሚያዎች እንደ መደበኛ ራሱን የቻለ አፕሊኬሽኖች ለማሄድ የሩጫ ጊዜ ነው። የመሳሪያ ኪቱ የተፃፈው በዝገት ሲሆን ተጋላጭነቱ የተፈጠረው በ Cranelift code ጄኔሬተር ውስጥ የመስመራዊ ማህደረ ትውስታ አወጣጥ ህጎችን ትርጉም ላይ ባለው ምክንያታዊ ስህተት ነው ፣ይህም ከሃርድዌር አርክቴክቸር ነፃ የሆነ መካከለኛ ውክልና ለ x86_64 አርክቴክቸር ወደሚችል ማሽን ኮድ ይተረጎማል።

በተለይም 35-ቢት ውጤታማ አድራሻዎች በ WebAssembly ውስጥ ከሚፈቀዱ 33-ቢት አድራሻዎች ይልቅ ለWebAssembly አፕሊኬሽኖች ይሰላሉ፣ ይህ ደግሞ ለማንበብ እና ለመፃፍ የሚፈቀደውን የቨርቹዋል ማህደረ ትውስታ ገደብ ወደ 34 ጂቢ በማሸጋገር የአሸዋ ሳጥን አካባቢ ቅንጅቶች ለ6 ጂቢ ጥበቃ ይሰጣሉ። ከመሠረታዊ አድራሻ. በውጤቱም, ከመሠረታዊ አድራሻው ከ 6 እስከ 34 ጂቢ ያለው የቨርቹዋል ማህደረ ትውስታ መጠን ከ WebAssembly አፕሊኬሽኖች ለማንበብ እና ለመጻፍ ተገኝቷል. ይህ ማህደረ ትውስታ ሌሎች የWebAssembly አካባቢዎችን ወይም WebAssembly የአሂድ ጊዜ ክፍሎችን ማስተናገድ ይችላል።

የWasmtime ሥሪቱን ማዘመን ካልተቻለ በማንኛውም የመስመራዊ ማህደረ ትውስታ ተደራሽነት ላይ የግዴታ የተለየ ወሰን መፈተሽ ለማስቻል የ"Config :: static_memory_maximum_size(0)" የሚለውን አማራጭ በመግለጽ ስህተቱን ለመግታት እንደ መፍትሄ ተጠቅሷል (በከፍተኛ የአፈጻጸም ውድቀት ላይ ያሉ ውጤቶች)። ሌላው አማራጭ ደግሞ "Config :: static_memory_guard_size(1 <36)" የሚለውን ቅንብር መጠቀም ነው የጥበቃ ገፆችን ቁጥር ለመጨመር (የጠባቂ ገጽ፣ ሲደረስ ልዩነቱ ይጣላል) ችግር ባለው የቨርቹዋል ማህደረ ትውስታ ክልል ውስጥ የሚገኝ (ትልቅ መጠን ወደመያዝ ይመራል) የቨርቹዋል ማህደረ ትውስታ እና ቁጥሩን በተመሳሳይ የ WebAssembly መተግበሪያዎች መገደብ)።

ምንጭ: opennet.ru

አስተያየት ያክሉ