The OpenNET Project / Index page

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

Уязвимость в генераторе случайных чисел ядра Linux

02.05.2018 10:19

Раскрыты сведения об уязвимости (CVE-2018-1108) в реализации генератора случайных чисел, предлагаемого в ядре Linux. Уязвимость охватывает несколько проблем, выявленных в процессе аудита, проведённого инженерами компании Google. Найденные проблемы снижают уровень энтропии при инициализации и приводят к ухудшению качества генерации случайных чисел через /dev/urandom в процессе загрузки системы и спустя короткое время после загрузки (от нескольких секунд до минуты). Уязвимость проявляется только для ключей, создаваемых на раннем этапе загрузки (до стадии инициализации RNG crng_init=2), так как на данной стадии параметры случайных чисел не отвечают требованиям, предъявляемым для криптографических операций.

Из проблем отмечается игнорирование некоторых источников энтропии на ранней стадии загрузки, ненадлежащее взаимодействие между ядром и пространством пользователя, отсутствие передачи энтропии в NUMA CRNG на стадии инициализации. Для демонстрации проблемы на системе Intel Grass Canyon продемонстрировано создание условий, при которых уровень энтропии на стадии загрузки составил 105 бит вместо ожидаемых 4096 бит. Информация о проблеме раскрыта после публикации патчей к ядру Linux, устраняющих выявленные недостатки. Внесённые исправления приостанавливают выдачу значений /dev/urandom до накопления должной энтропии, что может привести к зависанию процесса загрузки из-за блокировки приложений, обращающихся к /dev/urandom на ранней стадии загрузки.

  1. Главная ссылка к новости (https://news.ycombinator.com/i...)
  2. OpenNews: JavaScript-приложения криптовалют, использующие SecureRandom(), могли генерировать уязвимые ключи
  3. OpenNews: В обновлениях к FreeBSD 8 и 9 изменено поведение генератора псевдослучайных чисел и исправлены уязвимости
  4. OpenNews: Критическая уязвимость в генераторе случайных чисел GnuPG и Libgcrypt
  5. OpenNews: Доступен проект Phuctor, коллайдер RSA-ключей
  6. OpenNews: Проект по созданию открытого аппаратного генератора случайных чисел
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/48531-random
Ключевые слова: random, rng, linux, kernel
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (56) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 10:30, 02/05/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –13 +/
    >что может привести к зависанию процесса загрузки из-за блокировки приложений, обращающихся к /dev/urandom на ранней стадии загрузки.

    Линус же себя тапком в грудь бил, что приложения не должны страдать ни в коем случае! Как же так?

     
     
  • 2.2, Аноним (-), 10:34, 02/05/2018 [^] [^^] [^^^] [ответить]  
  • +31 +/
    Они и не страдают. Они ждут. Это на востоке называется "почтительное ожидание". И никаких страданий! :-)
     
     
  • 3.104, Аноним (-), 16:34, 04/05/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Проблема в том что urandom по задумке своей - не блокирующий. Программы как-то не ожидают того что они на этом могут встрять и встревать там где это не ожидается - вовсе даже и не почтительно. И получается дилемма: надо или встрять программу с неизвестным результатом, потому что это нарушает допущения сделанные при программировании, или программа получит хреновую энтропию. На самом деле - безвыигрышный вариант и требуется некий пересмотр подода, чтобы переиграть соотношения.
     
  • 2.3, Andrey Mitrofanov (?), 10:39, 02/05/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    #>>чисел через /dev/urandom в процессе загрузки системы
    #>>проявляется только для ключей, создаваемых на раннем этапе загрузки
    >>что может привести к зависанию процесса загрузки из-за блокировки приложений, обращающихся к /dev/urandom на ранней стадии загрузки.
    > Линус же себя тапком в грудь бил, что приложения не должны страдать
    > ни в коем случае! Как же так?

    Пользователи _u_random для генерации "ключей" должны страдать.

     
     
  • 3.4, Харитон (?), 10:45, 02/05/2018 [^] [^^] [^^^] [ответить]  
  • +6 +/
    особенно на этапе загрузки.
     
  • 3.5, Аноним (-), 10:49, 02/05/2018 [^] [^^] [^^^] [ответить]  
  • –2 +/
    теперь страдать будут все, так как ранее "бесконечный" urandom ведет себя в точности как обычный random - блокирует чтение и ждет. А, ну да - на загрузке, скорость которой мы оптимизировали-оптимизировали, да так и не выоптимизировали.

    Клоуны-псы, б-ский цирк :-(

     
     
  • 4.9, Crazy Alex (ok), 11:00, 02/05/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Судя вот по этому: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/driv ожидание добровольное, а так только ворнингов насыпет
     
     
  • 5.13, Аноним (-), 11:14, 02/05/2018 [^] [^^] [^^^] [ответить]  
  • –2 +/
    это ж ядро - в ядре оно, вероятно, добровольное. А приложения использующие стандартный open/read - просто повиснут до wait_for_random_bytes - которую они вовсе не заказывали.

     
     
  • 6.22, Crazy Alex (ok), 11:48, 02/05/2018 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Судя по https://github.com/torvalds/linux/blob/master/drivers/char/random.c таки urandom_read только ругается, но не блокируется. А wait добавлен для ядерных случайных чисел - инциализации SCSI и подобного
     
     
  • 7.32, Аноним (-), 12:57, 02/05/2018 [^] [^^] [^^^] [ответить]  
  • +/
    да, похоже, повиснут только шибкоумные, которые вместо файловых операций используют getrandom(2)
    (это не "ядерные", это доступный через libc syscall, кажется, освященный позиксом)
    Дайте угадаю, кто это... а, ну да, конечно же - все что завязано на openssl ;-) Нет, non-blocking вариант там есть, но те кто его использовали, могли и urandom не пользоваться, зачем самому себе снижать эффективность, если ты все равно умеешь ждать пока генератор разродится.

     
     
  • 8.108, Аноним (-), 08:39, 05/05/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Нет, блин, лучше пусть нагенерят дырявых ключей, как дебиан в свое время, так чт... текст свёрнут, показать
     
  • 5.64, Новичок (??), 15:58, 02/05/2018 [^] [^^] [^^^] [ответить]  
  • +/
    У меня проявилось. Я даже тему создал, не поняв что это могло бы блокировать запуск.
    www.opennet.ru/openforum/vsluhforumID15/4418
    Ума не приложу, какое это приложение могло бы быть. В автозагрузке ничего своего нету, на обоих компьютерах примерно одинаковые пакеты. Может драйвер какой?
     
     
  • 6.69, Crazy Alex (ok), 17:09, 02/05/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Если очень надо выяснить - просмотрите, какие модули изменились в этом ченжсете, там по именам файлов вполне ясно. В принципе именно в драйверы кое-куда это вкрутили, но я только SCSI видел
     
     
  • 7.93, Andrey Mitrofanov (?), 14:53, 03/05/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Если очень надо выяснить - просмотрите, какие модули изменились в этом ченжсете,
    > там по именам файлов вполне ясно. В принципе именно в драйверы
    > кое-куда это вкрутили, но я только SCSI видел

    Ты уверен, что в SCSI рандом-ы вот именно во используются, а не "игнорирование некоторых источников энтропии на ранней стадии загрузки" наоборот?

     
     
  • 8.97, Crazy Alex (ok), 15:46, 03/05/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Я буковку i пропустил - имелось в виду iSCSI Собственно, если вскользь глянуть ... текст свёрнут, показать
     
  • 3.43, Аноним (-), 15:00, 02/05/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Пользователи _u_random для генерации "ключей" должны страдать.

    Сказал пользователь urandom который генерирует оные каждый день так или иначе :)

     
     
  • 4.70, Crazy Alex (ok), 17:11, 02/05/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Если кто не понял - это может тормознуть только при инициализации urandom, на старте. А там, на самом деле, криптографически стойкие ключи не так уж часто нужны. Дальше, как и раньше, urandom при недостатке энтропии использует ГПСЧ.
     
     
  • 5.82, Аноним (-), 19:44, 02/05/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Это у тех, у кого apt-get не через apt-transport-tor работает. А тем домашним пользователям, у кого не работает, уже ничего не поможет, они безнадёжны.
     
     
  • 6.99, Crazy Alex (ok), 15:50, 03/05/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    И зачем тягать подписанные общедоступные пакеты, лежащие на куче зеркал, через Tor?
     
     
  • 7.101, Andrey Mitrofanov (?), 16:11, 03/05/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > И зачем тягать подписанные общедоступные пакеты, лежащие на куче зеркал, через Tor?

    Чтобы никто е догадался.

     
  • 7.109, Аноним (-), 08:47, 05/05/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > И зачем тягать подписанные общедоступные пакеты, лежащие на куче зеркал, через Tor?

    А чтобы не информировать атакующего лишний раз.
    1) Какой софт у тебя вообще в системе установлен. Это может использоваться для слежки или весьма прицельных атак.
    2) Атаковать зная точную версию программы в системе значительно удобнее и проще чем наобум.
    3) Пальба факта незаапдейченности системы так и просит сплойта в бубен.

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

     
  • 5.89, Аноним (-), 06:05, 03/05/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Если кто не понял - это может тормознуть только при инициализации urandom, на старте.

    Давай по честному. Ты когда-нибудь видел такое на практике? И я нет.

     
     
  • 6.98, Crazy Alex (ok), 15:49, 03/05/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Я не поручусь, что не видел. Если на своей домашней десктопной генте я более-менее уверен, что, где и когда происходит, то на ноутбуке с убунтой и wifi/bt/vpn или, паче, андроидфоне - чёрт его знает, когда там что происходит.
     
  • 6.110, Аноним (-), 08:53, 05/05/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Ну я видел С неких пор ядро при этом натурально вопит про uninitialized read ... большой текст свёрнут, показать
     
  • 3.87, tensor (?), 01:02, 03/05/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ядро с ASLR тоже должно страдать?
     
     
  • 4.94, Andrey Mitrofanov (?), 14:56, 03/05/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Ядро с ASLR тоже должно страдать?

    Нет, конечно.  Но те, кто увидел "ключей" в "ASLR", - пусть.

     
  • 2.68, Аноним (-), 16:52, 02/05/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Обратная совместимость не нарушена, подумаешь пару минут повисят.
     

  • 1.8, Аноним (-), 11:00, 02/05/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +7 +/
    > блокировки приложений, обращающихся к /dev/urandom

    это прикол такой, да? оно ж гарантировалось, что не блокируется!

     
     
  • 2.14, Аноним (-), 11:17, 02/05/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >> блокировки приложений, обращающихся к /dev/urandom
    > это прикол такой, да? оно ж гарантировалось, что не блокируется!

    говорят же вам - клоуны. Оно еще и не гарантировалось что рандомное.
    Я даже знаю, где оно на самом деле было надо больше чем одному анону - в стартапных скриптах openssh (и элементарно обходилось стартом до окончания генерации). Но ниасиляторы bash-скриптов (а systemd-initial-ssh-keys-setup еще не написали) вместо этого пошли портить ядро.


     
     
  • 3.29, Аноним (-), 12:46, 02/05/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Это ты статейку Greg Kroah-Hartman не читал, где он рассказывал, что /dev/urandom более чем секурен.

     
     
  • 4.33, Аноним (-), 13:01, 02/05/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Это ты статейку Greg Kroah-Hartman не читал, где он рассказывал, что /dev/urandom
    > более чем секурен.

    я как-то не вижу его среди авторов этого кода. T.Ts'o, когда его придумал, вполне внятно объяснял, для чего он нужен и почему генераторов два.
    То есть отсюда и беда - одни забивают гвоздь микроскопом, другие возводят это в религию, третьи в результате ломают то что новой вере не соответствует. А вы подождите, щас загрузится...щасщасщас...

     
  • 3.52, Аноним (-), 15:13, 02/05/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > systemd-initial-ssh-keys-setup

    Так вот кто генератор идей для Поттеринга, а то он уже не знает какую подсистему ещё заменить :) Всё жду systemd-x11d.

     

  • 1.26, Аноним (-), 12:22, 02/05/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Недостаточно энтропии -> генератор не выдаёт случайные числа -> останавливается загрузка -> не увеличивается энтропия.
     
     
  • 2.34, Аноним (-), 13:14, 02/05/2018 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > Недостаточно энтропии -> генератор не выдаёт случайные числа -> останавливается загрузка
    > -> не увеличивается энтропия.

    не сцы, всяких мусорных прерываний даже у нестартовавшей системы вагон и маленькая тележка, пул накапает.
    Просто медленно.

     

  • 1.28, Какаянахренразница (ok), 12:26, 02/05/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +6 +/
    > Уязвимость в генераторе случайных чисел ядра Linux

    Как я уже имел честь докладывать ранее, эта планета не пригодна для жизни.

     
     
  • 2.49, Аноним (-), 15:07, 02/05/2018 [^] [^^] [^^^] [ответить]  
  • –4 +/
    > я уже имел честь

    Честь она как девственность, но ее нельзя восстановить. Сочувствую тебе, но люди живут, ниче.

     
  • 2.54, Аноним (-), 15:17, 02/05/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >> Уязвимость в генераторе случайных чисел ядра Linux
    > Как я уже имел честь докладывать ранее, эта планета не пригодна для
    > жизни.

    Согласен с вами, коллега. Предлагаю скинутся с другими коллегами и коллективно купить у Маска ракету на Марс.

     
     
  • 3.81, Аноним (-), 18:51, 02/05/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Согласен с вами, коллега. Предлагаю скинутся с другими коллегами и коллективно купить
    > у Маска ракету на Марс.

    там линукс.


     
  • 3.83, Аноним (-), 22:28, 02/05/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >>> Уязвимость в генераторе случайных чисел ядра Linux
    >> Как я уже имел честь докладывать ранее, эта планета не пригодна для
    >> жизни.
    > Согласен с вами, коллега. Предлагаю скинутся с другими коллегами и коллективно купить
    > у Маска ракету на Марс.

    Лучше скинутся на свободную нардварную реализацию ГСЧ, что бы в USB воткнул, и работает при загрузке с драйвером в ядре, а так же емким и быстро наполняемым пулом внутри железяки. И что бы в продаже на каждом углу по 100 деревянных можно было бы взять. Тогда глядишь и ср.ные разработчики материнок и/или процессоров начнут подтягиваться, а то без волшебного пинка видимо ни как ;)
    Хотя USB особого доверия нет, но можно на ходу тестировать поток рандома на корректность.

     
     
  • 4.92, Аноним (-), 13:01, 03/05/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > нардварную реализацию ГСЧ

    Зары, что ли?

     
  • 4.96, Andrey Mitrofanov (?), 15:07, 03/05/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Скинуться http altusmetrum org ChaosKey https store vikings net chaoskey... большой текст свёрнут, показать
     
  • 4.100, Crazy Alex (ok), 15:56, 03/05/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Да без проблем, FST-01 в помощь, и скидываться не надо. а на неё - NEUG. Который, впрочем, может жить на куче других железок с STM32.
     
  • 4.107, Аноним (-), 17:35, 04/05/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Лучше скинутся на свободную нардварную реализацию ГСЧ, что бы в USB воткнул,

    Воткни в usb wifi свисток на ath9k и разреши собирать энтропию с его ADC в конфиге ядра. Получишь вагон энтропии. При том в случае ADC бэкдор всучить особо некуда, да и ядро не напрямую это трескает все-же. А прошивка там опенсорсная как раз. Древняя проприетарная небось и не умеет отсчеты ADC наружу из свистка вытаскивать.

    В "свободной реализации" воткнутой в usb - один хрен будет скорее всего ADC. А где там еще энтропию особо брать? С "крутого и правильного" хардварного генератора случайных чисел? Лол!

     

  • 1.57, axredneck (?), 15:32, 02/05/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    /dev/random не подвержен? Расходимся.
     
  • 1.84, Аноним (-), 23:25, 02/05/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Это не от этого ў меня ядро ck 4.16.6 не стартует DE, пока рандомные клавіші несколько раз не понажімаю?
     
     
  • 2.85, Yesitis (?), 23:45, 02/05/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Скорее всего, да.
     
  • 2.91, пох (?), 12:21, 03/05/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Это не от этого ў меня ядро ck 4.16.6 не стартует DE, пока рандомные клавіші несколько раз не
    > понажімаю?

    подожди пару часиков, ничего не нажимая и мыша не шевеля - если оно все же стартанет - да, оно.
    Багрепорт - майнтейнеру дистрибутива, Линуса оно не интересует, у него палец.

      

     
     
  • 3.106, Аноним (-), 17:14, 04/05/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > подожди пару часиков, ничего не нажимая и мыша не шевеля - если
    > оно все же стартанет - да, оно.
    > Багрепорт - майнтейнеру дистрибутива, Линуса оно не интересует, у него палец.

    У майнтайнеров чего доброго тоже палец может оказаться - системда нынче видите ли умеет random seed между перезагрузками сохранять и скармливать ядру, во избежание подобных приколов. А если кто хотел быть самым умным - так пусть и простреленную пятку сам лечит.

     

  • 1.86, funny.falcon (?), 23:50, 02/05/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    {sarcasm} 105 бит энтропии... блин, да, это очень-очень мало... {/sarcasm}
     
     
  • 2.95, Аноним (-), 14:57, 03/05/2018 [^] [^^] [^^^] [ответить]  
  • +/
    как у пароля из 16 символов
     

  • 1.88, Дуплик (ok), 01:23, 03/05/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Так в какой версии ядра исправлено?
     
  • 1.90, Аноним (-), 07:03, 03/05/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Пользователь с именем Urandom+(чего-то_там_случайное) может залогиниться в системе на ранних стадиях загрузки системы из за низкой энтропии :)
     
  • 1.102, amonymous (?), 17:58, 03/05/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Низкая энтропия на минуту при загрузке? В /dev/urandom?!!! Так оно как бы и не позиционируется как криптостойкий источник. О чём вообще писк-то?
     
     
  • 2.103, Andrey Mitrofanov (?), 18:19, 03/05/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Низкая энтропия на минуту при загрузке? В /dev/urandom?!!! Так оно как бы
    > и не позиционируется как криптостойкий источник. О чём вообще писк-то?

    Секьюрити сёркус снова в городке Линуса нашего Тормальдса. С новыми поэтессами из Гран Гугле Опера.

     
  • 2.111, Andrey Mitrofanov (?), 15:41, 22/05/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Я, конечно, иронизировал над сабжом и ключами-криптографией, но изменение ... большой текст свёрнут, показать
     
     
  • 3.112, Andrey Mitrofanov (?), 16:13, 22/05/2018 [^] [^^] [^^^] [ответить]  
  • +/
    >> Низкая энтропия на минуту при загрузке? В /dev/urandom?!!! Так оно как бы
    >> и не позиционируется как криптостойкий источник. О чём вообще писк-то?
    > Я, конечно, иронизировал над сабжом и ключами-криптографией, но...
    > //BTW, коллеги, как вовнутрь QEMU "пробрасывать" немного рандома из родительской системы?

    Не-rtfm с мойе стороны.  Sorry за шум.


    https://wiki.qemu.org/Features/VirtIORNG

    $ man qemu-system-i386 2>/dev/null |grep rng
               -object rng-random,id=id,filename=/dev/random
                   reference this entropy backend from the virtio-rng device. The filename
               -object rng-egd,id=id,chardev=chardevid
                   will be used to reference this entropy backend from the virtio-rng
    $ _

     

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



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

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