В основной реализации языка программирования R, ориентированного на решение задач по статистической обработке, анализу и визуализации данных, выявлена критическая уязвимость (CVE-2024-27322), приводящая к выполнению кода при выполнении десериализации непроверенных данных. Уязвимость может быть эксплуатирована при обработке специально оформленных файлов в форматах RDS (R Data Serialization) и RDX, применяемых для обмена данными между приложениями. Проблема устранена в выпуске R 4.4.0. Проследить за выпуском обновлений пакетов в дистрибутивах можно на страницах Debian, Ubuntu, RHEL, SUSE/openSUSE, Fedora, Arch, FreeBSD...Подробнее: https://www.opennet.me/opennews/art.shtml?num=61093
Кому интересно - могут почитать ещё https://codeberg.org/KFmts/kaitai_struct_formats/src/branch/...
Ну R очень специфический язык, используется для научных разработок. И кому нужно использовать такие CVE?
Доступ к вычислительным кластерам может быть интересен СГА, например, с целью саботировать очередные центрифуги. Говорю же, всё не случайно в серьёзных внедрениях.
> Доступ к вычислительным кластерам может быть интересен СГА, например, с целью саботировать
> очередные центрифуги. Говорю же, всё не случайно в серьёзных внедрениях.Зачем R вперся в центрифугах? Хотя сторонники куклускланов и прочих теорий заговора они такие, везде следы ящериц найдут, сразу после того как масонов ругать перестанут.
Центрифугам вряд ли необходим, а вот организациями, производящими расчёты и строительство, очень даже может применяться. И какие теории, если это общепризнанный факт и не секрет?
> Центрифугам вряд ли необходим, а вот организациями, производящими расчёты и строительство,
> очень даже может применяться. И какие теории, если это общепризнанный факт и не секрет?Фэйл этого плана в том что все это врядли к центрифугам подключено будет, и изначально заявляемая цель немножечко недостижима :)
Так центрифуги тоже не были подключены, почитай на досуге. Поправить расчёты может быть интересней чем майнить крипту.
> Так центрифуги тоже не были подключены, почитай на досуге.Так я тоже читал. И ума не приложу - как R с этим всем может пересечься, чтобы оно еще и полезно было?
> Поправить расчёты может быть интересней чем майнить крипту.
Тут как бы сильно зависит что, где и как - и к тому же на такую граблю можно встать и самому. Ибо нефиговый риск что какой-то ремотный 31337 сделает то же самое. Just because they can!
научные разработки такие научные
>то оно вычисляется при десериализации через выполнение выражения при помощи функции "eval"Что же могло пойти не так.
блин, ну зачем спалили, теперь новую уязвимость придумывать
Назвовём новую eval2
> десериализации через выполнение выражения при помощи
> функции "eval".Теперь вы знаете как искать бэкдоры и вулны. Если в сишке это system() то в скриптоте это eval :)
Спасибо, кэп, а то мы не знали!>Если в сишке это system() то в скриптоте это eval
Прямо в liblzma - system?
> Спасибо, кэп, а то мы не знали!
>>Если в сишке это system() то в скриптоте это eval
> Прямо в liblzma - system?Ну вот этот решил разнообразие проявить - нагомнякал в сборочной системе какую-то муть. И да, тут на опеннете в свое время сплойт описывали в новостях. Сразу не понравился мутным кодом. Догадайтесь, что про него вскоре было написано в следующей новости.
Так что если код кажется мутным и непонятным - слать его в пень, без всяких колебаний.
> Если в сишке это system()использую popen. но есть подозрения что кто-то сможет передать программе данные через пайп. Надо удалить, или переписать на безопастном (с).
>> Если в сишке это system()
> использую popen. но есть подозрения что кто-то сможет передать программе данные через
> пайп. Надо удалить, или переписать на безопастном (с).В system() проблема в том что если програмер лох, атакующему который контролирует ввод легко срубить текущую команду - и донавесить своих внагрузку. Зафильтровать можно, но лучше взять за правило никогда не вызывать system() с данными контролируемыми внешним миром. Это почти как шелл внешнему миру вывесить.
А eval().. я как-то посмотрел сорц bitmessage, там жуткое спагетти и вот это. Я решил что такой сблюв я юзать не бу. Чутье не подвело - через полгодика кто-то подтвердил что таки - бэкдор это.
>Если в сишке это system()В Сишке самая главная - это a[i], где i>=sizeof(a)/sizeof(Type_a)
>>Если в сишке это system()
> В Сишке самая главная - это a[i], где i>=sizeof(a)/sizeof(Type_a)Это поди еще там заэксплуатируй на современной системе с всеми костылями и секуритифичами. А system() - халява, сэр!
Приведите пример что такого можно передать в system
> Приведите пример что такого можно передать в systemМан недвусмысленно говорит:
Any user input that is employed as part of command should be carefully sanitized,
to ensure that unexpected shell commands or command options are not executed.
Such risks are especially grave when using system() from a privileged program.Т.е. например если оно там где-то берет параметр из юзерского ввода, вбить в ввод нечто типа "abc; ls -la / > /tmp/wtf" - и посмотреть не прокатит ли такой номер?! Это по сути вызов шелла. И если прогер лох - ну, упс, как тебе такой ввод "параметра" шеллу? :). Идея таких сплойтов: первая часть закрывает легитимную команду. Вторая - донавешивает незапланированые бонусы после этого. Конкретика первой части может немного меняться, в зависимости от того что там програмер делал, но идея остается.
Ой, вот так прям эксплоит. Я думал там серьёзная проблема есть.
> Ой, вот так прям эксплоит. Я думал там серьёзная проблема есть.Да вот dumb f...s которые считают что пользовательскому или ремотному вводу можно доверять - не заканчиваются. Тем хуже для них. Наше дело - кукарекнуть, а потом кто не спрятался я не виноват. Вы не представляете себе сколько таких дятлов на этой планете.