Проект 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 і ширшій індустрії програмного забезпечення досягти значних успіхів у виправленні логічних помилок і недоліків перевірки вхідних даних у найближчі роки».
- Розповсюдження контенту та PR на основі SEO. Отримайте посилення сьогодні.
- PlatoData.Network Vertical Generative Ai. Додайте собі сили. Доступ тут.
- PlatoAiStream. Web3 Intelligence. Розширення знань. Доступ тут.
- ПлатонЕСГ. вуглець, CleanTech, Енергія, Навколишнє середовище, Сонячна, Поводження з відходами. Доступ тут.
- PlatoHealth. Розвідка про біотехнології та клінічні випробування. Доступ тут.
- джерело: https://www.darkreading.com/application-security/critical-rust-flaw-poses-exploit-threat-in-specific-windows-use-cases
- : має
- :є
- : ні
- $UP
- 2018
- 7
- 9
- a
- здатність
- За
- актори
- адреса
- адресація
- адекватно
- дотримуватися
- досягнення
- Перевага
- після
- проти
- ВСІ
- дозволяти
- дозволено
- дозволяє
- Також
- серед
- an
- аналіз
- та
- будь-який
- API
- з'являється
- додаток
- захист додатків
- застосування
- квітня
- довільний
- ЕСТЬ
- аргументація
- AS
- At
- нападаючий
- увагу
- збільшує
- BE
- оскільки
- перед тим
- буття
- розширити
- ширше
- помилки
- але
- by
- call
- CAN
- можливості
- випадок
- випадків
- клас
- близько
- код
- Перегляд коду
- об'єднання
- Приходити
- команда
- загальний
- співтовариство
- повністю
- триває
- може
- критичний
- справу
- безумовно
- Розробник
- розробників
- DID
- Директор
- відкритий
- do
- робить
- Двері
- Падіння
- динамічний
- легко
- екосистема
- зусилля
- усунутий
- підкреслюючи
- заохочує
- заохочення
- досить
- забезпечувати
- помилка
- виконувати
- виконано
- виконання
- Розширювати
- experts
- Експлуатувати
- експлуатований
- достатньо
- риси
- філе
- Файли
- знайти
- Фірма
- Перший
- виправляти
- фіксованою
- недолік
- недоліки
- для
- Вперед
- знайдений
- фонд
- функція
- Функції
- отримала
- Group
- Групи
- гарантії
- he
- допомога
- господар
- Однак
- HTML
- HTTPS
- ідентифікувати
- if
- реалізовані
- in
- інцидент
- включені
- промисловість
- вхід
- витрати
- інтерфейс
- в
- питання
- Випущений
- питання
- IT
- ЙОГО
- Джоел
- JPG
- відомий
- мова
- мови
- останній
- Залишати
- бібліотека
- логіка
- логічний
- машина
- зробити
- malicious
- багато
- пам'ять
- Microsoft
- Пом'якшити
- найбільш
- повинен
- обов'язково
- Помітний
- of
- Пропозиції
- on
- відкрити
- Інше
- наші
- з
- над
- загальний
- частина
- проходити
- Пройшов
- Проходження
- пластир
- Платити
- plato
- Інформація про дані Платона
- PlatoData
- позах
- можливість
- це можливо
- потенціал
- практики
- запобігати
- в першу чергу
- Проблема
- процес
- обробка
- Програмування
- мови програмування
- проект
- доказ
- доводить
- забезпечує
- опублікований
- швидко
- Причини
- регулярно
- надійність
- Повідомляється
- репутація
- дослідник
- вирішує
- відповідь
- реагувати
- результат
- повертати
- огляд
- право
- суворий
- прогін
- біг
- Іржа
- s
- Безпека
- Зазначений
- say
- говорить
- безпечний
- безпеку
- послати
- старший
- посланий
- комплект
- Склад
- зсув
- зміщений
- показаний
- значний
- So
- Софтвер
- конкретний
- standard
- статичний
- успіхів
- представляти
- подання
- такі
- Опори
- система
- Systems
- Приймати
- Технологія
- Тестування
- Що
- Команда
- їх
- потім
- Там.
- Ці
- вони
- це
- ретельний
- ті
- загроза
- через
- до
- інструменти
- трек
- типово
- Зрештою
- нижнє підкреслення
- на жаль
- до
- Оновити
- позиви
- використання
- використання випадку
- використовуваний
- використання
- перевірка достовірності
- дуже
- Уразливості
- вразливість
- було
- шлях..
- ДОБРЕ
- коли
- який
- в той час як
- волі
- windows
- з
- робочий
- Робоча група
- б
- років
- Ти
- вашу
- зефірнет