Любим на хакерите език е опасно уязвим
Уязвимост визира общоприетите библиотеки на някои езици за програмиране
(снимка: CC0 Public Domain)
Откриха зейнала дупка в сигурността на обичания език за програмиране на хакерите – Rust. Критичната накърнимост разрешава на атакуващите да изпълнят случаен код, когато стратегия, написана на Rust, извършва скрипт на Windows, в случай че причините са предадени без отбягване на специфични знаци.
Всъщност, сериозната накърнимост е открита в общоприетите библиотеки на редица известни езици за програмиране, в това число Rust, и заплашва компютри под ръководство на операционна система Windows, заяви Bleeping Computer.
В случая с Rust, уязвимостта, наречена BatBadBut, е разпозната като CVE-2024-24576, а GitHub ѝ е присвоил сериозно равнище на заплаха – 10 от 10 точки по скалата на CVSS. Проблемът е открит от откривател по сигурността с псевдоним RyotaK от японската компания Flatt Security.
Пропуск в общоприетата библиотека разрешава, при избрани условия, на атакуващия да инжектира команда за осъществяване на личен код на машина с уязвимо приложение, без взаимоотношение с потребителя, в това число отдалечено. Това може да бъде или потребителска стратегия, или бекенд уеб-приложение, работещо от страната на сървъра.
Както показва RyotaK, множеството съществуващи приложения не са наранени от тази накърнимост, защото за сполучлива офанзива би трябвало да бъдат изпълнени редица характерни условия. За нападателя е значимо програмният код да съдържа извикване на някаква команда на операционната система с дефинирани от потребителя причини – за предпочитане Windows скрипт с уголемение bat или cmd. В противоположен случай заплахата да станете жертва на тази накърнимост е съвсем нулева.
Корените на казуса
Предпоставка за уязвимостта е неочевидното държание на систематична функционалност на Windows, наречена CreateProcess, която се употребява за основаване на нов развой въз основа на стратегия, съхранявана на диска. Тази функционалност употребява интерпретатора на команди на Windows за осъществяване на пакетни (bat или cmd) файлове, защото операционната система на Microsoft не може да извършва по различен метод такива скриптове.
Само по себе си това държание на функционалността не съставлява проблем, само че общоприетите библиотеки на доста езици за програмиране постоянно съдържат “обвиваща ” функционалност над CreateProcess с вграден механизъм за екраниране на специфични знаци, който се ползва всякога, когато се извършва функционалността.
Стандартната библиотека на Rust е показана от функционалностите Command::arg и Command::args, които съгласно документите са предопределени да предават причини на развой, без да бъдат обработвани от командния тълковник. Предполага се, че в този случай е безвредно да се валидира прелюдия от потребителя мотив.
В Windows внедряването на подобен механизъм е по-сложно, в сравнение с в тази ситуация с други софтуерни платформи, защото операционната система Microsoft, когато основава нов развой благодарение на CreateProcess, предава всички съпътстващи причини към него един до друг – това значи, че задачата за неговото накъсване на съставни съставни елементи пада върху плещите на този развой.
Повечето стратегии за тези цели употребяват метод, сходен на този, постановен в езиковия стандарт C – всички причини при пускане на приложение се слагат в argv масив, всеки детайл от който съдържа мотив от командния ред, излъчен на процеса от операционната система.
В изпълнимия файл cmd, който е нужен за осъществяване на пакетни файлове, се употребява специфична логичност за делене на реда от причини, заради което разработчиците на общоприети библиотеки са принудени да ползват специфични манипулатори за екраниране, излъчени от bat и cmd файлове, за отбрана против заменяне на причини. Именно тези логаритми в тази ситуация на Rust се оказаха несъвършени и до актуализация 1.77.2 можеха да пропущат някои специфични знаци – по време на избрани операции с двойни кавички – и по този метод да разрешат осъществяването на случаен код.
Кои други езици са изложени на риск?
В допълнение към Rust, казусът се следи в общоприетите библиотеки на Erlang, Go, Java, Python,Ruby, Haskell, Node.js и PHP. Разработчиците на последните три езика са подготвили пачове, които усъвършенстват механизма за екраниране, с цел да се предпазят от заменяне на причини.
Други планове, като се изключи Java, са допълнили документите с информация за следствията от неналичието на екраниране на специфични знаци. Разработчиците на Java не възнамеряват да поправят уязвимостта, защото евентуално по дифолт разпореждат отговорността за екранирането на програмистите.
Любимият език на хакерите
По-рано американските управляващи приканиха разработчиците на програмен продукт да спрат да употребяват рискови C и C++ езици допустимо най-скоро. Python се предлага като опция, както и Rust, който е доста известен измежду хакерите.
Rust постоянно е пожеланият инструмент за създателите на злоумишлен програмен продукт и в последно време езикът набира от ден на ден почитатели измежду легалните разработчици на програмен продукт с друга степен на умения. Това се потвърждава от резултатите от изследване, извършено от общността на Rust Foundation.
Но в класацията на известността на езиците за програмиране на TIOBE в края на януари 2024 година Rust заема едвам 19-то място след Python, C, C++, Java, C#, JavaScript, PHP и даже Fortran.
Източник: technews.bg
КОМЕНТАРИ




