<rmcreative>

RSS

Уязвимость dev/random и других UNIX-устройств под Windows

20 октября 2015

Разрабатывая код для PHP не забывайте про Windows.

Скриншот подготовил thefsb.

Комментарии RSS

  1. №10027
    Ivan
    Ivan 20 окт. 2015 г., 19:41:59

    Не забывайте, что Валентино на Ducati уже давно не катает ;)

  2. №10028
    Евгений
    Евгений 21 окт. 2015 г., 7:46:59

    Удаляйте. Если человек не понимает как работать с файловой системой и что такое тесты то это уязвимость в голове. Это первое. А теперь про заголовок. Что значит буква "И" в заголовке? Dev/random сам по себе не является unix системой. Да и почему только юникс? Что в линуксе или макоси или фряхе будет по другому?

  3. №10029
    Alek$
    Alek$ 21 окт. 2015 г., 10:39:19

    Евгений, человек может отлично понимать, как работать с файловой системой, но вот поведение, когда /dev/random выдает очень неслучайные значения может быть неожиданным. Например, если скрипт изначально вовсе не был рассчитан под работу в Windows. Или как-то так:

    function get_randomness() {
    // Get good randomness under *nix systems.
    if (file_exists('/dev/random'))
    {
        return fread(fopen('/dev/random', 'r'), 8);
    }
    // Or use built-in one.
    else
    {
        return mt_random(0, 0xFFFFFFFF);
    }
    }

    Ну и не надо придираться к словам, под Unix-системами как правило понимают unix-совместимые системы, к которым отнисится и OSX, и Linux, и *BSD.

  4. №10030
    Sam
    Sam 21 окт. 2015 г., 11:18:39

    Евгений, тесты-то тут при чём? Чтобы протестировать данную ситуацию надо писать в /dev/random. Кому это вообще в голову придёт? Тесты обычной ситуации пройдут на ура. Хороший пример у Alek$ выше.

  5. №10031
    Дмитрий
    Дмитрий 23 окт. 2015 г., 1:04:05

    Sam зачем вообще использовать /dev/random в php проектах ? Не ужели использования mt_rand не оправданно ?

  6. №10032
    Alek$
    Alek$ 23 окт. 2015 г., 6:52:25

    Вопрос в качестве случайных чисел. У mt_rand качество так себе. А у /dev/random гораздо больше источников энтропии, и его вывод на практике не поддается предсказанию, если система работает хотя бы несколько минут.

  7. №10033
    Serghei
    Serghei 24 окт. 2015 г., 15:32:53

    А можете просвятить тёмного? :)

    Какой профит разрабатывать под виндой то, что на 99.99% будет работать на продакшене не под виндой? Я к тому, что да, уязвимость есть, и что? Есть же Vagrant, Docker под винду если лень ставить вторую операционку.

    Вообще считается, что недостаточно иметь туже операционную систему на дев-машине. Правильным считается даже версии софта держать идентичными с продакшн-окружением.

  8. №10034
    Alek$
    Alek$ 24 окт. 2015 г., 16:10:29

    Serghei, тут скорее ситуация обратная: скрипт разрабатывался, тестировался и предназначался для работы под Linux, а кто-то взял да и задеплоил его на винду. Как такое могло случиться? Например, у некоего "кровавого энтерпрайза" и так все сервера на винде и поднимать Linux ради одного побочного проекта никто не станет.

    Другое дело, что для того, чтобы создать файл C:\dev\random под виндой нужно уже иметь админские права, а в этом случае качество случайных чисел в задачу уже, скорее всего, не входит.

  9. №10035
    Serghei
    Serghei 24 окт. 2015 г., 16:45:11

    Alek$, ну дк с таким же успехом можно говорить о уязвимости в Windows устройств /dev/true или /dev/cpu/microcode

  10. №10036
    Sam
    Sam 24 окт. 2015 г., 21:04:09

    Дмитрий, rmcreative.ru/blog/post/perestante-ispolzovat-mcrypt

    Serghei, тут как раз ситуация, когда разрабатывали не под виндой и забыли, что в ней будут проблемы с тем, что в ней не поддерживается. Тот же Yii точно используется на серверах с виндой. Где-то это корпоративная политика.

    Ну и разрабатывать только под один контейнер, а тем более заставлять всех использовать только его — неправильно. Бывают разные машины с разным железом, разные окружения, разные требования у проектов. Так что предсказать, где и как будет использоваться код не получится. Как минимум популярные системы надо покрыть.

    Уязвимы таким образом, естественно, все «устройства UNIX». Заголовок как раз про это и говорит.

  11. №10037
    Serghei
    Serghei 24 окт. 2015 г., 21:53:59

    Sam, Ну по моему скромному мнению не совсем правильно говорить об уязвимости этих устройств в контексте Windows. Корректнее было бы это назвать "О! А оказывается в Windows нет /dev/random и /dev/urandom".

    Это не уязвимость устройства, а его отсутствие, и по моему это очевидный факт для web-программистов операционных систем Unix-like и Windows

  12. №10039
    Sam
    Sam 26 окт. 2015 г., 9:56:29

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

  1. Почта опубликована не будет.

  2. Можно использовать синтаксис Markdown или HTML.

  3. Введите ответ в поле. Щёлкните, чтобы получить другую задачу.