Дистанционное внедрение программных закладок в бортовое ПО

MissileПишут, что специальные хакеры (указывают на китайских) в 2011-2012 годах проникли во внутренние сети крупных израильских оружейных компаний и хозяйничали там несколько месяцев, утаскивая, как минимум, важную документацию. Наличие удалённого хакерского доступа в корпоративную сеть, которая наверняка пересекается с сетью разработчиков систем вооружений, наводит на мысли о внедрении закладок в бортовое программное обеспечение, например в ПО головки самонаведения ракеты, или в вычислительные системы командного пункта зенитно-ракетного комплекса. Возможно ли такое?

Прежде всего нужно отметить, что практика подтверждает: air gap (то есть физическая изоляция сетей разного уровня защиты) – это, по большей части, миф. В том числе, для компаний, у которых информационная безопасность формирует основу бизнеса. Что уж говорить о разработчиках систем наведения ракет или РЛС комплексов ПВО. К сожалению, оптимизация использования вычислительных ресурсов сплошь и рядом приводит к тому, что один и тот же компьютер сперва используется инженером для работы с электронной почтой, а потом успешно перемещается “на стенд” – то есть в состав инструментальной системы, где ведётся разработка программного кода для той самой ракеты или радиолокационной станции. Исключения тут редки.

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

Основная проблема будет не с получением доступа, а с тем, как сконструировать закладку и успешно отправить её в серийное изделие. Причём первая проблема – самая проблемная: действительно, для того, чтобы закладку спроектировать, нужно очень хорошо знать, как работает то изделие, в которое закладка встраивается. Иначе толку от закладки не будет. И тут мало получить документацию. Для новых разработок документация, обычно, вообще бесполезна. Нужно построить свой стенд, свой экземпляр бортовой электроники, и уже на их базе разработать и отладить закладку. Это очень сложно. Однако для специалистов, имеющих государственную поддержку, не выглядит столь уж нереальным.

Программная закладка может внедряться одним из традиционных способов, например через модификацию компилятора (или ассемблера), которые использует разработчик. Можно внедрить дополнительный код непосредственно в готовые бинарные модули, которые загружаются в бортовую вычислительную машину. Можно не внедрять дополнительный код, а лишь модифицировать имеющийся. Как ни странно, но вполне вероятно, что единственным препятствием на пути закладки в серию может оказаться процедура тестирования, которая выявит некие сбои (а это означает, что закладка была плохо отлажена). Каких-то мер по доказательству отсутствия “лишних функций” разработчики встраиваемых систем, скорее всего, не применяют. Причина для этого чисто экономическая: до недавнего времени угроза проникновения посторонних на корпоративные компьютеры вообще считалась фантастической выдумкой, а уж предположить, что на проверку кода, идущего в серийное изделие, нужно потратить дополнительно несколько человеко-месяцев дорогостоящих специалистов-аудиторов – ну это уже за гранью даже фантастики. Да и где вы найдёте аудиторов кода для редких бортовых вычислительных машин?

Так что ждём следующего шага – “внезапного” обнаружения странностей в поведении систем управления ракет, да и не только их: хорошо проработанный в литературе и кинематографе сценарий с захватом спутников тоже может оказаться отнюдь не фантастическим.

()

Похожие записки:



Далее - мнения и дискуссии

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

1 комментарий от читателей

  • 1. 1st August 2014, 17:10 // Читатель jno написал:

    А я бы поставил больше баллов внедрению, чем “разработке”.
    Реально для highjacking’а разработка не сильно нужна – если исходный код (не в смысле сорца, а в смысле “до того”) достаточно структурирован, то вставить лишнюю проверку (которая заведомо не сработает на тесте) – не так уж сложно.
    А вот намусорить так удачно, чтобы код вошёл в сборку для деплоймента и при этом нигде не засветился – это да.