Добавить в корзинуПозвонить
Найти в Дзене

В НовГУ создали инструмент, который находит бреши в программе до того, как ее взломают

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

Ученые НовГУ создали инструмент для поиска уязвимостей в программном обеспечении. Инструмент, получивший название Natch, помогает находить их до того, как ими смогут воспользоваться хакеры. Разработка не имеет аналогов и поможет защитить смартфоны и компьютеры от взлома.

Первый автор работы — Павел Довгалюк, инженер, кандидат технических наук, доцент НовГУ.

Любое приложение, работающие с интернетом — от браузера до мессенджера — обрабатывает данные из внешнего мира: файлы, ссылки, сетевые пакеты. Через эти точки входа (так называемую поверхность атаки) злоумышленники чаще всего и пытаются взломать систему. Если разработчики ПО заранее знают, где находятся такие слабые места, они могут усилить их защиту.

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

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

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

Ученые НовГУ и Института системного программирования РАН решили эту проблему, создав инструмент Natch. В его основе лежит полносистемный эмулятор QEMU – программная платформа, которая позволяет воссоздать работу всего компьютера целиком — от операционной системы до отдельных приложений.

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

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

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

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

— Мы предполагаем, что компании-гиганты будут внедрять Natch в свой конвейер разработки безопасного ПО наравне с другими инструментами, которые не менее важны. Те же компании, что не выстраивают такой конвейер, могут использовать наш инструмент для углубленного тестирования и анализа кода в ручном режиме. При этом важно помнить, что Natch — лишь малая часть того, что нужно применять для разработки безопасного ПО. В первую очередь необходимо донести до всех разработчиков, что думать о безопасности нужно всегда, а не только когда выходят сообщения о каких-то взломах уже работающих систем, — заключил Павел Довгалюк.

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