Реклама

Исследовательская группа из Лаборатории компьютерной науки и искусственного интеллекта МТИ, разработавшая высокоэффективный метод поиска ошибок переполнения DIODE, объявила о создании новой системы — CodePhage, которая повышает надежность приложений, автоматически добавляя недостающие проверки границ значений переменных. Эти проверки заимствуются из других программ, выполняющих функции, аналогичные реализуемым. При этом доступ к исходному коду программ-доноров не требуется.

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

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

Купить номер с этой статьей в PDF