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

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

