Сейчас много говорят о кибервойнах и кибероружии. Насколько реальны угрозы?

Все индустриальные системы принципиально уязвимы. Так как все в IT, везде чипы, интернет вещей и так далее. Безусловно, мир становится все более уязвимым. Более того, невозможно отделить уязвимость от закладки. Любая уязвимость может быть представлена как ошибка программиста. С учетом того, что у нас большая часть систем поставляется из-за рубежа, код должен проверяться специальными инструментами. И на это не нужно жалеть денег.

То, что все уязвимо, — для меня нет сомнений. То, что с этим нужно бороться не только программистскими методами, — тоже несомненно, но это не наши задачи. Мы — разработчики новых технологий. В качестве перспективного направления исследований можно упомянуть разработку технологий гомоморфного шифрования. Поясню, что это такое. Вы проводите операции над своими данными как обычно, считая, что они не зашифрованы. А на самом деле они все время находятся в полностью зашифрованном виде. И нет момента, когда они дешифруются — обычно данные воруют именно в этот момент.

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

Никто у нас этим не занимается. Мы давно предлагаем: давайте сделаем компилятор, который будет промышленно компилировать тот же «Линукс», но уберем в нем такого рода ошибки. Сейчас мы сами их все не знаем. Составим картотеку таких ошибок, будем ее пополнять.

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

Считается, что мы менее уязвимы для кибератак, потому что у нас меньше распространены IT-технологии, чем в США, например.

Безусловно, чем меньше у вас IT-технологий внедрено, тем вы менее уязвимы. Наименее уязвимый человек — тот, кто живет в деревне без электричества. Но мы вынуждены будем внедрять новые технологии, хотим мы этого или не хотим. Любую, самую надежную систему можно атаковать. У нее будет уязвимость. Вопрос: как сделать, чтобы эти уязвимости нельзя было эксплуатировать или минимизировать ущерб от атаки.

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

Кроме того, у нас есть в руках промышленные инструменты запутывания кода для традиционных языков программирования С, С++, для двух наиболее распространенных открытых компиляторных инфраструктур: GCC и LLVM. Но самое интересное: к нам пришел российский заказчик, компания «Свемел», которая делает свою операционную систему. Мы даже не знали, для чего они ее используют. Они внедрили наше решение по запутыванию кода в погранслужбе ФСБ и в МИДе.

О чем речь. У вас есть исходные коды. Когда вы компилируете, получаете нолики и единицы — бинарный код. Например, вы делаете «умный» чайник, там есть микропроцессор и так далее. Кто-то его купил, долго изучал и нашел уязвимость. Никаких способов убрать из кода все уязвимости не существует. Даже в самых продвинутых системах они есть. Поэтому, если над бинарником долго работать, рано или поздно там что-нибудь найдется. Какой бы у вас защищенный код ни был, его взломают. Как и мы, наверное, взломаем любой чужой код — зависит от времени и сил.

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

Правительство обязало госкомпании закупать отечественный софт вместо импортного. Один из аргументов: в импортных программах могут быть «шпионские закладки». Действительно ли такая угроза есть? И второй вопрос: а что, в отечественном софте закладок или ошибок не может быть? Его ведь тоже надо проверять?

Безусловно. Именно потому, что, как уже сказал, граница между закладкой и ошибкой стерта. То, что предлагается покупать отечественный программный продукт, это в целом для нашего рынка, для нас хорошо. Хотя бы потому, что ведет к созданию потенциальных рабочих мест. Причем, как я вижу, в большинстве случаев не наблюдается неоправданного усердия добиться поставленных задач кавалерийским наскоком, «любой ценой», «даже с потерями», чего поначалу многие боялись. Все делается достаточно грамотно, в рабочем порядке.

Но надо понимать одну вещь: в нашем коде тех же ошибок может быть так же много. Более того, поскольку при разработке софта очень многое копируется из того же открытого кода, нет никаких гарантий, что закладки не перекочуют в ваш новый код. Если вы, например, используете «Линукс», то оттуда все, что там есть, попадет к вам. Закладки это или уязвимость — неважно, но оно будет перетекать к вам так или иначе.

Законсервировать свою платформу и держать ее десятилетиями вы все равно не сможете. Вам все равно придется ее синхронизировать с основной ветвью разработки. Раз в два года или в три — неважно. И оттуда к вам может прийти все что угодно. То есть вы все равно упретесь в то, что вам будут нужны современные технологии, которые будут отфильтровывать дефекты, будь то закладки или ошибки. Но такие технологии удорожают разработку, и для создания их рынка нужна соответствующая законодательная база. Мы принимаем участие в такой работе в рамках совместных работ со ФСТЭК.

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

А как все же быть, если поставили компании или госучреждению программу, а потом с ее же помощью украли информацию или что-то захватили?

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

Если вернуться к теме закладок. В чем может быть их опасность?

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

Думаю, в этой части я ничего нового не скажу. Это тривиальные вещи: желательно, чтобы критическая инфраструктура, та же атомная энергетика или системы военного управления были не только на своем софте, но на своем «железе».

Импортным компьютерам тоже доверять нельзя?

А как вы думаете? Мне непонятно, например, как можно обеспечить безопасность аппаратно-программной платформы, если аппаратура в ней не ваша. Как технологический человек, могу сказать, что современные методы аппаратной виртуализации, технологии виртуализации, которыми мы занимаемся много лет, показывают, что вы никогда не можете быть уверенными в том, что именно то, что есть в вашем софте, ровно и делается. Потому что в любой аппаратуре есть микрокоды, есть просто недокументированные возможности «железа», которые могут сделать все что угодно.

Да, есть возможность скрыть эту систему, держать в каком-то контуре и тем самым гарантировать безопасность. Но снова: это защита только от внешнего воздействия. Допустим, вы ее гарантировали. А если внутри эскалация прав? Например, внутри системы человек, у которого права секретаря, а на самом деле он за счет эскалации получил доступ к правам генерала. Если у вас в «железе» «дырка», он это может сделать.

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

Смотреть все советы