Новые проверки отладчика MIT на целочисленные переполнения

целочисленные

Направленное Обнаружение Целочисленного переполнения MIT (ДИОД), отладчик машинально находит целочисленные переполнения, которые могут возможно разрешить хакерские атаки.Массачусетский технологический университет (MIT) создал новую совокупность отладки, которая машинально и более действенно находит неспециализированные неточности программирования.Исследователи из Искусственного интеллекта и Лаборатории Информатики MIT (CSAIL) создали ДИОД либо Направленную совокупность Обнаружения Целочисленного переполнения, которая проверяет на целочисленные переполнения.Целочисленные переполнения являются одной из самый распространенных неточностей в компьютерных программах – не только то, чтобы заставлять программы отказать, вместе с тем и возможно предложение точек нападения для злонамеренных хакеров.

Программисты создали батарею способов для идентификации их, но у всех имеется недочёты, сообщил MIT.В этом месяце, на Интернациональной конференции Ассоциации вычислительной техники по вопросам Архитектурной Помощи Языков Операционных систем и программирования, исследователи MIT воображают собственный новый метод для идентификации неточностей целочисленного переполнения.

Исследователи протестировали метод на пяти неспециализированных программах с открытым исходным кодом, в которых прошлые изучения нашли три неточности. Новый метод отыскал все три известных неточности вместе с 11 новыми.Переменные, применяемые компьютерными программами, прибывают в пару стандартных типов, таких как числа с плавающей точкой, которые могут содержать десятичные числа; знаки, как буквы в предложении; либо целые числа, которые являются целыми числами. Любой раз, когда программа создает новую переменную, она присваивает ему фиксированную сумму пространства в памяти.

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

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

Каждые эти входные эти программы проследят одиночный маршрут через график. Предшествующие способы для нахождения неточностей целочисленного переполнения запустились бы наверху графика и начали бы трудиться через него, работа работой.Для даже умеренно сложной программы, но, что график огромен; исчерпывающее изучение всей вещи было бы предельно длительно. «Что это указывает, то, что Вы можете отыскать довольно много неточностей в раннем входном коде обработки», сообщил Мартин Ринард, учитель MIT информатики и соавтора и разработки на новой бумаге, в отчете. «Но Вы не закончили ту часть кода перед всем этим корма. И потом существуют все эти неточности глубоко в программе, и как Вы находите их?»

Rinard, Sidiroglou-Douskos и пару вторых участников группы Ринарда, включая Эрика Лэхтинена и Паоло Пизелли и аспирантов Фэна Лонга, Доехвана Кима, и Натана Риттенхауса, проявляют второй подход. ДИОДНАЯ совокупность начинается, подавая программу единственный демонстрационный ввод. Потому, что тот ввод обрабатывается, но – потому, что он прослеживает путь через график – совокупность записывает каждую из операций, выполненных на нем, додавая новые условия к тому, что известно как «символьное выражение».

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

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

Начальный тестовый ввод не инициирует переполнение, но ДИОД может проанализировать символьное выражение для вычисления ввода, что будет, сообщили исследователи MITПроцесс все еще не закончен, как бы то ни было.

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

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

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


Блог Хихуса