Критическая уязвимость Windows 7 x64: BSOD и компрометация системы

Хабрахомячки жгут:

http://habrahabr.ru/blogs/infosecurity/134999/

Кривая работа с WinAPI в вебките, оказывается, является уязвимостью Windows.

Судя по всему, найдя ключевые буквы BSoD, у части людей отключается мозг. То, что абсолютно каждый может написать программу, работающую от админских прав с низкоуровневыми задачами, которая будет класть систему в синий экран, автор не знает — он не программист. Автор искренне считает, что раз BSoD — то всё, уязвимость. Таких «уязвимостей» тогда тысячи — драйвера от старых версий Windows или с ошибками, например, такие «уязвимости ОС» крайне часто «обнаруживают». Почему-то правда вендор патчи не выпускает, видимо, скрывает Правду.

Ещё можно вообще написать программу, которая допустим будет под себя выделять всю оперативку и грузить все ядра процессора на 100% — скорость работы системы тогда уменьшится, это определённо уязвимость, да. Ну или ту, которая будет громкость на нуль выставлять раз 15 в секунду — звука не будет, значит, в звуковой подсистеме Windows — критическая уязвимость.

По факту же, некачественный код сафари циклится на многократном вызове NtGdiDrawStream. Т.е. название новости по сути выглядит так:

«Некорректная реализация работы с WinAPI у опенсорсного движка WebKit приводит к отказу системы».

Совет тут прост — не пользуйтесь некачественными опенсорсными поделками.

Реклама
Критическая уязвимость Windows 7 x64: BSOD и компрометация системы

Критическая уязвимость Windows 7 x64: BSOD и компрометация системы: 47 комментариев

  1. scrgl:

    Забавно, что сегодня этот же автор опубликовал информацию про «уязвимость в php», которая на поверку оказалась еще большей чушью.

  2. opiumtm :
    Самый простой пример: поскольку нет квотирования дискового пространства в клиентских версиях Windows, можно тупо засрать весь жёсткий диск мусором даже будучи из-под юзера с правами на запись только в свою хоум-директорию. И устроить тем самым «отказ в обслуживании».

    Это просто к вам еще не завезли. Ожидайте — скоро будет

  3. opiumtm :
    Это вообще проистекает в т.ч. из того, что в Windows (пока что) не сделали квотирование по расходу ресурсов для каких-либо процессов или пользователей – управляюется всё только на уровне прав доступа.

    Ога, уже 13 лет как не реализована

  4. Cookie_Monster:

    Ruslan V. Karmanov :
    В состав айпишника входят 4 октета, плюс 3 точки, итого 35 бит

    Я считаю, что представлять точку как 1 бит это расизм.
    Нужно как минимум так:

    char dot = ‘.’;

    Так что, 4 октета плюс 3 байта на точки.

    1. Надо не забывать одного из преимуществ СПО — того, что в Полностью Свободных Октетах может быть сколько угодно Полностью Свободных Бит, в которых, в свою очередь, может как быть, так и не быть информации. Хотя, конечно, если информация под GPLv3, то она там есть. Она — в смысле GPLv3, конечно.

      1. Cookie_Monster:

        Вообще, я думаю, свободный айпишник должен всегда быть идеологически верен. Поэтому предлагаю такую структуру. Каждый айпишник помимо точек включает в себя какой нибудь нердовский ASCII-арт, типа:

        Дополнительно, в конце каждого айпишника прилагается полный текст GPLv3 в ANSI кодировке:
        http://www.gnu.org/licenses/gpl.txt

        Это все должно передаваться с КАЖДЫМ айпишником. Иначе свободы никакой по сути и нет.

        1. Это явно будет IPvGPL3. Страшный протокол вообще без стандартов. Всё надо допиливать, потому что ничего не работает by design. Каждая сторона придумывает произвольные форматы адресов, заголовков пакетов, и обвиняет другую в перманентной криворукости. Интернета нет, потому что из 10 роутеров 2 патчатся, на 3 идёт переустановка Правильного Дистрибутива на Более Правильный Дистрибутив, ещё у одного найдена уязвимость в кедах и поэтому не опознаётся сетевуха (ну, разработчики решили такую зависимость сделать), ещё один передаёт всё в Unicode, а штульман ещё не решил, тру это или нет, ну а оставшиеся втихомолку подняли Ethernet и пихают друг другу кадры с одинаковыми маками, удивляясь, почему не работает роутинг, ведь данные-то по сети ходят. RFC отменены, потому что они НЕ НУЖНЫ, ведь каждый не-криворукий-за-три-минуты-на-скрептах-может-сам-всё-априори-идеально-сбацать. IPv4/6 заочно обосраны вида:

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

          1. Cookie_Monster:

            Это охуенный протокол. Меня всегда в протоколах напрягало отсутствие свободы. Какие-то «стандарты» и прочая хуйня, вздохнуть негде. Сразу видно, что эти стандарты придумывались офисным быдлом неосиляторами хомячками.
            В случае с IPvGPL3, придется у редхэта поддержку для айпишника покупать. 500 баксов в год и они дают комплект скриптов на питоне, имя и пароль для доступа в форум и присылают по почте красный страпон. В принципе жить можно, за свободу надо платить. А если бабок на поддержку нет, то можно создать свой айпишник. Просто форкнуть проект на Гитхабчике и поменять всё, как душе угодно.

        2. > Это все должно передаваться с КАЖДЫМ айпишником.

          Штульман пару лет назад что-то такое предлагал на полном серьёзе про JavaScript. Типа а вдруг на сайт зайдешь, а там НЕШВАБОДНЫЙ ЖАВАСКРИПТ?!?!?!

          1. Cookie_Monster:

            Да, помню была такая тема. Он вроде отрыгивал на тему того, что иногда javascript передается в нечитаемом виде, а это, по сути, не намного хуже холокоста.

            Представил себе такую сцену. Сидит в офисе блондинка секретарь, открывает IE, чтобы проверить контактик и тут вылетает диалоговое окно:

            “Внимание! Вы хотите загрузить нечитаемый вариант кода javascript?”

            Блондинка думает и решает, что не хочет, потому что она свободный человек, а не быдло тупое. Жмет на кнопку “Нет” и тут вылетает второе окно:

            “Вы хотите загрузить этот код в СВОБОДНОМ читаемом виде?”

            С довольным лицом она нажимает “Да”, краем глаза поглядывая на фото молодого Столлмана, стоящее в рамке на столе. Вылетает новое окно с кодом. Блондинка пробегает глазами по коду, замечая пару неэффективных и неэлегантных моментов:

            “Ой, а зачем тут было весь список копировать, ведь можно было все это сделать in-place! А это что за хрень? Ох, ну и ебанутый же язык javascript. Ненавижу динамическую типизацию. Лучше бы сделали вывод типов по Хиндли-Милнеру!”

            Закрывает окно, убедившись, что ничего странного в коде не происходит и что ее свобода не уничтожена.

            И это нужно повторять для каждой страницы.

  5. Cookie_Monster:

    Руслан, я когда-то давно, еще в Spaces, читал ваш пост про случай в офисе, когда админ не смог настроить оборудование(вроде там петля какая-то получилась) и в результате свалил всё на старость оборудования. Плюс я помню, что вы писали, что собеседовали много народу. Было бы интересно, если бы вы написали пост про подобные случаи и про «выдающихся» кандидатов. Всегда интересно такое почитать.
    Вот примерчик:
    http://lj.kraslan.ru/users/chiffa/66236.html

  6. 123456qwertyu :

    Большое спасибо за ответ. Откровенно говоря, даже не ожидал такого объёма.

    > ну, помнишь, на хабре писали…
    Кстати, почему бы вам не транслировать свой блог в хабр? Там есть вменяемые люди, но практически нет вменяемых Windows-специалистов. А они бы пригодились: блог MS там уныл, к сожалению. Или ваше презрение к хабру столь велико, что из принципа «свет в массы» не понесёте?

    > его разработчики не учитывали гайдлайны для
    Ох, это вы специализированный софт, наверное, редко видите. Всякие там системы программирования промышленных железок или там расчёта химической стойкости. Какие гайдлайны, там подчас до сих пор пути к файлам данных программы хадркодятся. Ну то есть должна софтина стоять в c:\softina – и хоть тресни. А банк-клиент, взлетающий только под админом с выключенным UAC вас бы, наверное, в кому ввёл… Я, кстати, не вру: просто запуска от администратора не хватало, никакие ухищрения не помогали, и только потушенный UAC позволил говнософту запуститься. В инструкции об этом было ноль, но техподдержка на голубом глазу заявила, что это by design, и что «нормальные люди это говно сразу после установки тушат». Если хотите, даже название банка завтра точно узнаю, хех. А вы про гайдлайны NT6… их, кажется, разве что сама MS соблюдает, плюс полтора прочих вендора.

    > Потом расписал механизм атаки, и всё – в каменты и почту потекли ручьи слёз «ты всё врёшь я хакир я ламанул всех рибят в классе».
    Поражаюсь… а смысл это писать вам, если сам знаешь, что никого не ломал? Я бы так даже в школьные годы не подставился…

    От себя благодарю за ЕМЕТ – увы, не знал про эту утилиту.

    На хабре слабая в техническом плане аудитория, там неинтересно. Те же статьи по сетевым вопросам — ну, нахуй мне там сидеть, там раз в день пишется статья на тему «Привет! Я первый раз настроил айпишник и спешу с вами поделиться! В состав айпишника входят 4 октета, плюс 3 точки, итого 35 бит! Ой, 36, конечно, система-то двоичная!». Я там устану быстро. Ещё один робот, плюсующий всё за Apple, планете не нужен.

    Специализированный софт я вижу часто, это никак не отменяет, что гайдлайны надо выполнять. Классикой СПО же является быдлокодерство — когда «вроде сканпелировалось, вроде подожглось, вроде как дышит, значит идеально работает, мы ж гении». В результате при выходе каждой новой версии программа бездумно переканпелируется, пока в очередной раз тупо не грохнется прямо на старте. Тогда туда лезут и видят чудовищный 16-ти битовый код, отсутствие всякой «ненужной многозадачности» и прочие прикольные штуки, и на неё просто забивают. Через 3 месяца в форуме поддержки программы будет мегадиалог

    — чё, забили?
    — да, походу виста эта ёбаная… говно нахуй… не работает ничего, индусы сраные черти чё накрутили…

    На этом очередной мегапрорыв СПО будет торжественно заброшен, потому что Microsoft очень плохой. Ведь работающий в Windows 95 трюк с чтением чужой области памяти совсем не работает в висте, вот гады понапридумывают, лишь бы поднасрать гениям от СПО.

    EMET сейчас абсолютный musthave, его надо хорошо знать:

    http://kb.atraining.ru/new-emet-2-1/

    Ну и включать под ним всё ПО, которое найдётся — включая содержимое, допустим, /system32.

  7. 123456qwertyu :

    Я сам это понимаю и с этим не спорю. Тут народ от хозяина журнала очень уж ответа на вышеприведённое хочет, видите ли, а я согласился стать, хм, одноразовым туннелем через премодерацию.

    С премодерацией тут просто — от новых блочится первая запись, плюс можно умудриться привести более 5 ссылок и тогда вообще в spam попасть. Чтобы время от времени выдавать экстракты про «пердак зашей быдло хуй», такое надо не выпускать в обычное время, иначе нормальные люди, пробежав глазами каменты, просто удивятся смыслу мероприятия. Всегда будут туповатые школьники-линуксоиды, но смысл выпускать из бана откровенный трэшак я не вижу. Если ребёнок недавно открыл для себя слово «хуй», он может найти кучу мест, где сможет сладострастно печатать оное, а я дядька скушный в этом плане, я матом давно разговариваю в необходимых для этого ситуациях, притом свободно и достаточно легко. Сублимация малолеток не является задачей этого блога. Если у людей есть технический вопрос или комментарий по существу — все их комментарии сюда попадают. Если нет ничего кроме «ты бля ёба купил баллмер тебя ты ему хуй сасешь или отвечай или атсасал», то имеет смысл не писать в данный блог.

    Можно, конечно, раздуть из этого теорию заговора — мол, «у меня был такой ослепительный аргумент, что все его боятся», но это явная херня, в такое даже сами дети не верят уже, так, во имя круговой поруки «неопущеных даже вовсе» разве что ляпнуть могут. Если таковые мегааргументы есть, то люди ж их напишут, а верить «я тааааакое написал, что он разревелся и стёр в страхе, а никто другой не догадался тааааааакое написать, экий я!» можно разве что в кругу «единомышленников». Это ж разовый аргумент — ну, полгода что-ли байку про дикую модерацию Гениальных Мыслей Гениального Школьника травить? :). «Всё это время я писал ослепительно-охуенные каменты, да я его тааааааааак опустил» — ну, это ж детсад, раз можно, два, но всё время-то?

    Вон, в треде про гугл — пришлось повозить мордой по батарее одного из девелоперов гугла. Который пришёл честь фирмы отстаивать. А в криптографии — фигово, зато ему приказали костьми лечь, но абы что да написать — он и лёг. Рассказав про ультрановый RC4, ненужность TLS 1.1+, назвав Брюса Шнейера «непонятно кем в области криптографии» и то, что смена дефолтного алгоритма на более слабый является плюсом в безопасности. Ну и что, много я там помодерил? Ничего. А там человек, кстати, действительно в теме был поболее многих. И что? Интеллигентно был опущен и уехал в смирительной рубашке в гугломир гуглобезопасности.

    Поэтому про модерацию — это байки опущеных теоретиков, которым просто реально нечего по сути сказать. Они годами пишут «ололо венда отсосала», а в профессии они по нулям — сутками переустанавливают ОС да ищут Правильный Дистрибутив. Знания у них не растут, в технологиях они не понимают — сложновато для них. Термин «линуксзнания» ж это и обозначает — «да я 8 лет айпишники набивал, я что, не эксперт по сетевой ОС линукс?». Ну, в общем, да. Вот поэтому такой эксперт и будет придумывать небылицы про свои ультрагениальные секретные каменты, которых я дико боюсь. Приятно так думать этому человеку, вот и фантазирует.

  8. opiumtm :
    Ну так это и есть проблемы в безопасности. Безопасность – это не только возможность заразить и утащить личную инфу. «Отказ в обслуживании» – тоже, очень распространённый и неприятный тип атаки. Вот как раз этому типу атаки Windows весьма подвержена благодаря возможности «выстрелить в ногу» причём так, что крышу у самого Windows сносит. Самый простой пример: поскольку нет квотирования дискового пространства в клиентских версиях Windows, можно тупо засрать весь жёсткий диск мусором даже будучи из-под юзера с правами на запись только в свою хоум-директорию. И устроить тем самым «отказ в обслуживании».

    О_О. Насколько я помню, квоты на дисковое пространство в NTFS всегда были. Или у тебя «клиентская версия Windows» на ЖИР32 стоит?

    1. Были, но не включены ж по дефолту и не настроены на томе. Поэтому да, в принципе они есть, а на практике забить винт «под завязку» можно, и винда остро заболеет.

      1. Дисковые-то есть. А как же другие ресурсы — CPU, память и т.д.?
        К тому же при покупке винды OEM вместе с железом там уже всё настроено.

  9. Братюня, это йад! (: Читал с удовольствием.

    Ввязываться в ваш холивар в камментах не буду! (: Но суть уловил. Постом твоим, в целом, остался доволен.

  10. opiumtm :

    А я б тут на линагзнутых не стал кивать. То, что у них по 10 таких уязвимостей в день – и что? На них что ли равняться? Они со своей линуксправдой сидят годами с 2% рынка и наивно верят, что «линукспабеда не за горами и вендекапец вот-вот», приводя в пример «топ самых мощных компьютеров» и «встраиваемые системы», упуская из вида, что причина тут не в том, что линукс лучше всех, а в том, что его исходники доступны – т.е. производитель вполне может из говна попытаться состряпать конфетку, ну или хотя бы что-то съедобное, для решения своих узких, зависящих от конкретного железа задач – хотя там от линукса дай Бог только ядро, и то перепиленное вдоль и поперёк. Хотя я вообще слабо себе представляю, почему в embedded суют Linux, несмотря на то, что ОСРВ QNX для этих целей создана специально, её архитектура близка к абсолютной гениальности (говорю как человек, который с этой СОью работал лет 10) и рантайм-среда для неё стоит довольно дёшево (чего не скажешь о среде разработки). Впрочем, говорят что и Windows CE не плоха, но я в embedded работал только с QNX.

    Для аналогии — вполне подходит. Они ж привыкли довирать что-то в духе «раз вышел патч к венде, то он ОБЯЗАТЕЛЬНО ЗАКРЫВАЕТ СТРАШНУЮ ДЫРУ ИЗ КОТОРОЙ ПРУТ ВИРУСЫ». Хотя патч может, допустим, исправлять ошибку в переводе интерфейса IE. Вот и тут вариант соответствующий — линуксоиды-хомячки, которые по нулям разбираются в вопросах безопасности, не знают классификацию ошибок и уязвимостей, у них баг = «критическая уязвимость». Скоро можно ждать постов «мы с Васькой вчера ломанули 750 компов через вчерашнюю дырищу в венде» и подобных. 🙂

  11. theusernameisnotavailable :
    А при чем тут опенсос? Виноваты жыдомасоны с Марса. Это они кривой код прямо в мозг девелоперам надиктовали. Озорники!

    Так важно чья здесь вина?

    К томумж не совсем понимаю зачем сафари под M$Windows.
    На сколько мне известно ни одна из iToys не требует для своей работы сафари. Или я что то пропустил?

    1. Важно. Если разработчик умышленно неверно использует API, то он увеличивает стоимость поддержки и количество проблем у пользователей.

      То есть, если я напишу программу, которая будет в CTabCtrl добавлять миллиард колонок по одной, и программа будет тормозить, виноват в общем-то буду я, а не «плохое апи, которое не догадалось само всё иначе сделать». Это я должен был бы знать про то, что можно напрямую добавить сразу пачку колонок. Примеров можно подобных привести массу, суть одна — в рассматриваемоей статье с хабра применена классическая линуксправда, в частности — неверная классификация бага, который назван критической уязвимостью. То, что до сафари никто не догадался так юзать апи — отдельный приз.

      1. Ну в этом есть некая доля правды. WinApi и в самом деле местами «не фонтан», там выстрелить себе в ногу — проще простого, а про COM/ActiveX — умолчу, без бутылки не разберёшься местами. В .NET с этим всё значительно лучше, кстати.

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

          1. Ну так это и есть проблемы в безопасности. Безопасность — это не только возможность заразить и утащить личную инфу. «Отказ в обслуживании» — тоже, очень распространённый и неприятный тип атаки. Вот как раз этому типу атаки Windows весьма подвержена благодаря возможности «выстрелить в ногу» причём так, что крышу у самого Windows сносит. Самый простой пример: поскольку нет квотирования дискового пространства в клиентских версиях Windows, можно тупо засрать весь жёсткий диск мусором даже будучи из-под юзера с правами на запись только в свою хоум-директорию. И устроить тем самым «отказ в обслуживании».

  12. А при чем тут опенсос? Виноваты жыдомасоны с Марса. Это они кривой код прямо в мозг девелоперам надиктовали. Озорники!

  13. Armanx64:

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

    1. У обычной программы есть куча возможностей по приведению системы или её компонентов в нерабочее состояние. Они от этого не становятся уязвимостями.

      1. Тут тонкий момент же. Для выполнения NtGdiDrawStream в цикле не нужно админских прав и вообще каких-то особых прав доступа. То есть как минимум можно устроить «отказ в обслуживании» работая с по самые уши урезанными правами. Вот в этом и уязвимость.
        Может я и не прав, т.к. технических подробностей уязвимости не знаю, но пока выглядит примерно так.
        Это вообще проистекает в т.ч. из того, что в Windows (пока что) не сделали квотирование по расходу ресурсов для каких-либо процессов или пользователей — управляюется всё только на уровне прав доступа. А это легко позволяет сделать «отказ в обслуживании» обладая минимальными правами — просто нагружая процессор и прочие ресурсы системы, выполняя «легальные», но ресурсоёмкие вызовы системы слишком часто или неправильно. Это не ново, конечно, а классика жанра — в Unix давным-давно убивали систему fork-бомбами. То есть по идее, процесс не обладающий правами администратора не должен иметь возможности вывести из строя систему никак. Если он может это сделать — это уже уязвимость, строго говоря — и не важно, каким образом он это делает. Вот кстати поэтому многие «незначительные» дырки Microsoft помечает как «серьёзные» а то и «критические» в своих бюллетнях — это они для нас с вами незначительные, а где-нибудь на машине, управляющем атомной электростанцией или в диспетчерской аэропорта такой «отказ в обслуживании» может послужить причиной большых бед, и очередным поводом для СПО-шников радостно прокричать «РЕШЕТО!», ссылаясь на «ЭПИК ФЕЙЛ МИКРОСОВТА» (и приводить потом это как аргумент для втюхивания линагза в АЭС и диспетчерские аэропортов).

        Собственно, в общем виде (то есть не на уровне очередной заплатки для найденной в API дырки, а системно и «раз и навсегда») эта задача квотирования системных ресурсов и не решаема, кроме
        как виртуализацией процессов и/или пользовательских сессий на уровне ОС (ИМХО) — то есть выделение процессов и каких-то групп процессов в свои «песочницы» (виртуальные машины) — причём прозрачно для пользователя системы, что пока вряд ли будет сделано. Но вот так вот.

  14. xentronium:

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

    1. Дык, можно установить кривой драйвер видеокарты и, запустив игру от прав обычного пользователя, получить бсод. Уязвимостью ОС это не будет.

      1. xentronium:

        В таком случае это будет проблема драйверов видеокарты, ибо именно они (драйвера) запускаются в привилегированном режиме. В случае же из поста, судя по описанию (не имею возможности проверить), виноват win32k.sys, за который отвечает microsoft?

        Как мне думается, пользовательский код не должен иметь возможности закрешить всю систему. Никогда.

        1. Да понятно, что такое поведение, как бсод в данном случае — не есть гуд. И когда BSoD редко — это лучше, чем когда BSoD часто. Просто речь-то про то, что это «критической уязвимостью» считаться никак не может.

          Если посмотреть багтрекеры линуксового ядра, там в день бывает с десяток того, что классифицируется как локальная уязвимость подобного рода — при вызове какой-либо функции или kernel panic, или локальное повышение привилегий. Каждый раз, когда про это пишется, набегают толпы дураковатых фанатиков, крича «это несущественно, это не удаленная уязвимость, и вообще».

          Тут же ситуация зеркальная, и всё — начинается стандартная линуксправда — «любой патч и любая ошибка в венде равняются критической уязвимости безопасности через которую можно любую винду как хочешь ломануть». В процитированной статье это и делается.

          1. А я б тут на линагзнутых не стал кивать. То, что у них по 10 таких уязвимостей в день — и что? На них что ли равняться? Они со своей линуксправдой сидят годами с 2% рынка и наивно верят, что «линукспабеда не за горами и вендекапец вот-вот», приводя в пример «топ самых мощных компьютеров» и «встраиваемые системы», упуская из вида, что причина тут не в том, что линукс лучше всех, а в том, что его исходники доступны — т.е. производитель вполне может из говна попытаться состряпать конфетку, ну или хотя бы что-то съедобное, для решения своих узких, зависящих от конкретного железа задач — хотя там от линукса дай Бог только ядро, и то перепиленное вдоль и поперёк. Хотя я вообще слабо себе представляю, почему в embedded суют Linux, несмотря на то, что ОСРВ QNX для этих целей создана специально, её архитектура близка к абсолютной гениальности (говорю как человек, который с этой СОью работал лет 10) и рантайм-среда для неё стоит довольно дёшево (чего не скажешь о среде разработки). Впрочем, говорят что и Windows CE не плоха, но я в embedded работал только с QNX.

          2. Просто речь-то про то, что это «критической уязвимостью» считаться никак не может.

            На самом деле — разные весовые категории. Что бы СПО-шники ни кукарекали, enterprise-инфраструктура всё равно в большинстве своём сидит на Windows. А где не Windows, там Unix (FreeBSD тот же — который, кстати, под пермиссивной BSD-лицензией, а не под столлманутой сектантской вирусной GPL). На линуксе зато очень любят сайтеги в инторнетах хостить, от того и вопли про «ну язвимость же локальная!». И вообще — ну упадёт сайтег, ну и шут с ним. Соответственно для Windows и планка ответственности выше. Поэтому то, что для Windows — критическая уязвимость, для линагза — «а, х..ня, всё путём, чо».

      2. 123456qwertyu:

        Добрый вечер. Тут из одного холиварного зала поступил вопрос от утверждающих, что он у вас не прошёл модерацию. Не могли бы вы ответить персонально на него? Цитирую:

        А вы не различаете драйвер, работающий в нулевом кольце защиты с полными привилегиями доступа ко всем функциям ядра и железа и юзерспейсовую программу, которая по определению не должна иметь возможности уронить систему? На моей памяти такое было нормой в Win95/98, но ведь на дворе 2011-й заканчивается.

        1. darkhead:

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

          1. 123456qwertyu:

            Я сам это понимаю и с этим не спорю. Тут народ от хозяина журнала очень уж ответа на вышеприведённое хочет, видите ли, а я согласился стать, хм, одноразовым туннелем через премодерацию.

        2. Могу.

          Драйвер я различаю — притом в отличии от автора вопроса например различаю драйвера, работающие в режиме ядра, и те, которые крутятся в user mode. Т.е. его попытка «подчеркнуть контраст» лишь показывает, что он начинает довирать с первой фразы.

          То, что «по определению не должно уронить систему» — это мудрая мысль вида «хорошо, когда хорошо, и плохо, когда плохо». По определению — да. Баг в win32k.sys — это, безусловно, плохо. Но речь про то, что баг, вызывающий BSoD, выдаётся на хабре за «критическую уязвимость» (т.е. люди не понимают разницу между общим термином «баг в программе» и уязвимостью, которая vulnerability, плюс не понимают классификацию уязвимостей, сразу объявляя уязвимость критической).

          Наверное, у людей есть PoC. Есть рабочий эксплойт. Ведь это же критическая уязвимость — ну, я напомню, статус критической уязвимости имела например та, которая породила msblast. Когда была уязвима дефолтная конфигурация, притом на всех существующих на тот момент билдах NT 4.0-5.0, притом сделать нельзя было ничего, кроме как выключить DCOM (порт закрыть было нельзя, т.к. в 2000й не было вменяемого fw).

          Налицо стандартная схема опенсорсного вранья — как берёшь и читаешь security bulletin’ы линукса, коих за день бывает не один десяток, так «да это всё не уязвимости, это всего лишь local privilege escalation / remove buffer overflow / да в опциональном компоненте». А когда данная конкретная версия Safari на конкретной Win7 x64 (ради интереса можно глянуть частоту существования такой комбинации в природе) при открытии специальной страницы вызывает BSoD — так это сразу «вирусня, будет эпидемия, все винды уязвимы, все походу ломанут». Классический пример двуличности малограмотных фанатиков СПО. Отсюда и их истеричная реакция — им в очередной раз не дали соврать завтра что-то вида «говорят, уже ломают пачками серваки вчерашней уязвимостью критичной — ну, помнишь, на хабре писали…». Людям обломали стандартную шаблонную песню про «дырку в вендах», да ещё и продемонстрировали их личную неграмотность в азах безопасности — ну, было бы странно, если бы сие не вызвало такой реакции.

          Помните про «взлом через закрытый UDP-порт»? Я, каюсь, целый день любовался на опеннетовских дураковатых старшеклассников, которые хвастались «я на бывшей работе ёптачки ломанул сервак нахуй ёба, чотко ваще через дырьё в файрволе виндовом». Потом расписал механизм атаки, и всё — в каменты и почту потекли ручьи слёз «ты всё врёшь я хакир я ламанул всех рибят в классе». Сколько времени прошло? Ну и где новый slammer, который обещали на ЛОРе за три минуты на скриптах сбацать? :). Учите матчасть, она рулез.

          Замечу про сафари. Мол, «почему он сразу говно, ведь баг в win32k». Safari по качеству кода и поддержке WinAPI — один из самых слабых браузеров. Попробуйте, например, поставить EMET 2.1 и включить на exe-модуле Safari все режимы защиты (начиная с DEP и заканчивая BUR). Сафари просто не включится, т.к. его разработчики не учитывали гайдлайны для Windows 7, и для них наличие Mandatory ASLR, допустим, приводит к невозможности запуска приложения, оно просто не откроется. А это защитный функционал висты, есть он с 2006 года, он штатный и хорошо задокументированный, а сафари не умеет с ним работать сейчас, в декабре 2011 года (я вот, допустим, весь софт локально дома запускаю под EMET, для меня это весомый критерий качества ПО). Вот наглядная иллюстрация качества такой поделки. Классика жанра — несколько лет класть болт на меры по усилению безопасности в очередном ядре NT, после — виновата винда. И слёзы фанатиков — в ней же вебкит, он идеален, не может быть. Ну возьмите, запустите сами, посмотрите — сафари написан без учёта защитной специфики NT 6.0, т.е. его критерии безопасной среды — это времена XP, этой ОС больше 10 лет уже. Поэтому, коллеги, сафари — плохая, некачественная программа, и претензии к ней вполне обоснованы. Такой уровень кода, как правильно заметил автор вопроса, недопустим в 2011 году. Вы ж когда вручную ставите драйвера от какого-нибудь сканера, вышедшего в 2003 году, которые сделаны для XP, и ставите на x64 семёрку — вы разве удивляетесь, что они могут не заработать или кинуть систему в BSoD? Ну а про что тут речь тогда?

          Вот и получается — сафари — небезопасный софт, а если его на Windows 7 x64 запускать, ещё и систему уронить может. Не пользуйтесь сафари, есть более безопасный и надёжный IE. И учите классификацию уязвимостей, она несложная, если бы все ошибки назывались уязвимостями, и сразу критическими, то тогда надо признать, что в линуксе в 2011 году уже несколько тысяч критических уязвимостей. Только тогда надо придумать какое-то слово хитрое, чтобы всё ж отличать одно от другого. Допустим, когда в линуксе очередной remote buffer overflow — это «не-уязвимость-совсем-даже», а когда в Windows Media Player баг при открытии библиотеки (неверно выводятся названия ряда национальных алфавитов), то это «дыра-в-серверной-винде». Только не надо тогда ждать, что кто-то будет серьёзно воспринимать оные опусы фурункулёзного мозга слуг Штульмана и Ко. Нет, пардон, это ж СПО — тут будет Штульмана и ^Ко(_Ко)*$, так точнее. 🙂

          1. 123456qwertyu:

            Большое спасибо за ответ. Откровенно говоря, даже не ожидал такого объёма.

            > ну, помнишь, на хабре писали…
            Кстати, почему бы вам не транслировать свой блог в хабр? Там есть вменяемые люди, но практически нет вменяемых Windows-специалистов. А они бы пригодились: блог MS там уныл, к сожалению. Или ваше презрение к хабру столь велико, что из принципа «свет в массы» не понесёте?

            > его разработчики не учитывали гайдлайны для
            Ох, это вы специализированный софт, наверное, редко видите. Всякие там системы программирования промышленных железок или там расчёта химической стойкости. Какие гайдлайны, там подчас до сих пор пути к файлам данных программы хадркодятся. Ну то есть должна софтина стоять в c:\softina — и хоть тресни. А банк-клиент, взлетающий только под админом с выключенным UAC вас бы, наверное, в кому ввёл… Я, кстати, не вру: просто запуска от администратора не хватало, никакие ухищрения не помогали, и только потушенный UAC позволил говнософту запуститься. В инструкции об этом было ноль, но техподдержка на голубом глазу заявила, что это by design, и что «нормальные люди это говно сразу после установки тушат». Если хотите, даже название банка завтра точно узнаю, хех. А вы про гайдлайны NT6… их, кажется, разве что сама MS соблюдает, плюс полтора прочих вендора.

            > Потом расписал механизм атаки, и всё – в каменты и почту потекли ручьи слёз «ты всё врёшь я хакир я ламанул всех рибят в классе».
            Поражаюсь… а смысл это писать вам, если сам знаешь, что никого не ломал? Я бы так даже в школьные годы не подставился…

            От себя благодарю за ЕМЕТ — увы, не знал про эту утилиту.

Обсуждение закрыто.