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

Бывший разработчик Windows Дэйв Пламмер напомнил о том, что вокруг искусственного интеллекта слишком много лишней мистики. На этот раз специалист показал, как базовые принципы работы современных нейросетей можно продемонстрировать буквально на музейном железе — PDP-11, системе конца 1970-х с процессором 6 МГц и 64 КБ оперативной памяти.

Для эксперимента использовалась модель ATTN/11 — это одноголовый однослойный трансформер, полностью написанный на ассемблере PDP-11.

Проект создал Damien Buret, и его идея довольно проста: не гнаться за мощностью, а показать трансформер в максимально «разобранном» и понятном виде.

Задача у модели с виду совсем скромная — научиться переворачивать последовательность из восьми цифр. Но, как объясняет Пламмер, здесь важен не сам фокус с числами, а принцип: системе нужно уловить структуру правила, а не просто запомнить отдельные примеры. Именно в этом, по сути, и проявляется базовая механика, на которой работают большие языковые модели.

Особенно интересно то, насколько крошечной получилась эта демонстрация. В модели всего 1216 параметров, она использует fixed-point arithmetic, а вычисления для прямого прохода ужаты до 8-битной точности.

Модель смогла добиться 100% точности на задаче разворота последовательностей после примерно 350 шагов обучения. На PDP-11/44 с кеш-платой на это ушло около 3,5 минуты. Для машины такого возраста результат выглядит невероятно хорошим.

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

Заодно история красиво бьёт ещё в одну точку: в эпоху, когда индустрия всё чаще упирается в дефицит вычислительных ресурсов, старое доброе искусство оптимизации снова становится особенно ценным.

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