Особенность языка R позволяет выполнять код с помощью RDS и RDX-файлов

Особенность языка R позволяет выполнять код с помощью RDS и RDX-файлов

Особенность языка R позволяет выполнять код с помощью RDS и RDX-файлов

Новая брешь обнаружена в софте, написанном на языке программирования R, которая позволяет выполнить произвольный код при десериализации специально созданных файлов RDS и RDX.

R — это язык программирования с открытым исходным кодом, который особенно популярен среди статистиков и специалистов по сбору данных, также использующийся в областях машинного обучения и искусственного интеллекта.

Специалисты из HiddenLayer обнаружили в программах на R уязвимость CVE-2024-27322, которая оценивается в 8,8 балла по метрике CVSS. Данная брешь позволяет злоумышленникам выполнять произвольный код на целевых машинах, когда жертва открывает RDS или RDX-файлы.

Уязвимость использует способ, которым R обрабатывает сериализацию и десериализацию, в частности с помощью «объектов обещаний» и «ленивой оценки».

 

Хакеры внедряют объект обещаний с произвольным кодом в RDS-файл, который будет выполнен при условии загрузки заражённого объекта.

Сложность атаки заключается в том, что злоумышленники должны убедить жертву скачать данный файл себе на устройство. Некоторые хакеры выбирают пассивный вариант, распространяя зараженные пакеты в широко используемых репозиториях.

Язык программирования R все чаще используется в критически важных отраслях, поэтому данная проблема вызывает опасения. Уязвимость может привести к полной компрометации системы, в которой запущена программа.

Просматривая репозитории, исследователи из HiddenLayer обнаружили, что readRDS, один из многих способов эксплуатации этой уязвимости, упоминается более чем в 135 000 исходных файлов R. Среди исходных файлов, содержащих потенциально уязвимый код, были проекты от R Studio, Facebook, Google, Microsoft, AWS и других крупных производителей программного обеспечения.

Эксперты CERT/CC предупредили организации, использующие R и функцию readRDS в непроверенных пакетах, о необходимости обновления до R Core версии 4.4.0, в которой была устранена уязвимость.

Для пользователей, не имеющих возможности перехода на новую версию, рекомендовано внедрить дополнительные уровни безопасности, например, запускать файлы RDS/RDX в изолированных средах, таких как песочницы и контейнеры, чтобы предотвратить выполнение кода в базовой системе.

Windows хранит скрытые данные о доступе приложений к камере и микрофону

Windows ведёт подробный учёт приложений, которые обращались к камере, микрофону, геолокации и другим возможностям компьютера. В настройках пользователю показывают лишь краткий список недавней активности, а самое интересное система складывает в реестр. Данные находятся в разделе ConsentStore.

Там можно узнать, какое приложение получало доступ к оборудованию, когда именно начался и закончился последний сеанс и сколько времени он продолжался.

Отдельно Windows записывает дату выдачи разрешения и его текущий статус — Allow или Deny.

Правда, просто открыть редактор реестра и почувствовать себя цифровым детективом не получится. Временные метки хранятся в формате FILETIME — в виде количества 100-наносекундных интервалов, прошедших с 1 января 1601 года.

Привести данные в человеческий вид позволяет скрипт PowerShell. Он проверяет разделы ConsentStore, преобразует временные метки и выводит таблицу с названием приложения, типом разрешения, временем последнего обращения и продолжительностью сеанса.

$root = "HKCU:\Software\Microsoft\Windows\CurrentVersion\CapabilityAccessManager\ConsentStore"
$results = Get-ChildItem $root | ForEach-Object {
    $medium = $_.PSChildName
    Get-ChildItem $_.PSPath -Recurse | ForEach-Object {
        $props = Get-ItemProperty $_.PSPath -ErrorAction SilentlyContinue
        if ($props.LastUsedTimeStart -and $props.LastUsedTimeStop -and
$props.LastUsedTimeStart -ne 0) {
            $start   =
[datetime]::FromFileTimeUtc($props.LastUsedTimeStart).ToLocalTime()
            $stop    =
[datetime]::FromFileTimeUtc($props.LastUsedTimeStop).ToLocalTime()
            $granted = if ($props.LastSetTime) {
                [datetime]::FromFileTimeUtc($props.LastSetTime).ToLocalTime()
            } else {
                $null
            }
            [PSCustomObject]@{
                Medium              = $medium
                App                 = $_.PSChildName
                PermissionGrantedOn = $granted
                LastUsedStart       = $start
                LastUsedStop        = $stop
                Duration            = $stop - $start
            }
        }
    }
}

Для проверки системных разрешений потребуется изменить путь с HKCU на HKLM и запустить PowerShell от имени администратора.

У журнала есть важное ограничение: Windows сохраняет только последнее обращение каждого приложения, а не полную историю. Кроме того, дата выдачи разрешения не означает, что именно тогда программа впервые воспользовалась камерой или микрофоном.

Тем не менее проверка способна преподнести сюрпризы. Автор исходного материала, например, обнаружил, что EA Sports FC 26 использовала его микрофон около 40 минут, хотя он не помнил, чтобы разрешал игре это делать.

Если в списке нашлась подозрительная программа, ей можно запретить доступ к соответствующему компоненту или удалить её.

RSS: Новости на портале Anti-Malware.ru