Студенты из Массачусетского технологического института (MIT) разработали новый и гораздо более эффективный метод проверки сырого кода на наличие целочисленного переполнения, крайне проблематичного программного бага, являющегося популярным вектором атаки и часто приводящего к отказу системы.

Исследователи из лаборатории информатики и искусственного интеллекта (CSAIL) представили платформу, названную DIODE (сокращение от Directed Integer Overflow Detection, целевое детектирование целочисленного переполнения).

В качестве эксперимента разработчики протестировали DIODE на коде из пяти различных open-source-приложений. Система смогла определить три уже известные уязвимости целочисленного переполнения, а также обнаружила 11 новых багов.

Четыре из 11 найденных уязвимостей до сих пор активны itw, но разработчики этих приложений были проинформированы, и CSAIL ожидает от них подтверждения работы над фиксами.

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

Авторами DIODE являются семь исследователей: Стелиус Сидироглу-Доускос (Stelios Sidiroglou-Douskos), Эрик Лахтинен (Eric Lahtinen), Нэйтан Риттенхаус (Nathan Rittenhouse), Паоло Писелли (Paolo Piselli), Фань Лун (Fan Long), Тохван Ким (Deokhwan Kim) и Мартин Райнард (Martin Rinard). Они представили свое творение в Стамбуле на двадцатой конференции ASPLOS (Architectural Support for Programming Languages and Operating Systems).

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

Как пишет Стелиус Сидироглу-Доускос, исследователь из CSAIL и ведущий разработчик, когда DIODE находит переменную целочисленного типа, которая может быть использована в опасной операции, она записывает текущее состояние символического выражения. Система не вызывает срабатывание целочисленного переполнения, а оценивает связанные с ним значения, чтобы лучше информировать программиста. Если DIODE находит значение-триггер, она помечает его, что помогает при последующей отладке.

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

DIODE, разработанная благодаря гранту DARPA, — не первый отладчик, созданный для поиска целочисленного переполнения. Ранее исследователи из CSAIL разработали ряд инструментов для статического анализа, SIFT (.PDF), отмечающий входные данные, способные приводить к целочисленному переполнению, и KINT (.PDF), инструмент для PHP.

Как отмечают исследователи, в отличие от SIFT, который требует прямой доступ к исходному коду, DIODE может работать с x86-кодом. Новая система также лучше KINT, которая часто генерировала большое число ложноположительных результатов.

В MIT надеются выпустить DIODE как приложение с открытым исходным кодом к октябрю 2015 года, по завершении программы DARPA Mission-oriented Resilient Clouds (MRC), в рамках которой оно было разработано.

Категории: Кибероборона, Уязвимости