Группа исследователей из MIT представили
программное обеспечение, которое способно динамически исправлять ошибки
и уязвимости. Исправлять способно в любом коде, не обязательно в себе
самом. Исходники не нужны. Только под Windows.
Оригинальный PDF c публикацией «Automatically Patching Errors in Deployed Software» вот здесь.
Область практической применимости очевидна и огромна. «Deployed Software» это коммерческий софт.
Утверждается, что лучше всего работает в кластерах, уязвимости
обнаруженные на одном из хостов, автоматически накатываются на все
остальные.
Идея такова: это самое «Deployed Software» постоянно мониторится на
подозрительную активность, например переполнение буферов,
подозрительные передачи управления и прочее некорректное поведение. Это
само по себе не новость, обычно после обнаружения такой активности
приложение прерывается, при повторении — блокируется.
Тут на самом деле две проблемы:
1. Если система high availability — ни о каком прерывании или блокировках не может быть и речи.
2. Скорость латания дыр в коммерческом софте не велика — буквально через месяц программисты выпускают патч.
Новость тут в том, что ClearView, так называется система, обещает
чинить баги и устранять уязвимости в реальном времени без рестартов и
человеческого вмешательства.
ClearView сначала собирает статистику поведения во время нормального
выполнения, они называют это «инвариантами выполнения», затем
отслеживает активность, при обнаружении подозрений автоматически патчит
бинарный код пытаясь восстановить «инварианты выполнения». Умеет сама
тестировать различные варианты исправлений, накатывать и откатывать
заплатки. Т.е. фактически пытаться держать систему в устойчивом
состоянии, фильтруя input или блокируя и исправляя код.
P.S.
Ещё два шага и программы будут писать сами себя.
http://habrahabr.ru/blogs/crazydev/74036/