Pull to refresh
285
0
Николай Шлей @CodeRush

Firmware Security Engineer

Send message

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

Основная теорема ИБ упрямо утверждает примерно следующее: "стоимость имеющей смысл защиты должна быть ниже, чем стоимость защищаемой ей информации", она же "стоимость обеспечения несанкционированного доступа к информации должна быть выше стоимости этой информации", она же закон Склярова. Так вот, еще до того, как идти городить матмодель и защищать ИоТ-устройства (от кого?), надо сначала понять, а что мы там защищаем? А надо ли?

Ну т.е. у вас вот нательный датчик, какие ценные данные он генерирует, чтобы для него делать все, что вы тут решили делать? У вас треки GPS-координат? У вас там платежные данные и банковские карты? Или может список контактов с телефона подтянутый?

Дальше, поняли что защищаем, теперь надо понять, от кого, и есть ли у атакующего вообще какой-либо смысл делать такую атаку. Ну т.е. если у вас на вашем ИоТ устройстве хранятся мастер-ключи к супер-популярному репозиторию с миллиардом загрузок в сутки, то защищать его надо будет сильно более интересным способом (вплоть до монтирования внутрь бетонного куба и специальных ритуалов с несколькими ключами) чем если у вас там финтес-треккер, который кроме пульса и количества шагов ничего не отслеживает, и кроме телефона ни с чем не соединен.

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

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

    if (strcmp(pincode, passkey) == 0) { // Сравнение полученного пин-кода с сохраненным
        is_authenticated = true; // Установка флага аутентификации в случае успеха
    }

Сравнивать что-то как строки - это прямо классика, в свое время так Intel пролетел с AMT, Nintendo с шифрованием игр для Wii, имя им легион.

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

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

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

На Windows Task Manager

А вы промотайте немного дальше горизонтальный скролл справа, и увидите, что конструктора там всего два, и в оба передается строка. Другие два вызова - вызовы оставшихся от деструкторов _M_dispose().

Держу кулаки за P2723 Zero-initialize objects of automatic storage duration, надеюсь что а) его таки примут, и б) в стандарте он окажется раньше ишачьей пасхи.

Стараюсь не бросать cRPG, потому что мне они с детства нравятся (это один из двух любимых жанров, второй - стратегии реального времени, которых теперь делают еще меньше). В данном случае доиграл успешно и в Kingmaker, и в WotR, но если после первого прохождения той же BG3 (или BG2, или Tyranny, или D:OS 2, ...) хотелось немедленно пройти еще раз, другим персонажем, с другими результатами квестов и т.п., то по результатам прохождения Pathfinder'ов хочется только спросить разработчиков "за что вы так со мной?".

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

Игрок потратил 10 часов на то, чтобы ваши отвратительные доминошки собрать со всей карты, потом их полчаса крутить, чтобы собрать маски, потом в пирамиде этой еще два часа ничего, кроме паззлов, руками не трогать, а в результате получить одну бесполезную (даже вредную) маску, и один кристал шард, нужный только очень целеустремленным игрокам на их третьем примерно прохождении. Тот факт, что в The Last Sarkorians DLC добавили еще один шард, и теперь весь этот леденящий душу пиздец делать для вознесения всей партией больше не надо - лучшая иллюстрация того, что OwlCat сами не рады теперь своему решению добавить этот бесячий квест.

Для меня лично, при всех их остальных достоинствах, обе части Pathfinder оказались неприятными, потому что они не уважают мое время как игрока. Когда у вас в игре самый популярный мод - автоматический ребаффер, потому что заклинаний и умений огромное множество, а банальных contingency и sequencer туда не завезли, и при этом сложность боев не позволяет их прокликивать на автомате, вся игра превращается в бесконечные битвы (где нет смысла ни танковать, ни лечить, и надо тупо всех убить на втором ходу, если не получилось убить на первом), а потом в бесконечный ребафф после и перед ними. Ролевая часть мне понравилась, запредельное количество механик, целая отдельная система эпических уровней, сильно влияющих на игровой процесс - вот это все отличное, но все остальное - просто тушите свет.

В споре Арушалай против Шэдоухарт участвовать не стану, потому что Fall-from-Grace обеим даст прикурить, а игра с ней вышла на 20 лет раньше.

Ничего не стану писать плохого про уровень этой статьи, но если вы хотите почитать что-нибудь более глубокое и серьезное про BG1, BG2 и другие cRPG того времени у "широко известного в узких кругах" ветерана, и при этом вас не смущает английский язык - блог lilura1 ждет вас.

Общая рекомендация для тех, кто присматривается к серии Врат Балдура, но ещё не играл — не начинайте с BG 2. Это старая, медленная игра, ориентированная на сюжет.

Мой собственная рекомендация для тех, кто не играл, но хочет, и понимает при этом, что игровому движку 20+ лет, и потому ждать от него графических прорывов не стоит: купите BG:EE и BG2:EE на ближайшей распродаже на gog.com, соберите из них ванильную (т.е. без каких-либо других модификаций) BG:EET, и играйте уже в нее.

Игра, ставшая культовой, всё же снова пришлась по вкусу скорее фанатам RPG и DnD, нежели широким массам. Она была более направленной, не такой вариативной и открытой, как предыдущая. 

Есть мнение, что мы с вами играли в совершенно разные BG1 и BG2. Как назвать BG2 менее вариативной, если в ней больше практически всего (за исключением, может быть, огромных полупустых локаций, на которых в BG1 оригинальной даже подсветки контейнеров не было, отчего для поиска секретов требовались навыки пиксель-хантинга), квестов, классов, заклинаний, и т.п, и уровни персонажей выше заметно (и потому выбор доступных инструментов у каждого класса заметно больше). С открытостью тоже можно поспорить, но уже во второй главе в BG2 становится доступно примерно 75% контента, а в BG1 для того, чтобы попасть в титульный город, нужно было половину игры пройти.

Baldur’s Gate: Enhanced Edition (2012) и Baldur’s Gate II: Enhanced Edition (2013)

Расширенные издания классических игр, выполненные компанией Overhead Games. Внесли графические улучшения в культовые RPG, устранили ошибки и добавили новых персонажей и контент. 

Никогда про эту компанию не слышал, потому что BG:EE и BG2:EE разрабатывали не они, а канадская компания Beamdog.

Они же выпустили в 2016 году новое сюжетное дополнение к BG:EE - Siege of Dragonspear, о котором, почему-то, в статье ни слова.

Оригинальная Baldur's Gate (1998)

Использует популярный в то время движок Infinity Engine от BioWare (также является разработчиком игры)

Непонятно, как в этом предложении оказалось "популярный в то время", если оригинальная Baldur's Gate - первая игра на этом движке.

Все игры на Infinity Engine
Все игры на Infinity Engine

Именно такие, со смертельным температурным троттлингом - действительно в массе закончились, производители процессоров на x86 добавили и собственной логики для аварийного отключения, и требований к внешней логике при приближении к нему (сигнал PROCHOT# и т.п.).

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

  • процессоры с FIVR позволяют управлять практически всеми напряжениями через MSR, и при грамотном управлении способны самостоятельно и гарантировано вывести себя из строя за несколько секунд.

  • многие видеокарты для гейминга управляют питанием через VRM, доступный по SMBus. Грамотное управление им таким же образом приводит к выходу из строя видеочипа и видеопамяти за несколько секунд.

  • грамотное управление записью на SSD позволяет в кратчайшие сроки (часы) полностью выработать его ресурс, а на некоторых моделях - переполнить SMART-счетчики так, что диск перестанет определяться уже при следующей перезагрузке.

  • многократная запись в UEFI NVRAM (200-300 тысяч циклов) большой переменной полностью выработает ресурс SPI-чипа, в котором этот NVRAM хранится, после чего система либо перестанет стартовать, либо перестанет сохранять настройки.

  • несложно находимые в гугле вендорские AT-команды способны невосстановимо вывести из строя почти любые современные модемы - WiFi, BT, GSM, и т.п.

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

Для этого комментатор выше должен был бы каким-то образом получить на моем Макбуке управление, т.е. ввести там правильный пароль от sudo, использовать реальную уязвимость для локального повышения привилегий, попасть в систему из сети через реальную уязвимость удаленного исполнения кода, и т.п.

Чем это отличается от "комментатор взял у меня из рук ноутбук и некритически большим усилием оторвал ему дисплей от базы?" Чем это отличается от "комментатор проходя мимо уронил открытый ноутбук со стола, и он разбился?" Ничем, собственно, и в суд я бы на него подал исключительно за умышленную порчу чужого имущества, а не за запуск скриптов на нем под рутом, и тем более не пошел бы ругать производителя за то, что он позволяет отключить охлаждение программными методами.

Пожалуйста, не доводите безопасность до абсурда, как в известном рассказе про хакера и солонку.

Могу вам показать такой кусок говна легко - любые современные ноутбуки с хорошим звуком делают этот хороший звук путем овердрайвинга (т.е. подачи заведомо превышающей безопасные параметры мощности, но на очень короткое время, и с каскадом обратной связи, чтобы не взорвать их и не спалить) динамиков.

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

Участникам проект Asahi Linux для того, чтобы включить в этом самом Линуксе звук из динамиков на новых Маках, пришлось написать с нуля демон speakersafetyd, который следит за тем, чтобы другие участники аудио-процессинга и аудио-вывода эти самые динамики не взрывали. Вот здесь автор рассказывает, как он работает.

Надеюсь, что к защите этого человека подключатся ребята из CCC, EFF Europe и других общественных организаций, способных обеспечить нормальную юридическую защиту от подобного троллинга со стороны компании.

Для остальных компаний: вот такое вот поведение - это, наверное, лучший способ сделать так, чтобы об уязвимостях нулевого дня в ваших системах сообщали не лично вам самим, а анонимно всему интернету.

Какие ваши доказательства утверждения "несколько минут такой работы и ноутбук буквально сжигает процессор"? Сколько процессоров вы сожгли, и в каких условиях?

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

Еще раз: локальный отказ в обслуживании на устройстве в руках пользователя - это не уязвимость, и платить вам за нее закономерно никто не будет. Уязвимостью доступность системных крутилок становится только тогда, когда она выводит систему в такие закритические режимы, при которых эта система действительно теряет возможности обеспечивать защиту секретов, изоляцию процессов друг от друга и т.п., хороший пример - Plundervolt. Если же выход в закритические режимы приводит к выводу из строя вычислительного устройства (не хранилища данных, а именно вычислителя) - это не уязвимость, потому что выключеный\сломанный компьютер - это безопасное состояние.

Information

Rating
Does not participate
Location
Cupertino, California, США
Date of birth
Registered
Activity