С 21 по 25 августа в Германии проходил крупнейший хакерский фестиваль Chaos Communication Camp.
Он организуется каждые четыре года, и, как в предыдущий раз, площадкой для проведения стал индустриальный парк Ziegeleipark Mildenberg. Это крупная старинная фабрика по производству кирпичей с узкоколейной железной дорогой и речным портом, которая превращена в музей под открытым небом. И в этом удивительном месте на пять дней собрались более 5000 хакеров со всего света, которые неузнаваемо преобразили Ziegeleipark.
Предлагаю вам обзор докладов CCCamp 2019, которые мне особенно понравились.
1. spispy: SPI flash device emulation
Траммел Хадсон (Trammell Hudson) рассказал о своем проекте spispy, в рамках которого разрабатывается открытое аппаратное и программное обеспечение для эмуляции SPI flash.
Современные компьютеры хранят прошивку (firmware) во flash-памяти, доступной по шине SPI. Для того, чтобы записать прошивку в эту flash-память, используется программатор. Но операция записи занимает значительное время, что причиняет разработчикам прошивок огромные неудобства. Для того, чтобы избавиться от этой проблемы, существуют эмуляторы SPI flash. Проект spispy — это открытый эмулятор SPI flash с FPGA на борту.
Помимо удобства для firmware-разработчиков данный инструмент дает новые возможности исследователям безопасности прошивок. В частности, Траммел и Питер Бош (Peter Bosch) использовали его для поиска и эксплуатации уязвимостей типа Time-of-check to time-of-use (TOCTOU) в реализации Intel Boot Guard.
Запись выступления:
2. A mobile phone that respects your freedom
Проект Librem 5 хорошо известен в узких кругах. В рамках этого проекта создается смартфон, который в идеале должен сохранять приватность своего владельца и давать ему полный контроль над встроенными средствами связи и программным обеспечением. Николь Фербер (Nicole Faerber) из Purism рассказала о ходе проекта, который длится уже два года и еще далек от завершения.
Мне был особенно интересен обзор основных технических решений Librem 5:
- стремление иметь полностью свободное ПО и неизбежные ограничения из-за прошивок для беспроводных чипов,
- выбор аппаратных компонентов устройства и решения по изоляции CPU от средств передачи данных,
- выбранный путь развития экосистемы приложений для их операционной системы.
Запись выступления:
3. Anykernels meet fuzzing
Отличный доклад по моей любимой теме — о поиске уязвимостей в операционных системах.
Докладчик удивил: вышел выступать в маске Бэтмена. Он рассказал о технологии RUMP anykernel, которая позволяет исполнять части кода ядра NetBSD в пользовательском пространстве. Это позволяет фаззить код NetBSD без дополнительных средств в пространстве ядра.
В качестве примера Бэтмен показал, как он смастерил фаззер сетевого стека NetBSD с помощью RUMP. Кстати, этот проект появился еще до того, как в фаззер syzkaller была добавлена поддержка BSD.
Запись выступления:
4. Tales from Hardware Security Research
Очень хорошее выступление по безопасности аппаратного обеспечения.
Докладчики поделились своим опытом исследования безопасности встраиваемых систем — типовыми задачами, трудностями из-за закрытых спецификаций, особенностями координированного разглашения информации об аппаратных уязвимостях.
В частности, исследователи раскрыли несколько методов обхода защиты от считывания прошивок. В докладе они весело рассказали, как сообщили об этих уязвимостях производителям микроконтроллеров, и что из этого всего вышло.
Запись выступления:
5. Taking Bluetooth lockpicking to the next level
По-настоящему зрелищное выступление про взлом замков с Bluetooth LE. И если в прошлый раз исследователи расправились с "умными" навесными замками, то сейчас они взялись за взлом отельных систем доступа.
Оказывается, дорогие отели в Лас-Вегасе предлагают новый сервис — доступ прямо в номер по онлайн-бронированию. Клиенту теперь не надо ждать у стойки регистрации: бронь в приложении на смартфоне позволяет разблокировать лифт и открыть "умную" дверь в свой номер. А смартфон обменивается данными с этими устройствами, связанными в единую систему доступа, с помощью Bluetooth LE.
В своем докладе исследователи рассказали о приемах и инструментах, которые они разработали в ходе перехвата BLE-трафика и обратной разработки протокола обмена данными. Как результат — взлом номера на 37-м этаже шикарного отеля. Это было эффектно.
Запись выступления:
6. Introduction to Mix Networks and Katzenpost
Сложный доклад для любителей криптографии. Тема — смешанные сети (mix networks).
Концепция появилась еще в начале 80-х годов прошлого века. Смешанные сети обеспечивают анонимизацию за счет многослойного шифрования и маршрутизации через цепочку независимых узлов (mixes). На базе этой идеи построена технология Tor. Однако оригинальные смешанные сети обладают особыми свойствами, которые позволяют защищаться от некоторых типов атак, которым подвержена сеть Tor.
В докладе объясняются исторические причины и недостатки, из-за которых смешанные сети в свое время потеряли популярность, а также представлена улучшенная смешанная сеть Katzenpost.
Запись выступления:
7. What you see is not what you get — when homographs attack
Организация ICANN (Internet Corporation for Assigned Names and Numbers) давным-давно предоставила возможность использовать юникод в доменных именах. Но вместе с этой функциональностью на свет появился целый класс атак, названный IDN homograph attacks. В докладе рассказывается о том, что это такое, а также демонстрируются атаки данного типа в Signal, Telegram и Tor Browser. Интересная особенность: некоторые вендоры не желают предоставлять технические средства против homograph attacks, называя их социальной инженерией.
Запись выступления:
8. From DC to RF...starting where?
Этот доклад будет интересен тем, кто интересуется схемотехникой. Крис Гаммель (Chris Gammell) рассказал о своем профессиональном пути от начинающего схемотехника до специалиста по радиотехнике. Он постарался компактно изложить основные особенности и отличия высокочастотных сигналов. Рекомендую посмотреть это выступление тем, кто хочет сделать свой первый шаг в создании устройств с функцией беспроводной передачи данных.
Запись выступления:
9. Arch Linux Meetup
Как сказал мне один из организаторов, основная ценность Chaos Communication Camp не в лекциях и докладах, а в возможности лично пообщаться со специалистами в твоей предметной области.
Например, у меня была возможность поучаствовать во встрече разработчиков Arch Linux. На ней было несколько докладов от мейнтейнеров проекта и затем свободное общение. Я с удивлением узнал, что этот довольно популярный дистрибутив живет стараниями своего сообщества и не имеет корпоративной составляющей.
Еще я выяснил, что Arch Linux поставляет hardened ядро, конфигурация для которого составляется с помощью моего проекта kconfig-hardened-check. Мейнтейнеры также изъявили желание поставлять kconfig-hardened-check как пакет в составе Arch. Для этого я ввел в проекте версионирование.
10. Architecture of secure IoT devices
В этом докладе был представлен комплексный подход к обеспечению безопасности IoT-платформы:
- выбор аппаратного обеспечения,
- построение цепочки доверенной загрузки,
- изоляция программных компонентов системы,
- обеспечение доверенности обновления и восстановления системы,
- защита обмена данными между устройством и IoT-инфраструктурой.
Это интересный набор идей, на который стоит обратить внимание разработчикам встроенных систем и специалистам по ИБ.
При этом, на мой взгляд, докладчик упустил такие аспекты, как самозащита ядра Linux и средства повышения безопасности пользовательских программ. (Я обозначил это на сессии вопросов и ответов в конце выступления.)
Запись выступления:
11. Making video games in a weekend
Увлекательный доклад про необычный способ проведения досуга — Game Jam. Люди поодиночке или в небольших группах за выходные создают маленькие видеоигры на заданную тематику. Себастиан Морр (Sebastian Morr) — разработчик игр и pixelart-художник — интересно поделился своим немалым опытом участия в таких соревнованиях.
Хочу отметить, что лично я очень благодарен Себастиану за эту его работу. Постер висит у меня над рабочим столом, радует сердце и напоминает времена, когда Chaos Communication Congress проводился в Гамбурге.
Запись выступления:
12. «Service Point» The Display
Замечательный доклад про то, как парни из берлинского хакспейса CCC прокачали светодиодную доску объявлений. Это здоровенный монохромный дисплей, какие висят на железнодорожных станциях и в аэропортах.
Петер Штуге (Peter Stuge) и Феликс Никлас (Felix Niklas) рассказали весь путь от реверса оригинальной аппаратной и программной начинки устройства до его финальной архитектуры.
Множество аппаратных, программных и даже механических доработок и хитростей — очень рекомендую посмотреть это выступление.
Вдобавок для живой демонстрации докладчики установили свое детище на сцене и крутили на нем видеоролики.Тяжеленная штука (я потом помогал спускать ее со сцены).
Запись выступления:
13. Visualization of networks using physics
Оригинальный доклад про визуализацию больших графов.
Докладчик проводит параллель между сложными графами и физическими объектами — снежинками, мыльными пузырями, кристаллами и молекулами. И для того, чтобы расположить вершины и ребра так же красиво, как в природных объектах, исследователь применяет к ним физические законы. Он эмулирует физическое взаимодействие между частями графа и позволяет системе перейти в конфигурацию с минимальной энергией, где проявляется симметрия, сильносвязные компоненты и другие неожиданные эффекты.
Запись выступления:
Следующий CCCamp будет только через четыре года...
CodeRush
SPISPY отличный проект, конечно, но пока что до коммерческих решений еще далеко довольно. Идея использовать DRAM для хранения прошивки интересная, но они с ним мучаются сейчас и в будущем продолжат мучаться дальше.
Тем временем, вот этому эмулятору скоро исполнится 10 лет, он отлично работает все эти годы в любых ОС (через эмуляцию USB Mass Storage), умеет логировать операции в файл на самом себе, и стоит не сказать, чтобы очень дорого.
Тем не менее, я очень рад, что появляются открытые аналоги профессиональных инструментов (пусть даже они сейчас на начальном этапе), потому что от этого выигрывают все.