Группа европейских специалистов разработала программу для автоматического создания патчей ПО. Бот Repairnator сканирует код на сервисе Github, находит ошибки и предлагает исправления к ним. Программа прошла пилотные испытания и уже помогла устранить пять багов.

Решение работает в рамках концепции непрерывной интеграции, предполагающей компиляцию кода после каждого поступающего обновления (коммита). В результате разработчикам становится проще тестировать новые функции и отлавливать ошибки.

По информации экспертов, при создании ПО проблемы обнаруживаются в 25% рабочих версий, при этом поиск ошибок может занять от нескольких минут до дней и недель. Авторы Repairnator задались целью избавить программистов от этой рутины. Для этого бот должен отвечать двум критериям: создавать патч раньше человека и оформлять его таким образом, чтобы программисты принимали исправление.

Авторы не скрывают, что конкуренция бота с настоящими разработчиками может вызывать отторжение со стороны последних. Более того, как показывают проведенные исследования, программисты скептически относятся к рекомендациям автоматизированных систем. Это могло повлиять на результаты проекта, поскольку финальное решение о принятии патча должны принимать именно люди.

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

Пилотные испытания стартовали в январе 2017 года. По их итогам эксперты выяснили, что с существующими мощностями Repairnator способен создавать 30 патчей в день. На следующем этапе, который продлился с 1 февраля по 31 декабря 2017-го, бот проанализировал более 11,5 тыс. билдов с ошибками тестирования. В 30% случаев — 3,5 тыс. билдов — программа определила причину сбоя, однако написать работающий патч смогла только для 15 из них.

Эксперты отмечают, что и эти заплатки не отвечали установленным критериям скорости и качества. Однако в 2018 году Repairnator добился успеха, предложив за полгода пять исправлений, принятых разработчиками. В своей статье авторы приводят ссылки на соответствующие коммиты — ни в одном случае программисты не догадались, что общаются с ботом.

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

Также ученые обнаружили организационно-технические аспекты, которые могут помешать дальнейшей роботизации программной разработки.

Так, один из патчей не был принят из-за того, что владелец ПО подписывает с авторами коммитов лицензионное соглашение — по понятным причинам программа не может это сделать. Этот эпизод заставил исследователей задуматься о том, кто фактически владеет правами на написанный патч и несет за него ответственность — создатель бота, тот, кто его установил или же разработчик алгоритма для исправления багов.

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

Категории: Главное, Кибероборона