Украсть личные данные, вывести деньги с банковского счета, получить доступ к промышленным секретам, нарушить работу целой организации — почти любая хакерская атака, к каким бы масштабным последствиям для жертв она ни привела, начинается всего лишь с бреши в коде. Таких «трещин» для злоумышленников тем больше, чем крупнее и сложнее программа, и отследить их все в какой-то момент становится невозможно. Эту проблему и призван решить Natch — уникальный инструмент для автоматизированного анализа программного обеспечения с целью поиска уязвимостей. Разработана программа командой из Новгородского государственного университета им. Ярослава Мудрого (НовГУ) совместно со специалистами Института системного программирования РАН.

«Сейчас активно развивается новая специальность — кибербезопасность. Она появилась 20 лет назад, после того как стандарты по информационной безопасности были законодательно приняты в США. Потом такие стандарты стали появляться по всему миру, включая Россию. Смысл в том, чтобы на всех этапах жизненного цикла программно-аппаратных решений пытаться минимизировать количество ошибок. В настоящее время грань между закладкой (скрытая программа, которая дает злоумышленникам доступ к ресурсам системы. — Примеч. ред.) и ошибкой стерта. Если вы можете доказать, что это закладка, скорее всего, ее делали не очень грамотные люди», — рассказывал в интервью «Научной России» на эту тему академик Арутюн Ишханович Аветисян.

«Во всех программах есть ошибки, и иногда злоумышленники могут их использовать, чтобы задействовать программу не так, как задумывалось, — например, воспользовавшись уязвимостью, загрузить на удаленный компьютер собственный код и запустить его. В связи с этим возникла потребность в разработке именно безопасного ПО с отдельными направлениями в тестировании программ. Есть множество особенностей и на фазе написания кода, и на фазе тестирования, и на фазе эксплуатации, которые необходимо учитывать для безопасности ПО. То, что мы разрабатываем, относится к фазе тестирования», — объяснил корреспонденту «Научной России» один из разработчиков Natch кандидат технических наук, доцент НовГУ Павел Михайлович Довгалюк.

Какую программу невозможно взломать? Ту, к которой ни у кого нет доступа. Если программа запускается на компьютере без выхода в интернет, то воспользоваться брешами в ее коде сможет только хакер, добравшийся до нее физически. Когда у человека есть физический доступ к системе, то и поле его возможностей становится шире: можно вскрыть корпус, подключить свое оборудование, загрузиться с другого носителя. Однако чаще программы взламываются не напрямую, а удаленно, через интернет. Разработчики Natch ориентируются на угрозы, связанные с сетевым доступом, когда у системы есть внешние интерфейсы и через них нужно контролировать корректность взаимодействия.

Программа помечает голубым функции, которые непосредственно работают со входными данными

Программа помечает голубым функции, которые непосредственно работают со входными данными

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

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

Natch обнаруживает функции, работающие с данными входного файла, даже если эти данные были несколько раз перемещены в памяти

Natch обнаруживает функции, работающие с данными входного файла, даже если эти данные были несколько раз перемещены в памяти

«Многое можно исключить заранее. Но стандартный анализ исходного кода и зависимостей — это статический анализ без запуска программы, и он не может учесть ее реальное поведение, включая взаимодействие с внешними компонентами. Динамический анализ, при котором программа запускается, позволяет видеть срабатывание функций, но не определяет, обрабатывают ли они именно опасные данные от ненадежных источников. Помимо проверки правильности результатов (функциональное тестирование), наша же система добавляет сюда и тестирование поведения программы во время выполнения. Мы анализируем, как обрабатываются данные внутри программы. Автоматически это не находит уязвимости, потому что нужен критерий того, что именно считать уязвимостью. Но если привлечь эксперта, разбирающегося в вопросе, он может изучить результаты анализа и понять, где и как обрабатываются данные. Например, если это чувствительная информация, такая как пароль, можно отследить, что пароль никуда не сохраняется на диск и не передается по Сети», — отметил ученый.

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

Источник фото на главной и странице: rawpixel.com / wirestock / Freepik