[Перевод] Взлом на борту самолёта
На протяжении 5 лет, которые я работаю в IOActive, мне довелось побывать во многих интересных местах за тысячи километров от дома. Поэтому полёт для меня стал обычным явлением. Можно подумать, что в этом нет ничего особенного, но не для меня, как человеку который боится летать. Не сказать, что мне удалось избавиться от этой фобии; после дюжины полётов ладони всё ещё потеют при взлёте, но я с этим смирился, даже, можно сказать, мне иногда нравится летать… и взламывать системы прямо с борта.
В преодолении страха мне помогло изучение функциональности самолёта и привыкание к шуму, скачкам и турбулентности. В этой статье будет рассказано как работают бортовые системы, а в частности, о Бортовой Развлекательно-Информационной Системе (БРИС), разработанной Panasonic Avionics.
Два года назад, пока я летел из Варшавы в Дубай, я решил немного поиграться с БРИС. И когда я кликнул в определённое место в одном из верхних углов экрана, увидел следующие данные отладчика:
----
Interactive: ek_seatappbase_1280x768_01.01.18.01.cram
Content: ek_seatappcontent_1280x768.01.01.8.01.cram
Engine: qtengine_01.14.0.01.squash
LRU Type: 196 2
IP: 172.17.148.48
Media Player Auto Popup Enabled: false
-----
После прилёта в Дубай и поиска ключевых слов в Google, я нашёл в открытом доступе сотни прошивок для различных авиалиний.
Очевидно, что прошивки активно обновляются, поэтому удастся получить доступ к актуальной, которая установлена на борту. На сегодняшний день, файлы всё ещё там, но доступ к списку каталогов закрыт.
Ниже приведён список авиалиний для которых мне удалось найти прошивки:
- Emirates
- AirFrance
- Aerolineas Argentinas
- United
- Virgin
- Singapore
- FinnAir
- Iberia
- Etihad
- Qatar
- KLM
- American Airlines
- Scandinavian
Базовая архитектура БРИС следующая: Блок Управления Системой (БУС)
Это сертифицированный бортовой сервер. Пассажиры, как правило, могут следить в режиме реального времени за текущими параметрами полёта, такими как скорость ветра, широта, долгота, высота и температура за бортом. БУС получает всю эту информацию через шину авионики (обычно это ARINC 429) и затем Информационные Терминалы Кресла (ИТК) могут получить к ней доступ через Ethernet.Информационный Терминал Кресла (ИТК)
Это сменный линейный блок и с помощью него пассажиры имеют доступ к пассивному и активному функционалу БРИС, таким как просмотр фильмов, покупка товаров, чтение статей или доступ в интернет. Проще говоря это вмонтированное устройство с сенсорным экраном. Более новые модели используют Android, в то время как устаревшие, в основном, Linux.
Снятие ИТК — это Rave AIX, а не модель от Panasonic Avionics (источник)Персональное Управляющее Устройство (ПУУ)
Это опциональное устройство. С помощью ПУУ можно управлять ИТК и, как будет показано ниже, он также может работать как терминал для кредитных карт. Панель для бортпроводников
Стюардессы и другие члены экипажа с помощью данной панели могут управлять такими функциями авиасудна, как свет, приводы (включая кровати), объявления пассажирам, бортовые покупки или же система вызова персонала. Система Управления Кабины [Cabin Management System] обычно интегрирована с БРИС. Panasonic Avionics это делает с помощью Глобальных Коммуникационных Служб [Global Communications Services], обеспечивая общий функционал для простых операций из кабины экипажа (см. тут). Приложение для экипажа CrewApp доступно из панели для бортпроводников. БРИС от Panasonic
БРИС от Panasonic: устаревшие 3000/3000i и новые XSeries eFX, eX2 и eX3 (на Android). Аппаратная составляющая может варьироваться, но по архитектуре они схожи и у них есть общие характеристики.
Больше информации по БРИС от Panasonic можно найти на их сайте.
Эти системы можно кастомизировать, что позволяет авиалиниям устанавливать БРИС в соответствии с политикой авиакомпании, в то время как кодовая база почти вся одинаковая.
Проанализировав прошивки, мне не совсем удалось узнать способ загрузки данных на земле. Обычно контент обновляется через Wi-Fi ad-hoc-сети, либо через высокоскоростное мобильное подключение как только самолёт приземляется. БРИС от Panasonic же в основном обновляется через «Флоппинет». Связь со спутниками или мобильные сети в полёте доступны, но в большинстве случаев, БРИС работает автономно, с предзагруженным контентом. Обычно БРИС даже не проверяет кредитные карты в режиме реального времени.
БРИС от Panasonic Avionics придерживается клиент-серверной архитектуры с тремя главными компонентами:
- CrewApp
- SeatApp
- Backend
Я нашёл несколько версий CrewApp и SeatApp по вышеуказанной странице. Когда я гуглил ключевые слова, мне так же удалось найти бэкенд в открытом доступе на разный сайтах .aero. Не смотря на то, что в них есть фирменные и уникальные данные от авиалиний, кодовая база в них от бэкенда Panasonic.
Невозможно охватить все варианты БРИС в одной статье, так как авиалинии расширяют и адаптируют фреймворк, поэтому дальше речь пойдёт о конкретных функциях.
Перезагрузка SeatApp на Linux
Файлы прошивок (в этом случае программа, которая запускается на устройстве не поддерживаемым пользователем), которые я проанализировал не содержали систему целиком, а только части которые должны быть обновлены. Это печально, т.к. мы бы смогли узнать больше информации о работе этих устройств, но всё же некоторые интересные моменты можно прояснить и с помощью доступных файлов.
СкриптыPanasonic Avionics разработало свой декларативный скриптовый язык программирования для взаимодействия с пользовательским интерфейсом и функциями главного приложения. Он поддерживает десятки команд и обладает хорошим функционалом.
Пример кода core/startup.txt
Реверс-инжиниринг основного бинарного файла (airsurf) позволит узнать как работает парсер таких скриптов. Для демонстрации давайте посмотрим на #define.
Скрипт обрабатывается построчно и когда парсер видит конструкцию #define, пытается разобрать его в sub_80C2690.
В этой функции могут быть определены 5 типов: flash, text, draw, timer, и value.
Первая строка скрипта содержит #define со значением [value], посмотрим как она обрабатывается.
В первую очередь строка парсится и извлекается наименование define. Затем парсер проверяет число ли (ниже голубой блок) то значение, что находится после (ниже зелёный блок).
Если значение не число, то оно сравнивается с различными переменными и если совпадение найдено, то заменяется его значением.
Если же значение число, то пара наименование/значение добавляется в глобальный массив define (голубой блок снизу)
Для команды cmd, бинарник вызывает нужную функцию из таблицы cmd и передаёт аргументы.
Тут можно найти некоторые интересные функции, например, ту которая читает информацию о кредитной карте после задействования её в терминале.
Данные, полученные с кардридера (/dev/ccr), парсятся, распечатываются и сверяются.
Можно найти и обычные файлы, такие как shell скрипты, файлы конфигураций (содержащие вшитые учётные данные), базы данных, ресурсы и библиотеки.
В одном из твитов где была снята перезагрузка БРИС от Panasonic я увидел следующую информацию. Файлы приложения SeatAppBase те же, что мы и рассматриваем.
loadlru.h
В новых версиях БРИС X, Panasonic перешёл на Android и соответственно старые скрипты .txt заменены на подход с использованием QT QML:
В бекенде используется PHP. С первого взгляда бросаются на глаза уязвимости.
Изображение сверху относится к функционалу чата между креслами, где пассажиры могут посылать сообщения друг другу. Вам не будет сложно догадаться, что же тут не так, и это не единственная проблема.
Следующие видео демонстрируют использование уязвимостей, но без нанесения ущерба.
- Обход проверки кредитной карты
- Доступ к файлам (например /dev/random)
- SQL инъекция
Потенциальные угрозы
Так как же далеко может зайти злоумышленник используя такие уязвимости в БРИС? На этот вопрос нет однозначного ответа, но мы попробуем рассмотреть некоторые общие случаи не специфичные для определенного производителя системы, а сделаем мы это рассмотрев больше аспектов в работе системы.
По стандарту DO-178B, который определяет спецификации операционных систем реального времени в авиации, БРИС должен находиться между уровнями D и E. БРИС от Panasonic Avionics сертифицирован на уровне E. Это означает, что даже если вся система даст сбой, это либо вообще ничего не изменит либо создаст некоторые неудобства пассажирам.
Также хотелось бы отметить, что информационная сеть авиасудна разделена на 4 части, по типу данных которые в них обрабатываются: развлечение пассажиров, устройства пассажиров, информационные службы авиалинии и управление самолётом.
Управление самолётом должно принадлежать одноимённой части сети, который должен быть физически отделён от части пассажирской, но это не всегда так. В некоторых суднах используются оптические информационные диоды, в то время как другие отдают предпочтение модулям шлюза. Это означает, что потенциальную угрозу нельзя исключать, пока связь между двумя частями существует.
БСИД может оказаться вектором атаки. В некоторых случаях такой вид атаки будет невозможен, благодаря изоляции систем, но в других потенциальная угроза остаётся ввиду физической связи систем. IOActive успешно скомпрометировало шлюзы других транспортных средств. Грань между пассажирской и управляющей системами сильно определяется благодаря конкретным устройствам, программному обеспечению и настройками авиасудна.
В 2014 году мы опубликовали серию уязвимостей в устройствах спутниковой связи (SATCOM), включая бортовые терминалы. Больше всего беспокоит то, что эти устройства используются в различных областях системы, что позволяет злоумышленнику использовать оборудование для получения доступа к авионике через скомпрометированную БРИС.
Со стороны IT, взлом БРИС означает, что злоумышленник может управлять информацией, которую получают пассажиры на борту. Например, можно изменить данные о полёте такие как высота или скорость и показывать фиктивный маршрут самолёта на карте. Злоумышленник может скомпрометировать и приложение CrewApp для персонала и контролировать свет или приводы в классах выше. Если эти угрозы совместить, то можно поставить пассажиров в замешательство.
Получение персональной информации, включая данные о кредитной карте, тоже имеют место быть, если бэкенд, который иногда предоставляет специфичную информацию о частоте перелётов или VIP членства, настроен не должным образом.
С другой стороны, Wi-Fi сеть может быть настроена надёжно, без каких либо угроз для безопасности.
Этим хотелось бы сказать, что на наш взгляд, такие системы не смогут выдержать серьёзную атаку от опытного злоумышленника. Авиакомпании должны быть бдительными, когда дело касается их БРИС, обеспечивая тщательно разделённые системы и проверять каждый аспект безопасности поэтапно. Ответственность за безопасность не лежит на плечах только лишь разработчика БРИС, производителя судна или оператора. Каждый играет свою важную роль в безопасности окружения.
Ответственность за раскрытиеМы сообщили о найденных уязвимостях Panasonic Avionics в марте 2015. Мы надеемся, что времени было достаточно для закрытия найденных уязвимостей, по крайней мере самых очевидных. Тем не менее, мы думаем трудно сказать что все эти проблемы решились в области, где участвуют разные авиалинии и сотни версий продукта.
Комментарии (1)
22 декабря 2016 в 17:58
0↑
↓
Зарубежные авиакомпании имеют практику вносить пассажиров в чёрные списки. Как бы автору не перекрыли доступ на авиасудна после этой публикации…