Критическая уязвимость Rust представляет угрозу эксплойта в определенных случаях использования Windows

Критическая уязвимость Rust представляет угрозу эксплойта в определенных случаях использования Windows

Критический недостаток Rust представляет угрозу эксплойта в конкретных случаях использования Windows. Анализ данных PlatoBlockchain. Вертикальный поиск. Ай.

Проект 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 и более широкой индустрии программного обеспечения добиться значительных успехов в устранении логических ошибок и ошибок проверки ввода в ближайшие годы».

Отметка времени:

Больше от Темное чтение