Исследователи из Массачусетского технологического института (MIT) разработали инструмент для статического анализа кода веб-приложений, разработанных с использованием Ruby on Rails. Это позволило им отыскать множество неизвестных уязвимостей в популярных веб-приложениях.

Статический анализ даёт программисту возможность находить ошибки в коде без запуска программы. Именно при помощи статического анализа компилятор языка Си находит ошибки, связанные с несоответствием типов переменных. Динамические языки, такие как Ruby, обнаруживают подобные ошибки лишь при исполнении программы.

Новый инструмент, разработанный в MIT, будет представлен на Международной конференции по разработке программного обеспечения, которая пройдёт в мае. Пока этого не произошло, доступно лишь туманное описание технологии, опубликованное в MIT News. Вот что из него следует.

В основе инструмента, получившего название Space, лежит переопределение стандартного поведения операции присваивания и некоторых других аспектов исполнения программы на Ruby. В результате интерпретатор Ruby при загрузке кода генерирует формальное описание операций с данными, которое затем используется для статического анализа.

Исследователи идентифицировали типичные случаи ограничения доступа к данным, которые применяются в веб-приложениях, написанных с использованием Ruby on Rails. К некоторым видам данных имеют доступ все подряд, к другим — лишь определённые пользователи, администраторы представляют собой исключение из всех правил, и так далее. Всего таких случаев семь, и каждый из них может быть представлен в виде простой логической модели, которая описывает, на какие операции с какими данными и в каких обстоятельствах пользователь имеет право.

Space автоматически определяет, каким моделям следует анализируемый код. Если ни одна модель не подходит, то допущена ошибка, которой может воспользоваться злоумышленник.

Создатели инструмента протестировали его на коде пятидесяти веб-приложений с открытыми исходниками. Space обнаружил в них 23 ранее неизвестные уязвимости, и сделал это поразительно быстро: на анализ каждого приложения он тратил не более 64 секунд.

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    1 Комментарий
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии