Разработчики исправили серьезную уязвимость в 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");

Эмулятор PS3 для Android перестал жарить смартфоны вхолостую

Разработчики эмулятора PlayStation 3 для Android ARMSX3 выпустили обновление 0.9.7. Оно устраняет несколько проблем с производительностью, из-за которых смартфоны грелись даже тогда, когда эмулятор не выполнял полезной работы. Команда нашла сразу три участка кода, бессмысленно нагружавших процессор.

В частности, на устройствах с чипами уровня Snapdragon 8 Elite циклы ожидания, которые должны были усыплять ядра, продолжали работать на полной скорости. Теперь они действительно отправляют процессор отдыхать.

Разработчики также исправили зависание при закрытии игры. Раньше эмулятор завершал графический поток RSX некорректно: изображение замирало, звук продолжал играть, а закрыть приложение нормально не получалось. В версии 0.9.7 остановка выполняется через механизм потери GPU-устройства.

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

Новая версия уже опубликована на GitHub.

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