Критичний дефект Rust представляє загрозу експлойту в конкретних випадках використання Windows

Критичний дефект Rust представляє загрозу експлойту в конкретних випадках використання Windows

Критичний дефект Rust представляє загрозу експлойту в конкретних випадках використання Windows PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Проект Rust випустив оновлення для своєї стандартної бібліотеки після того, як дослідник уразливості виявив, що спеціальна функція, яка використовується для виконання пакетних файлів у системах Windows, може бути використана за допомогою ін’єкції.

Набір загальних функцій, які входять до складу мови програмування Rust, відомий як стандартна бібліотека, пропонує можливість — серед багатьох інших можливостей — виконувати пакетні файли Windows через Command API. Однак функція не обробляла вхідні дані в API достатньо ретельно, щоб усунути можливість впровадження коду у виконання, відповідно до консультація робочої групи з питань безпеки Rust опубліковано 9 квітня.

Незважаючи на те, що Rust добре відомий своїми функціями безпеки пам’яті, інцидент підкреслює, що мова програмування не є доказом проти логічних помилок, каже Яїр Мізрахі, старший дослідник уразливостей у фірмі JFrog із захисту програм.

«Загалом безпека пам’яті Rust є помітною перевагою, але розробники також повинні звернути пильну увагу на потенційні логічні помилки, щоб забезпечити загальну безпеку та надійність своїх додатків на основі Rust», — каже він. «Щоб вирішити такі логічні проблеми, Rust заохочує процес ретельного тестування та перегляду коду, а також використання інструментів статичного аналізу для виявлення та пом’якшення логічних помилок».

Rust здобув репутацію дуже безпечної мови програмування, оскільки не залишає програми відкритими для часто серйозного класу недоліків, відомих як уразливості безпеки пам’яті. Google приписав падіння небезпечного для пам'яті коду до переходу на безпечні для пам’яті мови, такі як Rust і Kotlin, тоді як Microsoft виявила, що до 2018 року, коли вона перейшла на безпечну для пам’яті мови, такі вразливості регулярно становили 70% усіх проблем безпеки.

Windows створює купу проблем

Останньою проблемою є не вразливість безпеки пам’яті, а проблема з логікою, яка використовується для обробки ненадійного введення. Частина стандартної бібліотеки Rust дозволяє розробнику викликати функцію для надсилання пакетного файлу на машину Windows для обробки. Існують причини надсилати код на хост як пакетний файл, каже Джоел Марсі, директор із технологій Rust Foundation, який підтримує розробників мови програмування та екосистему Rust.

«Пакетні файли запускаються в системах з багатьох причин, і Rust надає API, який дозволяє виконувати їх досить легко», — каже він. «Тож, хоча це не обов’язково найпоширеніший випадок використання Rust, API, до того як було реалізовано фіксований патч, дозволяв зловмисникам теоретично захоплювати вашу систему, запускаючи довільні команди, і це, безперечно, критична вразливість».

Як правило, розробник може перенаправляти робоче навантаження на хост Windows для виконання як пакетний процес через програмний інтерфейс додатків Command (API), який є частиною стандартної бібліотеки. Як правило, Rust гарантує безпеку будь-якого виклику Command API, але в цьому випадку Rust Project не зміг знайти спосіб запобігти виконанню всіх аргументів, насамперед через те, що Windows не дотримується жодного стандарту та що API може дозволити зловмиснику відправити код, який потім буде виконано.

«На жаль, було повідомлено, що наша логіка виходу була недостатньо ретельною, і можна було передати зловмисні аргументи, які призвели б до довільного виконання оболонки», — повідомляє робоча група Rust Security Response.

Проект Rust виявився чуйним

Хоча робота з будь-якою вразливістю може бути головним болем, Rust Project показав, що група швидко вирішує проблеми, кажуть експерти. Уразливість стандартної бібліотеки, CVE-2024-24576, зрештою, це проблема з пакетною обробкою Windows і впливає на інші мови програмування, якщо вони не аналізують належним чином аргументи, надіслані до пакетної обробки Windows. Схоже, що Rust Project є першим із існуючих із виправленням для передачі аргументів у процес Windows CMD.exe, каже Мізрахі з JFrog.

Групи не змогли повністю усунути проблему, але Command API не поверне помилку, якщо будь-які доповнення, передані функції, можуть бути небезпечними, повідомили в Rust Project. 

Мізрахі з JFrog закликає Rust розширити використання статичного тестування безпеки додатків і розширити використання фаззингу та динамічного тестування.

«Загалом Rust на правильному шляху, наголошуючи на безпеці пам’яті та заохочуючи суворі методи тестування», — каже він. «Поєднання цих зусиль із постійним прогресом у статичному аналізі та фаззингу може допомогти спільноті Rust і ширшій індустрії програмного забезпечення досягти значних успіхів у виправленні логічних помилок і недоліків перевірки вхідних даних у найближчі роки».

Часова мітка:

Більше від Темне читання