Разработчики исправили серьезную уязвимость в OpenSSH

Разработчики исправили серьезную уязвимость в OpenSSH

Разработчики исправили серьезную уязвимость в OpenSSH

Уязвимость OpenSSH была обнаружена экспертом Михал Залевски (Michal Zalewski) в файле-исходнике sftp-server.c, она затрагивает версии OpenSSH с 5.5 по 7.6.

Как можно видеть в коде, приведенном ниже, если SFTP-сервер стартует с параметром –R, он будет включать переменную «readonly». Это означает, что клиентам не разрешено записывать операции.

 

 

 

 

int
sftp_server_main(int argc, char **argv, struct passwd *user_pw)
{
   ...
    while (!skipargs && (ch = getopt(argc, argv,
        "d:f:l:P:p:Q:u:cehR")) != -1) {
        switch (ch) {
    ...
        case 'R':
            readonly = 1;
            break;
    ...
}

Открытие файла для SFTP-сервера выполняется с помощью вспомогательной функции process_open(), которая открывает доступные только для чтения файлы:

static void
process_open(u_int32_t id)
{
    ...
    if (readonly &&
        ((flags & O_ACCMODE) == O_WRONLY ||
        (flags & O_ACCMODE) == O_RDWR) != 0)) {
        verbose("Refusing open request in read-only mode");
        status = SSH2_FX_PERMISSION_DENIED;
    } else {
        fd = open(name, flags, mode);
    ...
}

Здесь можно увидеть, что если «readonly» активирован, будет осуществляться проверка наличия «WRITE ONLY» или «READ/WRITE». Если это условие удовлетворено, будет выведена ошибка открытия файла в режиме read-only.

В противном случае файл будет открыт с использованием системного вызова open(). Залевски использовал эти параметры для создания произвольных read-only-файлов на SFTP-сервере. Чтобы исправить эту брешь, только для чтения. Чтобы исправить это, разработчики.

Код патча можно увидеть ниже:

if (readonly &&
-       ((flags & O_ACCMODE) == O_WRONLY ||
-       (flags & O_ACCMODE) == O_RDWR)) {
+       ((flags & O_ACCMODE) != O_RDONLY ||
+       (flags & (O_CREAT|O_TRUNC)) != 0)) {
        verbose("Refusing open request in read-only mode");

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