Уязвимость затрагивает тысячи организаций, использующих данный язык в своём ПО.
В языке программирования R обнаружена критическая уязвимость, которая может подвергнуть организации, использующие этот популярный открытый язык, атакам через цепочку поставок программного обеспечения.
Уязвимость, получившая обозначение CVE-2024-27322, оценена в 8.8 балла из 10 по шкале CVSS. Проблема связана с процессом десериализации данных в R, то есть с преобразованием объектов, закодированных в форматах, таких как JSON, XML и binary, обратно в их исходную форму для использования в приложении или программе.
Язык R широко используется для статистических вычислений и создания графиков, особенно он популярен среди разработчиков в сферах финансовых услуг, здравоохранения, научных исследований, государственного управления и в средах, связанных с большими наборами данных, такими как искусственный интеллект и машинное обучение.
Исследователи из HiddenLayer обнаружили слабость в процессе десериализации R, которая позволяет злоумышленникам выполнять произвольный код в среде жертвы с помощью специально созданного RDS-файла. Такие файлы часто используются для хранения объектов на R для дальнейшего использования или обмена.
Уязвимость связана с такими концепциями в R, как «ленивые вычисления» и «объекты обещания». Ленивые вычисления (Lazy Evaluation) — это техника программирования, при которой программа не вычисляет выражение или переменную до тех пор, пока это действительно не потребуется. Объекты обещания (Promise Objects) тесно связаны с ленивым вычислением и представляют собой объекты, оценка которых отложена.
Злоумышленники могут эксплуатировать данные концепции, создавая файл RDS, содержащий специально подготовленный объект обещания со встроенным произвольным кодом, который будет выполнен, когда пользователь загрузит заражённый файл или пакет.
Уязвимость потенциально может затронуть тысячи пользователей в результате возможной масштабной атаки на цепочку поставок открытого программного обеспечения для пакетов R, особенно учитывая, что некоторые хабы, такие как R-Forget или Bioconductor, используются регулярно многими разработчиками.
После того как HiddenLayer сообщила о проблеме разработчикам R, она была исправлена в версии R 4.4.0. Эксперты рекомендуют всем организациям, использующим R в разработке ПО, перейти на последнюю версию языка для снижения любых потенциальных рисков.
Живой, мертвый или в суперпозиции? Узнайте в нашем канале