Исследовательская группа из Лаборатории компьютерной науки и искусственного интеллекта Массачусетского технологического института (MIT), разработавшая высокоэффективный метод поиска ошибок переполнения DIODE, объявила о создании новой системы — CodePhage, которая повышает надежность приложений, автоматически добавляя недостающие проверки границ значений переменных. Эти проверки заимствуются из других программ, выполняющих функции, аналогичные реализуемым. При этом доступ к исходному коду программ-доноров не требуется.
Для использования CodePhage нужны два набора входных данных — один вызывающий сбой разрабатываемой программы, другой — не вызывающий. Система осуществляет символьное выполнение программы-донора сперва с первым набором, потом со вторым. На точке расхождения, где очевидно выполняется проверка границ, к символьному выражению выполняемых операций добавляется соответствующее ограничение. Затем анализируется программа-реципиент — ищутся ограничения из составленного символьного выражения, все найденные отбрасываются, остальные реализуются на соответствующем языке программирования и добавляются к исходному коду. После этого программа-реципиент выполняется с входными данными, изначально вызывавшими сбой. Если он все еще происходит, то продолжается поиск проверок в программе-доноре.
Исследователи протестировали CodePhage на нескольких программах с открытым кодом, в которых система DIODE обнаружила ошибки; для их автоматического исправления использовались по две-четыре донорских программы. Во всех случаях уязвимости были устранены, на что уходило от двух до 10 минут. По словам исследователей, их долгосрочная цель — полностью избавить программистов от необходимости писать заново код, который кто-то уже реализовал до них.
Релоцировались? Теперь вы можете комментировать без верификации аккаунта.