Comments 114
Начиная вот с этого места я перестал доверять тому, что написано.
в условиях вида ввод > программа1 > сериализованные данные > программа2 потенциал инъекций существенно снижается, потому что разработчики вынуждены во время сериализации опускаться до максимально абстрактного уровня, во время работы с которым риск случайно породить скриптовый язык поверх данных снижается
В оригинале, если вы не поняли, написано, что взлом затрудняет написание на _разных языках_. Т.е. просто на разных, и все, без уточнения того, на каких именно и почему. Вы правда не видите разницы между этим (на мой взгляд, безграмотным) утверждением, и вашим, что софт пишется на надежных языках, и верифицируется? Ну т.е. вы готовы обобщить это утверждение например на софт, написанный на javascript и допустим на typescript (я тут специально выбрал два любых, чтобы довести до абсурда)?
И да, написание софта на АДЕ не затрудняет его анализ ни на грамм. Что реально затрудняет — так это скажем обсфукация, или применение других техник, которые проверяют целостность софта на разных этапах, мешая его подмене, например. Но к разным языкам это снова не имеет никакого отношения.
Так вот если они «написаны на одном языке», то у них и уязвимости похожие
Позволю себе не согласится. Ломают не язык программирования, а код, написанный на нём. Условный код
SELECT * FROM a380_pilots WHERE id = $_GET['id']
будет одинаково уязвим на любом языке
В контексте одной системы довод вполне обоснованный, сложность взлома вполне может зависеть от используемого ЯП. Но какой смысл делать упор именно на языковую дифференциацию ПО мультимедийной и бортовой систем? Почему именно ЯП, а не аппаратная архитектура, например? Да потому что рассказчик пилот, вот почему.
Насколько я знаю, всё фактически так: мультимедиа-системы скорее всего на Линуксе (но могут и быть Win-версии) и скорее всего с мультимедиа-оболочкой на Яве.
А ECU самолёта, ответственные за его непосредственный самолётный функционал — на ОС реального времени с кодом, скорее всего, на C или C++ под реализацию MISRA-стандартов.
Так что по форме — верное утверждение-то.
Я именно по поводу куска, процитированного вами, рассуждаю.
u8 TurnThePlaneDown(u32 SomeStuff, void *pData)
{
*pData[SomeStuff] = -1; // Do it upside!
...
}
самому купить вазелин и написать заявление об увольнении по собственному желанию.
Так что чисто ради изоляции брать разные языки программирование выглядит несколько натянуто, а вот в том виде, как это описал Desavian — уже кажется вполне разумным. Т.е. в комплексе со всем остальным.
Пилот не обязан быть до мелочей корректным в вопросах программирования,
Секундочку, а какой тогда вообще смысл данной статьи? Раз уж она основана на словах непрофессионала, высказывающегося по смежной, но не его теме — что мы обсуждаем-то вообще? Это имеет не более смысла, чем изучение мнения деятелей культуры о ядерной физике.
В статье раз за разом говорится все та же мантра «системы разделены, системы разделены, все ок». В то время как тот же Ruben Santamarta в 2019 говорил уже о конкретных уязвимостях, позволяющих преодолеть разделение:
act-on.ioactive.com/acton/attachment/34793/f-cd239504-44e6-42ab-85ce-91087de817d9/1/-/-/-/-/Arm-IDA%20and%20Cross%20Check%3A%20Reversing%20the%20787%27s%20Core%20Network.pdf
>используют разные системы, разные языки программирования
Начиная вот с этого места я перестал доверять тому, что написано.
Он летчик, который пытается к тому же делать работу безопасника, так что можно простить ему некоторое непонимание.
я не думаю что есть очень много специалистов в сфрере информационной безопасности, которые готовы умереть ради падения самолета (с ним на борту)
Что мешает подготовить инструментарий (оборудование, ПО) для взлома специалисту, а применить неспециалисту?
Чтобы приподнять градус паранои, можно себе представить что это происходит прямо сейчас, или уже произошло и эти скрипты просто ждут своего часа.
В аэробусах давно делают fly-by-wire. У пилота только джойстик, и без участия бортового компьютера управление в принципе невозможно. Понятно, что там и резервирование и защиты на всех уровнях и вообще, но гипотетически БК можно перепрограммировать так, чтобы произошло что-то плохое и пилоты тут будут бессильны.
Развлекательная система в этом контексте как раз и может быть использована для атаки на БК, ну, если бы у них были каналы связи друг с другом, конечно.
без участия бортового компьютера управление в принципе невозможно.Думаете, при отказе всех бортовых самолет падает? :-) Всё хитрее, есть direct law, в котором бортовые компы не участвуют. Участвуют разные мелкие вычислители, которые могут быть как с процессором, так и на рассыпухе, и даже на чистой электромеханике, как в ТУ-154. Их задача — выполнить переход от команды, поданной джойстиком, в управление гидравликой.
Более того, в нём есть и троссовое управление:
На этом самолёте используется всего три троса (для аварийного ручного управления) — аварийный выпуск шасси, управление рулём направления и управление стабилизатором.
Можно наверное поменять данные о рельефе поверхности или отметках высот и этим добавить седых волос пилотам.
А когда все улетели, оказалось, что в городе ничего не пропало.
Понятно что вероятность такого стечения обстоятельств мала. Но все аварии авиалайнеров происходят именно с совпадениями, появление которых ничтожно мало.
Например недолив топлива в Боинг 737 известный как «Планирование в Гимли».
Подробнее смотреть ETOPS
Об этом рассказал действующий пилот, капитан Boeing 737 с более 10 тыс. часов налёта, на своём канале MenTour Pilot.
Это говорит о многом. В основном поверхностные знания, часто далекие от реалий.
Если бы вместо пилота был инженер, то интересностей для взлома было бы гораздо больше.
Начать стоит с самого простого — методов обновления софта. Большинство компьютерных систем современного самолета, в том числе и критически важных, имеют интерфейсы для обновления софта/прошивок. Как это реализовано практически? Какие интерфейсы используются? Какое ПО? Как хранятся, доставляются и подписываются прошивки?
Ответы на эти простые вопросы уже дают множество вариантов.
Далее второе — опять же о чем знают инженеры, а не пилоты — это связи между различными системами. Не правда, что ентертаймент полностью изолирован от систем управления. У них есть связь хотя бы через линии питания, что нельзя исключать, как вариант для взлома. Также пилот может блокировать ентертаймент во время голосового оповещения. Как это реализовано? Сухими контактами или может там какая-то общая шина обмена(просто заложили на будущее)? Так что тут тоже огромное поле для изучения, начиная от электросхем.
Вот, очень хорошая защита от взлома! У хакеров давно нет дисковводов. :-)
Летайте лоукостерами, там нечего ломать :)
Клапаны слива топлива, система зажигания, датчики оборотов двигателей, генераторы, клапаны выравнивания давления в салоне, воздушные тормоза, отключение противообледенительной системы не пришли ему в голову?
Недавний SSJ из Шереметьево наглядно демонстрирует оба вопроса — и с клапанами, и с пилотами.
Я рассуждал на примере этого случая.
Но, надо заметить конкретно с SSJ она как раз была бы не лишней. И описанные выше сценарии отлично сошлись вместе: гроза+ручной режим+потеря радиосвязи+перегруз. В контексте статьи можно уже впадать в конспирологию.
FADEC, опять же.
И даже если откажет гидравлика, самолётом всё ещё можно управлять как огромной Цесной с помощью тросов, физически подведённых к штурвалу.
Это пилот рассказывает про концепцию Боинга. У всех Аирбасов, например — реализована концепция Fly-by-Wire, где при выключении всей электроники самолёт не управляется вообще.
Что касается компьютерного взлома — главная защита от него, это сложность в получении лишнего самолёта, чтобы его можно было разобрать и отреверсить протокол. Ну, получил ты с борта доступ к полётному компьютеру — и что? Где ты возьмешь информацию о командах и протоколе, чтобы «немного повилять самолётом»?
самолёт не управляется вообще.
Это не совсем так. Выпуск шасси, управление рулем высоты и, емнип, триммирование руля направления возможны и без работающей электроники. Кроме того, отключить вообще все — это еще надо хорошо постараться, учитывая количество дублирований и резервных систем (например, у Airbus A320 есть выдвижной ветрогенератор).
Допустим, неважно как, но некому «специалисту» удалось получить доступ к ЭДСУ самолёта, навигационному оборудованию и FADEC. Что он будет делать дальше?
Рассмотрим, на примере моего любимого Airbus A320. Его ЭДСУ

имеет три компьютера SEC (Spoiler Elevator Computer, компьютер для управления спойлерами и рулями высоты), два компьютера ELAC (Elevator Aileron Computer, компьютер для управления рулями высоты и элеронами) и два компьютера FAC (Flight Augmentation Computer, компьютер улучшения характеристик полёта). Каждый из них внутри содержит два канала: управление и контроль. Управляющий канал, грубо говоря, управляет, а контролирующий наблюдает, чтобы тот не сильно врал) В случае рассогласования, компьютер будет выведен из работы, а его место займёт соседний. Я не помню точную схему замещения, но если не изменяет память, можно лететь чуть ли не на одном ELAC. На крайний случай, именно в 320-ке есть механическое управление рулём высоты и направления.
Теперь посмотрим, какие процессоры придётся ломать «хакеру», для этих компьютеров это: intel 80186, motorola 68010, intel 80286. Адресное пространство этих компьютеров известно? Периферия? Протоколы обмена данными? Тексты исходных кодов. Кстати, программа там находится в ПЗУ. Как её менять будем? Как вообще можно достучаться до компьютера, у которого наружу торчит интерфейс управления? Но как уже было сказано выше, как только управляющий канал обнаружит рассогласование, он выведет компьютер из работы. Аналогично для Boeing 777. Его ЭДСУ включает аж 9 компьютеров.
Типы процессоров можно видеть на картинке. Как долго будем ломать? Может быть проще в керосин кое-что сделать?))) ЭДСУ для суперджета можно найти самостоятельно. Там тоже не один компьютер.
Теперь, рассмотрим ситуацию, что мы не трогаем ЭДСУ, но пытаемся поменять задание автопилоту. И пусть каким-то чудесным образом нам это удалось. Неужели пилоты не заметят отклонение от курса? Они же не первый раз за «рулём». А наземные службы?
Вот и считаю я, что ломать самолёт это очень сложно и дорого. Гораздо проще пойти более дешёвым путём: подкупить кого-то, пальнуть из ружья))) прорваться к пилотам. А все эти истории со взломами хороши лишь для неокрепших умом диванных воинов, ибо человек в здравом уме, даже зная как это сделать, никогда не пойдёт на риск погубить не один десяток человек ради удовлетворения своей похоти…
. Кстати от туда прошивку скачать элементарно. В отличии от всяких современных ARM.
Это — склад запчастей. И охраняется он как склад. Если вокруг нет забора и видеокамер, то это вовсе не значит что периметр не контролируется.
Уже 70-е годы советский хитрый кабель, закопанный на глубине до 1 метра, и подключенный куда надо засекал: едущий танк с километра, грузовик с 700м, идущего человека с 50 метров.
Так что — удачи.
Но остается вопрос шантажа, сколько готовы заплатить крупнейшие авиакомпании за то чтобы не останавливать полеты своего основного типа на неделю/месяц или сколько там потребуется для того чтобы доказать что закладок нет? Доказательства отсутствия чего либо вообще сложны в получении. И если хакер сможет продемонстрировать воздействие (ну там сегодня день отказа на нескольких бортах второго дублирующего флайткомпьютера, а завтра будет день отказа основной радиостанции), то начнется ад, полетят головы, самолеты станут на прикол и биткоины скорее всего будут перечислены незамедлительно.
Но раз техники проносили в техотсек бомбы, не виже невозможным пронести роутер. Возможно, где то там, под фальшпанелью потолка туалета, лежат обычные UTP кабели внутренней сети самолета.
Как думаете, сколько стоит полная инспекция парка самолетов крупной авиакомпании? Проверить всю проводку, залить во все устройства с процессором заведомо чистую прошивку, притом в таком режиме, чтобы «червяк» не смог перепрошиться обратно.

А вот и описание технологии
И немного про AFDX более человеческим языком
В более старых моделях лежит что-то типа этого
Опять же, принимая во внимание резервирование, вмешение в один контур не даст результата.
Про ЭДСУ Суперджета
Система управления Суперджетом
но архитектура программного и аппаратного обеспечения остаётся неизвестной.
С точки зрения современных самолетов, это не так. Сейчас модно использовать open-source, открытые архитектуры и COTS. Да что там не модно, а просто тупо дешевле взять стандартный протокол или архитектуру, чтобы не выдумывать свое проприетарное ни с чем не совместимое колесо. Операционка там будет VxWorks со стандартным BSP, и даже плата может быть какая-нибудь Commercial-off-the-shelf VPX от третьего производителя.
На счёт операционки, greenhills не в моде?) Она точно для авионики сертифицирована.
Если в ПО самолёта встроена возможность дистанционного управления, то всё очень просто, перехватываем, и скажем роняем самолёт.
А если нет такой возможности, то тут только сами разработчики, т.е. лица обладающие инсайдерской инфой могут что-то сделать, и то не факт что получится.
В первом случае такое могут провернуть только спецслужбы или лица близкие к ним, и обладающие нужной аппаратурой и кодами доступа.
В общем, как-то так. Не спрашивайте, откуда ты знаешь что СС могут перехватить управление самолётом, я сам точно ничего не утверждаю, это просто догадка. Но думаю, так и есть.
Для этого нужно сначала узнать есть ли эта возможность дистанционного управления вообще и как ее активировать.
Но я предлагаю пойти по более простому алгоритму. Есть продукт, где эта возможность 100%- но есть — это автомобили Тесла с их парковочным Summonoм. Попробуйте для начала взломать ее, а потом уже можно и к самолетам перейти.
Можно ли взломать самолёт