Профиль: Аноним (вход | регистрация) неRU opennet.me  
The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Проблемы с очисткой ключей шифрования диска из ОЗУ при переходе Linux в ждущий режим

02.07.2026 22:44 (MSK)

В ходе портирования для NixOS инструментария cryptsetup-suspend была выявлена ошибка в подсистеме дискового шифрования LUKS (Linux Unified Key Setup), из-за которой начиная с ядра Linux 6.9 (проблемный коммит), выпущенного в мае 2024 года, перестала работать очистка ключей шифрования из оперативной памяти при переходе системы в ждущий режим.

Инструментарий cryptsetup-suspend используется в Debian для автоматической блокировки LUKS-разделов перед переходом в режим сна. Предполагается, что в случае кражи ноутбука, переведённого в режим сна, злоумышленник будет лишён возможности получить доступ к данным, так как при выходе из сна потребуется ввести пароль для восстановления доступа к зашифрованным данным. Из-за ошибки в ядре Linux после блокировки LUKS-раздела командой "cryptsetup luksSuspend" ключи не очищались из оперативной памяти и оставались видны через /proc/keys, что позволяло атакующему извлечь их, например, методом "холодной перезагрузки", и использовать для доступа к данным.

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

Данный патч не принят в ядро, так как в нём выявлена недоработка - патч действует только для физических накопителей, но не работает для виртуальных loop-устройств. Вместо исправления проблемы на стороне ядра разработчиками инструментария cryptsetup был предложен обходной путь очистки ключей. Данное изменение уже принято и войдёт в состав выпуска cryptsetup 2.8.7.

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

  1. Главная ссылка к новости (https://news.ycombinator.com/i...)
  2. OpenNews: Уязвимость в cryptsetup, позволяющая отключить шифрование в LUKS2-разделах
  3. OpenNews: Обход шифрования диска в Linux через непрерывное нажатие клавиши Enter
  4. OpenNews: Обход дискового шифрования, использующего TPM2 для автоматической разблокировки
  5. OpenNews: Уязвимость в Cryptsetup, позволяющая получить доступ к root shell
  6. OpenNews: Доступен Cryptsetup 2.8 с поддержкой inline-режима хранения метаданных
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/65831-cryptsetup
Ключевые слова: cryptsetup, luks, crypt, patch
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (34) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 23:13, 02/07/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +8 +/
    Вполне может быть, что такой итог и был целью "рефактора", но заметили слишком быстро.
     
     
  • 2.10, Аноним (10), 23:51, 02/07/2026 [^] [^^] [^^^] [ответить]  
  • –3 +/
    В любой корпоративной системе по-любому есть шифрование ОЗУ.
     
     
  • 3.11, Счукин Е (?), 00:03, 03/07/2026 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Там же есть секьюрити софт который эти ключи в памяти хранит как есть ну или любые другие ключи.
    Вопрос в данном случае стоит иначе: где unit-тесты на новый функционал? Их нет. А это признак ручек из попки.
     
     
  • 4.21, Аноним123 (?), 07:31, 03/07/2026 [^] [^^] [^^^] [ответить]  
  • +8 +/
    Как показывает практика: юнит тесты живут отдельно, реальность отдельно.
     
     
  • 5.30, Tron is Whistling (?), 09:58, 03/07/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Дык, проблема юнит-тестов в том, что они кейс-бейсед и не покрывают всего набора входных данных и связанного поведения, это просто невозможно. Т.е. юнит-тесты при излишнем доверии дают только иллюзию работоспособности.

    Избыточное алгоритмическое тестирование надёжнее, но кто ж столько платить-то будет.

     
  • 4.24, Аноним (24), 08:47, 03/07/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Тесты в любом виде показывают только то, что код запускается и соответствует контракту на поведение (ТЗ). Практически всегда это тесты на happy path, и особо тщательных - ещё и на негативные случаи. Все остальные тесты пишутся только после багов с прода, чтобы не допустить повторения.
     
     
  • 5.31, Tron is Whistling (?), 09:59, 03/07/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Даже если у тебя 100% coverage - юнит-тесты не затрагивают полноценно обработку данных, только небольшой набор эксклюзивно выбранных вариантов.
     
  • 5.33, нах. (?), 12:47, 03/07/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Все остальные тесты пишутся только после багов с прода, чтобы не допустить повторения.

    поэтому они никогда не приносят пользы, поскольку повторять старый баг никто и не собирался.
    А новый появится в тестах... когда его найдут.

    Как ни странно (поскольку в эпоху клавы за 25 тесты стали почти бесплатновыми) пока что больше всего пользы от burn-out тестов. Уже пару раз находили ошибки которые пристальным вглядыванием хрен ты найдешь.

     
  • 3.19, Ydro (?), 06:07, 03/07/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/
    А для работы с данными из "зашифрованного ОЗУ" видимо надо использовать другое "зашифрованное ОЗУ", и так, до тех пор, пока наконец-то не дойдёт, что пора-бы поработать с самими данными и не дешифровать их в просто ОЗУ.
     
     
  • 4.22, Аноним (10), 08:10, 03/07/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Это аппаратная функция cpu, ядро об этом ничего не знает.
     
  • 4.29, Tron is Whistling (?), 09:56, 03/07/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Шифрованием в этом случае CPU занимается, и ключ надо из него выковыривать, что уже не просто.
     
  • 3.26, Соль земли2 (?), 09:47, 03/07/2026 [^] [^^] [^^^] [ответить]  
  • +/
    В корпоративных системах всё хранится... в корпоративных системах. А на рабочих местах только временные токены.
     
     
  • 4.28, Tron is Whistling (?), 09:55, 03/07/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вы слишком хорошего мнения о "корпоративных системах", видимо не видели их никогда.
    Ныне мода всё хранить в облачках, утечки стали делом вполне обыденным.
    Нет, облачка не причём (вернее при чём, но редко) - просто "токены" через пять слоёв кросс-авторизации при уходе сотрудников аннулируются быстро далеко не всегда.
     
     
  • 5.34, нах. (?), 12:48, 03/07/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    погоди, как так - аннулируются?! Мы ж их в гитхап закомитили?! И еще вот, в гитляп. В свой, общий и еще отдельный у неведомых контрактных разработчиков.

     
     
  • 6.36, Tron is Whistling (?), 13:27, 03/07/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Да, и это вот всё :)
     
  • 3.27, Tron is Whistling (?), 09:53, 03/07/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Да и не в корпоративной тоже, у AMD можно и на личном десктопе включить.
    Но это стоит производительности.
     

  • 1.3, Аноним (3), 23:25, 02/07/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > начиная с ядра Linux 6.9

    Обожаю подобное! "Обновляйтесь", - говорили они.

     
     
  • 2.7, Colorado_House_of_Representatives (?), 23:41, 02/07/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Не обновляйтесь. Мы взломаем ваш рут простым питоновским скриптом.
     
     
  • 3.12, Счукин Е (?), 00:07, 03/07/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Думаешь они нарочно питон придумали чтобы вот так вот поступать?
     
     
  • 4.15, Colorado_House_of_Representatives (?), 00:32, 03/07/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Думаю шутка зашла слишком далеко и перестала быть смешной.
     
  • 2.8, Аноним (8), 23:44, 02/07/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Конечно, зачем тебе что-то свежее 5.10 сейчас. Там никто ничего не ищет, будешь Неуловимым Джо.
     
  • 2.9, Аноним (9), 23:46, 02/07/2026 [^] [^^] [^^^] [ответить]  
  • +4 +/
    >"Обновляйтесь", - говорили они

    И правильно говорили, потому что в версиях до 6.9 будут другие баги и уязвимости.
    https://kernel.org
    Нельзя рассматривать последнюю версию какого либо ПО как идеально завершенную, это просто надо быть в потоке изменений, как с теми же браузерами, каждый месяц новая версия.

     
     
  • 3.14, Аноним (3), 00:26, 03/07/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > каждый месяц новая версия

    каждый месяц новые баги

     
     
  • 4.18, Аноним (9), 00:37, 03/07/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Старые закрыли, новые появились. Это так и работает.
     

  • 1.4, Аноним (3), 23:30, 02/07/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > для NixOS ... задействован старый патч к ядру, не принятый в 2015 году, принудительно очищающий ключи из памяти перед переходом в режим сна.

    Почему не приняли? Ф.И.О. - есть у этого? Или он - ф..н?

     
  • 1.5, Colorado_House_of_Representatives (?), 23:40, 02/07/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Так при переходе в ждущий режим ключи никогда и не очищались. На то он и ждущий режим. В Linux терминология несколько отличается. Возможно, авторы имели в виду спящий режим (гибернацию).
     
  • 1.20, vexelmann (ok), 07:11, 03/07/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Не баг, а фича!
     
     
  • 2.25, Kilrathi (ok), 09:08, 03/07/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Вполне возможно.
    Я в ряде ситуаций использую как раз временное хранение ключа дешифровки LUKS в неочищаемых при "теплой" перезагрузке областях ОЗУ.
    Собственно, при удаленной работе без постоянного KVM к физике и без, либо при недоверии, TPM-чипу знаю только два варианта работы с "полнодисковым" шифрованием: либо, как выше сказано, писать ключ в неочищаемый участок памяти при старте системы (тогда система будет сама расшифровываться после перезагрузке, но в случае "холодного" сброса или отключения потребуется что б кто-то на месте ввел пароль дешифровки или подключил KVM для удаленного ввода), либо через промежуточную загрузку (например сначала грузить образ с dropbear, а с него уже инициировать расшифровку и запуск основной системы с шифрованного).

    Это, естественно, серьезные дыры. Но в рамках защиты "архивов с котиками" и тп SOHO - за глаза. А "серьезные люди" при острой необходимости либо спецоборудованием снимут все ключи из рабочего дампа оперативки, либо "ласково" попросят их у одного из обладателей.

     

  • 1.23, ИмяХ (ok), 08:16, 03/07/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    >>проблемный коммит
    >>author Christian Brauner

    Интересно, на сколько лет его посадят в тюрьму за написание вредоносного комитета? Или этот бекдор был для спецслужб и он снова отмажется, мол, нечаянно не уследил, что поделать, это язнк такой.

     
     
  • 2.35, нах. (?), 12:49, 03/07/2026 [^] [^^] [^^^] [ответить]  
  • +/
    у тебя шапочка из фольги сползает!
     
     
  • 3.39, Аноним (39), 14:18, 03/07/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Лучше как он - в шапочке из фольги, чем как вы - в презервативе из фольги.
     
  • 2.37, Аноним (3), 14:13, 03/07/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > на сколько лет его посадят

    Это зависит от юрисдикции, где он работает. И судя по имени, он не китаец.

     

  • 1.38, Аноним (39), 14:16, 03/07/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    LUKS всегда был поделкой для домохозяек и ленивых админов. Чему тут удивляться?
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2026 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру