Проект Rust выпустил обновление для своей стандартной библиотеки после того, как исследователь уязвимостей обнаружил, что конкретная функция, используемая для выполнения пакетных файлов в системах Windows, может быть использована с помощью уязвимости внедрения.
Набор общих функций, включенных в язык программирования Rust, известный как стандартная библиотека, предлагает возможность — среди многих других возможностей — выполнять пакетные файлы Windows через командный 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 для выполнения в виде пакетного процесса через программный интерфейс командных приложений (API), входящий в стандартную библиотеку. Обычно Rust гарантирует безопасность любого вызова командного API, но в данном случае проект Rust не смог найти способ предотвратить выполнение всех аргументов, в первую очередь потому, что Windows не придерживается каких-либо стандартов, и что API может позволить злоумышленнику отправить код, который затем будет выполнен.
«К сожалению, сообщалось, что наша логика экранирования была недостаточно тщательной, и можно было передавать вредоносные аргументы, которые могли привести к произвольному выполнению оболочки», — сообщает WG Rust Security Response WG.
Проект Rust оказался отзывчивым
Хотя устранение любой уязвимости может стать головной болью, проект Rust показал, что группа быстро решает проблемы, говорят эксперты. Уязвимость стандартной библиотеки, CVE-2024-24576, в конечном итоге является проблемой пакетной обработки Windows и влияет на другие языки программирования, если они не анализируют должным образом аргументы, отправленные в пакетный процесс Windows. По словам Мизрахи из JFrog, проект Rust, похоже, является первым проектом, в котором исправлена передача аргументов в процесс Windows CMD.exe.
Группы не смогли полностью устранить проблему, но командный API не будет возвращать ошибку, если какие-либо дополнения, передаваемые в функцию, могут быть небезопасными, сообщает Rust Project.
Мизрахи из JFrog призывает Rust расширить использование статического тестирования безопасности приложений, а также расширить использование фаззинга и динамического тестирования.
«В целом, Rust находится на правильном пути, уделяя особое внимание безопасности памяти и поощряя строгие методы тестирования», — говорит он. «Объединение этих усилий с постоянным развитием статического анализа и фаззинга может помочь сообществу Rust и более широкой индустрии программного обеспечения добиться значительных успехов в устранении логических ошибок и ошибок проверки ввода в ближайшие годы».
- SEO-контент и PR-распределение. Получите усиление сегодня.
- PlatoData.Network Вертикальный генеративный ИИ. Расширьте возможности себя. Доступ здесь.
- ПлатонАйСтрим. Интеллект Web3. Расширение знаний. Доступ здесь.
- ПлатонЭСГ. Углерод, чистые технологии, Энергия, Окружающая среда, Солнечная, Управление отходами. Доступ здесь.
- ПлатонЗдоровье. Биотехнологии и клинические исследования. Доступ здесь.
- Источник: 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
- призывают
- CAN
- возможности
- случаев
- случаев
- класс
- Закрыть
- код
- Обзор кода
- комбинируя
- как
- команду
- Общий
- сообщество
- полностью
- продолжающийся
- может
- критической
- занимавшийся
- определенно
- Застройщик
- застройщиков
- DID
- директор
- открытый
- do
- приносит
- Двери
- Падение
- динамический
- легко
- экосистема
- усилия
- ликвидировать
- подчеркивающий
- призывает
- поощрение
- достаточно
- обеспечивать
- ошибка
- выполнять
- выполненный
- выполнение
- Расширьте
- эксперты
- Эксплуатировать
- Эксплуатируемый
- достаточно
- Особенности
- Файл
- Файлы
- Найдите
- Фирма
- Во-первых,
- фиксированный
- фиксированной
- недостаток
- недостатки
- Что касается
- вперед
- найденный
- Год основания
- функция
- Функции
- получила
- группы
- Группы
- гарантии
- he
- помощь
- кашель
- Однако
- HTML
- HTTPS
- определения
- if
- в XNUMX году
- in
- инцидент
- включены
- промышленность
- вход
- затраты
- Интерфейс
- в
- вопрос
- Выпущен
- вопросы
- IT
- ЕГО
- Джоэл
- JPG
- известный
- язык
- Языки
- последний
- Оставлять
- Библиотека
- логика
- логический
- машина
- сделать
- злонамеренный
- многих
- Память
- Microsoft
- смягчать
- самых
- должен
- обязательно
- примечательный
- of
- Предложения
- on
- открытый
- Другое
- наши
- внешний
- за
- общий
- часть
- pass
- Прошло
- Прохождение
- Патчи
- ОПЛАТИТЬ
- Платон
- Платон Интеллектуальные данные
- ПлатонДанные
- представляет
- возможность
- возможное
- потенциал
- практиками
- предотвращать
- в первую очередь
- Проблема
- процесс
- обработка
- Программирование
- языки программирования
- Проект
- доказательство
- доказывает
- приводит
- опубликованный
- быстро
- причины
- регулярно
- надежность
- Сообщается
- репутация
- исследователь
- сборник законов
- ответ
- отзывчивый
- результат
- возвращают
- обзоре
- правую
- тщательный
- Run
- Бег
- Ржавчина
- s
- Сохранность
- Сказал
- сообщили
- говорит
- безопасный
- безопасность
- Отправить
- старший
- послать
- набор
- Оболочка
- сдвиг
- сдвинутых
- показанный
- значительный
- So
- Software
- конкретный
- стандарт
- статический
- успехи
- отправить
- предоставление
- такие
- Поддержка
- система
- системы
- взять
- Технологии
- Тестирование
- который
- Ассоциация
- их
- тогда
- Там.
- Эти
- они
- этой
- тщательный
- те
- угроза
- Через
- в
- инструменты
- трек
- типично
- В конечном счете
- нижнее подчеркивание
- К сожалению
- до
- Обновление ПО
- призывы
- использование
- прецедент
- используемый
- через
- Проверка
- очень
- Уязвимости
- уязвимость
- законопроект
- Путь..
- ЧТО Ж
- когда
- который
- в то время как
- будете
- окна
- работает
- Рабочая группа
- бы
- лет
- Ты
- ВАШЕ
- зефирнет