В рубрику "Оборудование и технологии" | К списку рубрик | К списку авторов | К списку публикаций
Большинство компаний использует программное обеспечение сторонних разработчиков как некий "черный ящик", не имея в своем распоряжении исходного кода. При этом получить его фактически невозможно – на рынке практически отсутствуют компании, предоставляющие данную услугу. Тот факт, что систему невозможно модернизировать, несет в себе огромное количество недекларированных возможностей и широкий перечень уязвимостей. При этом данная проблема касается как унаследованных систем, все еще используемых в большом количестве на производстве, так и новых разработок.
Унаследованные системы, как правило, базируются на отживших технологиях, архитектурах и платформах, а также используют морально устаревшее программное и информационное обеспечение. Для большинства таких систем ни документация, ни исходный код не доступны. Это может представлять собой серьезную проблему ИБ, связанную с уязвимостями, недекларированными возможностями (НДВ) и с непониманием алгоритма работы. Например, у одного из наших клиентов функционирует унаследованная АСУ ТП, состоящая из нескольких десятков различных файлов. Размер ряда файлов периодически меняется, и при этом невозможно понять, какие из них должны меняться в соответствии с логикой работы системы, а какие изменения указывают на попытку мошеннических действий с использованием АСУ ТП. Мы восстановили исходный код системы, из которого удалось извлечь алгоритм работы и составить перечень статических файлов и тех, которые должны периодически обновляться. Это позволило применить к решению систему контроля целостности, которая будет использовать защитные механизмы от различных манипуляций.
Что касается современных систем, то их создание и разработка часто ведутся посредством интеграции отдельных компонентов, выполненных как собственными, так и сторонними силами. Такая практика позволяет значительно сократить стоимость и время разработки ПО. Наличие небезопасных сторонних модулей в системе может снизить уровень защищенности всей информационной системы (ИС) и способствовать утечке информации и успешным атакам на информационную систему.
Уязвимости, как правило, появляются в результате ошибок разработчиков, а также из-за неаккуратной работы с языками высокого уровня. Под недекларированными возможностями понимаются функциональные возможности ПО, не отраженные в документации. НДВ в коде могут носить как случайный, так и преднамеренный характер для работы с приложением в обход установленных механизмов защиты.
Использование злоумышленником уязвимостей или НДВ в одном программном модуле может привести к компрометации ИБ всей информационной системы. С целью предотвращения такого сценария необходимо тщательно анализировать стороннее ПО перед его интеграцией в ИС.
При наличии исходного кода проведение его анализа на наличие уязвимостей и НДВ не представляет особой сложности для эксперта. Для этого можно использовать как ручной анализ кода, так и целый арсенал автоматических анализаторов кода, имеющихся на рынке (FindBugs, Svace Detector и др.).
Но как убедиться в безопасности ПО в случае отсутствия исходного кода? Западные специалисты по ИБ в таких случаях все чаще прибегают к восстановлению исходного кода при помощи декомпиляции.
При этом декомпиляция является сложной наукоемкой задачей, а реализация полностью автоматического декомпилятора априори невозможна. Но существуют инструменты (декомпиляторы), позволяющие решать данную задачу в автоматизированно-интерактивном режиме с участием квалифицированного эксперта (HexRays, SmartDec и другие).
Проведение декомпиляции может быть полезно и при наличии исходного кода. Это связано с тем, что при запуске любого приложения выполняется не код на языке высокого уровня, а его скомпилированный вариант в машинном представлении. При этом компилятор может преподнести ряд сюрпризов. Например, невыполнение очистки области памяти, что весьма критично при обработке конфиденциальной информации. Злоумышленник сможет получить к ней доступ, используя различные подходы, в том числе посредством дампа памяти. На сегодняшний день заглянуть внутрь ПО и оценить его на наличие уязвимостей и НДВ возможно и при отсутствии исходного кода. Однако данная задача требует высокой квалификации и экспертизы аналитика, знания инструментов декомпиляции, и такого уровня специалистов на российском рынке сложно найти.
Опубликовано: Журнал "Information Security/ Информационная безопасность" #6, 2011