Новгородские ученые создали метод для выявления слабых мест в программном обеспечении до взлома

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

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

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

Читайте также:  Ученые выяснили, как бактерии общаются в кишечнике

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

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

Читайте также:  Тайны размножения печеночных мхов: как устроена идеальная модель растений

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

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

Читайте также:  Журналистам рассказали о квантовых вычислениях: ФИАН и «Росатом» представили новые технологии

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