Уязвимость в Ubuntu: исправлять нельзя оставить

Как недавно обнаруженный баг может полностью перевернуть принцип работы устройств.

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

  1. Уводим компьютер в спящий режим.
  2. Вынимаем жёсткий диск (да-да, без полного выключения ПК!).
  3. Пробуждаем компьютер.
  4. Вводим любой набор символов в поле пароля учётной записи.
  5. Готово, вы увидите рабочий стол пользователя.

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

Уязвимость подтверждена пользователями в версиях Ubuntu 10.10, 11.04, 11.10, 12.04, 12.10, 13.04, 13.10, 14.04, 14.10, 15.04, 15.10, 16.04, 16.10, 17.04, Mate 18.04.

Об истории обнаружения бага и прочих подробностях вы можете прочесть в первоисточнике на Хабре: Локальная авторизация без пароля в Ubuntu, я же взглянул на ситуацию немного под другим углом.

Критичность бага сложно осознать даже специалистам

Когда баг зарегистрировали там, где надо — на основном баг-трекере Убунты, куда заглядывают сотрудники Canonical — как вы думаете, что произошло? Учтите, баг №1777415 нетривиальный — подразумевается не перемыкание контактов или ввод секретной комбинации, а владение отвёрткой и умением отличить жёсткий диск от оперативной памяти.

Марк Дезлорье, инженер по безопасности Ubuntu, далеко не последний в иерархии ответственных за разработку Ubuntu и смежных программных продуктов, написал: «Мы вряд ли это исправим, так как наличие физического доступа означает, что злоумышленник может просто получить доступ к жесткому диску напрямую или заменить пароль на нем и разблокировать компьютер.»

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

Этот ответ важен тем, что показывает, насколько даже профессионалы ограничены рамками привычного жизненного уклада. Уязвимость зарегистрировали 18 июня, отказ (конечно, не окончательный, это только мнение) Марк написал 25 июня. У человека с таким опытом, полагаю, было достаточно времени для осмысления масштаба бедствия, но не справился с задачей и не понял суть проблемы.

Насколько я понял, инженер по безопасности решил, что уязвимость не важна, потому что злоумышленник, которому доступна возможность разобрать ноутбук, обладает более простыми способами вытянуть секреты пользователя:

  1. Подключить жёсткий диск к другому ПК и напрямую просмотреть все файлы. Если, конечно, диск не зашифрован.
  2. Без разборки загрузиться с загрузочного диска и заменить /etc/shadow, чтобы обойти ввод пароля. Зашифрованные файлы так увидеть тоже нельзя.

Но ведь баг #1777415 совсем не об этом, для его воспроизведения не нужны такие сложности! Уязвимость позволяет легко получить доступ даже к файлам, в обычной ситуации недоступным без ввода правильного пароля. Допустим, у вас на зашифрованном разделе хранится база паролей KeePass, вы открываете её, затем уводите компьютер в сон и идёте спокойно обедать, ожидая, что злоумышленник, пробудив ноутбук, будет остановлен непробиваемым экраном входа в систему. А если ПК украдут, так или иначе его хотя бы один раз перезагрузят при попытке получить данные, в таком случае оперативная память очистится и все пароли из открытой БД улетучатся, как и любой запущенный софт. Есть, конечно, способы этому препятствовать, замораживая платы ОЗУ жидким азотом, но такая атака на порядок сложнее.

А здесь получается, что достаточно усыпить ПК (это можно сделать и с экрана входа в систему), вынуть жёсткий диск, скопировать открытую базу данных паролей и перезагрузить ПК, стерев все цифровые следы. Вернувшийся с обеда сотрудник увидит лишь, что компьютер почему-то перезагрузился, только и всего.

Исправление ошибки изменит принцип работы софта на всех устройствах

Можно было бы попинать разработчиков Unity, Mate и самой Ubuntu, что они не предусмотрели отключение диска во время работы, но здесь нет конкретно их вины. Дело в ожидании того факта, что системный диск ПК должен быть всегда подключён. Но это далеко не так. Теперь всем разработчикам нужно проверить, как ведёт себя их софт при изменении конфигурации железа прямо во время работы.

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