Mozilla RLBox китепканасын изоляциялоо технологиясын ишке ашыра баштады

Стэнфорд университетинин, Сан-Диегодогу Калифорния университетинин жана Остиндеги Техас университетинин изилдөөчүлөрү иштелип чыккан аспаптар RLBox, ал функция китепканаларындагы аялуу жерлерди бөгөттөө үчүн кошумча изоляция катмары катары колдонулушу мүмкүн. RLBox иштеп чыгуучулардын көзөмөлүндө болбогон, бирок алсыздыктары негизги долбоорду бузушу мүмкүн болгон ишенимсиз үчүнчү тараптын китепканаларынын коопсуздук маселесин чечүүгө багытталган.

Mozilla компаниясы пландар китепкананын аткарылышын изоляциялоо үчүн Firefox 74тин Linux түзүмдөрүндө жана Firefox 75тин macOS түзүмдөрүндө RLBox колдонуңуз чалалга, шрифттерди көрсөтүү үчүн жооптуу. Бирок, RLBox Firefox үчүн өзгөчө эмес жана ыктыярдуу долбоорлордо ар кандай китепканаларды изоляциялоо үчүн колдонулушу мүмкүн. Иштеп чыгуулар RLBox жайылуу MIT лицензиясы боюнча. Учурда RLBox Linux жана macOS платформаларын колдойт, Windows колдоосу кийинчерээк күтүлүүдө.

механизм RLBoxтун иши обочолонгон китепкананын C/C++ кодун төмөнкү деңгээлдеги ортоңку WebAssembly кодуна компиляциялоодон келип чыгат, кийин ал WebAssembly модулу катары иштелип чыгат, анын уруксаттары ушул модулга гана (мисалы, китепкана) карата коюлат. саптарды иштетүү үчүн тармак розеткасын же файлды ача албайт) . C/C++ кодун WebAssemblyге айландыруу аркылуу ишке ашырылат wasi-sdk.

Түздөн-түз аткаруу үчүн, WebAssembly модулу компилятордун жардамы менен машина кодуна түзүлөт Lucet жана колдонмонун эс тутумунун калган бөлүгүнөн обочолонгон өзүнчө “нанопроцессте” иштейт. Lucet компилятору JIT кыймылдаткычы сыяктуу эле кодго негизделген Cralift, Firefoxто WebAssemblyди аткаруу үчүн колдонулат.

Чогулган модул өзүнчө эс тутум аймагында иштейт жана дарек мейкиндигинин калган бөлүгүнө кирүү мүмкүнчүлүгү жок. Эгерде китепкананын кемчилиги пайдаланылса, чабуулчу чектелген жана негизги процесстин эстутум аймактарына кире албайт же обочолонгон чөйрөдөн тышкары башкарууну өткөрүп бере албайт.

Mozilla RLBox китепканасын изоляциялоо технологиясын ишке ашыра баштады

Иштеп чыгуучулар үчүн жогорку деңгээлдеги маалымат берилет API, бул китепкана функцияларын изоляция режиминде чакырууга мүмкүндүк берет. WebAssembly иштеткичтери дээрлик эч кандай кошумча ресурстарды талап кылбайт жана алар менен өз ара аракеттенүү кадимки функцияларды чакыргандан бир топ жайыраак болбойт (китепкананын функциялары жергиликтүү код түрүндө аткарылат, ал эми кошумча чыгымдар обочолонгон чөйрө менен өз ара аракеттенүү учурунда маалыматтарды көчүрүү жана текшерүүдө гана пайда болот). Бөлүнгөн китепкана функцияларын түздөн-түз чакырууга болбойт жана аларды колдонуу менен жетүү керек
layer invoke_sandbox_function().

Өз кезегинде, эгерде китепканадан тышкы функцияларды чакыруу зарыл болсо, бул функциялар register_callback ыкмасы менен ачык-айкын аныкталышы керек (демейки боюнча, RLBox функцияларга мүмкүнчүлүк берет. стандарттуу китепкана). Эстутум коопсуздугун камсыз кылуу үчүн коддун аткарылышын обочолонтуу жетишсиз жана кайтарылган маалымат агымдарын текшерүүнү талап кылат.

Бөлүнгөн чөйрөдө түзүлгөн баалуулуктар ишенимсиз жана чектелген колдонуу катары белгиленет булганган белгилер жана "тазалоо" үчүн алар талап кылат текшерүү жана колдонмонун эс тутумуна көчүрүү.
Тазалоосуз, бузулган маалыматтарды үзгүлтүксүз берилиштерди талап кылган контекстте колдонуу аракети (жана тескерисинче) компиляция учурунда каталардын пайда болушуна алып келет. Кичинекей функция аргументтери, кайтаруу маанилери жана структуралар процесс эстутуму менен кумдук эс тутумдун ортосунда көчүрүү аркылуу өтөт. Чоң маалымат топтомдору үчүн эс обочолонгон чөйрөдө бөлүштүрүлөт жана түз құмсалгыч-маалымат көрсөткүчү негизги процесске кайтарылат.

Source: opennet.ru

Комментарий кошуу