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

В Android Canary у Linux Terminal появились новые настройки памяти и экрана

Google продолжает понемногу прокачивать встроенный Linux Terminal в Android. В свежей сборке Android Canary 2603 для него появилось сразу несколько изменений — и визуальных, и вполне практичных. Сам Терминал остаётся одной из самых любопытных функций на смартфонах Pixel.

Формально это штука скорее для энтузиастов, но по факту она уже давно вышла за рамки игрушки для гиков: через неё можно запускать Linux-приложения и даже игры. А на фоне планов Google расширять поддержку полноценных Linux-программ такие обновления выглядят вполне логично.

Снаружи Терминал немного освежили. Например, экран установки теперь выглядит современнее: прогресс-бар переместили в центр, а чек-бокс с ограничением по Wi-Fi заменили на переключатель. Плюс процесс установки теперь отображается более наглядно.

 

 

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

 

 

Главное новшество — это появление в настройках нового раздела «Advanced». В нём можно ограничить объём памяти, который Терминал отдаёт виртуальной среде, чтобы она не слишком активно съедала ресурсы смартфона. Там же появилась настройка времени активности экрана: можно выбрать, чтобы дисплей не гас от одной минуты до целых суток.

Последняя функция особенно полезна, если в Терминал крутится что-то долгое и не хочется, чтобы Android слишком рано отправил процесс в фон или просто прервал работу. Правда, система честно предупреждает: чем дольше экран остаётся включённым, тем быстрее будет таять заряд аккумулятора.

Пока эти изменения замечены именно в Android Canary. В Android 17 Beta 2 и Android 16 QPR3 их пока нет.

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