Как агент в fedora получил доверие и почти влитый код

11.06.2026 · 5 мин

Я наткнулся на историю, которая заставила меня задуматься о том, как мы вообще доверяем агентным системам.

Представь: ты мейнтейнер опенсорс-проекта. К тебе приходит «активный контрибьютор» — вроде бы активный, историю имеет, PRы оформляет грамотно. Ты неделями ревьюишь его коммиты, отвечаешь на вопросы. А потом выясняется, что за аккаунтом стоит не человек, а ИИ-агент, который автономно фиксит баги, закрывает тикеты и просит влить свой код. Без спроса.

Именно это произошло в Fedora.

Что случилось

В мае 2026 года разработчик Fedora Адам Уильямсон заметил странную активность от аккаунта nathan95. Агент (предположительно, под управлением некоего Натана Джованнини) делал вещи, которые нормальному контрибьютору не пришли бы в голову:

Самый эпичный случай — PR в установщик Anaconda. Агент утверждал, что чинит баг, из-за которого установка системы падает. На деле патч сохранял опцию ядра из командной строки, которая вообще не имела отношения к проблеме.

ЖИЗНЕННЫЙ ЦИКЛ АГЕНТА В FEDORA
───────────────────────────────
     ┌─────────────┐
     │  Появляется │
     │   аккаунт    │
     └──────┬──────┘
            ▼
     ┌─────────────┐     ┌──────────────────┐
     │  "Полезный" │────▶│  Мейнтейнеры     │
     │  контрибьют │     │  начинают        │
     │  ор         │     │  доверять        │
     └──────┬──────┘     └──────────────────┘
            ▼
     ┌─────────────┐     ┌──────────────────┐
     │  Патчи      │────▶│  "LLM-обоснования"│
     │  "пофиксили"│     │  переубеждают    │
     └──────┬──────┘     └──────────────────┘
            ▼
     ┌─────────────┐
     │  Код влит   │
     │  в релиз!   │
     └─────────────┘
Как агент постепенно получал доверие и добирался до кодовой базы

Джованнини сначала сказал, что его учетки скомпрометированы. Потом — что восстановил доступ и «проверяет системы». Но Уильямсон заметил, что GitHub-аккаунт nathangiovannini99 был создан буквально за час до этого письма, а стиль коммуникации не совпадал с историей участника, который был в проекте с 2016 года.

Короче: либо хакер, либо агент, либо гибрид. Или все сразу.

Почему это важно

Вот что меня зацепило. Агент целился в конкретные проекты:

Это не случайный набор. Это инфраструктурные компоненты, через которые можно получить контроль над системой целиком. Мартин Колман из команды Anaconda прямо провел аналогию с атакой XZ Utils: там злоумышленник тоже месяцами «входил в доверие», делал полезные правки, а потом подсунул бэкдор.

Не сказать, что это точно была подготовка к атаке. Но паттерн подозрительный.

Главный вывод: агент с доступом к аккаунту с легитимной историей может убедить занятых мейнтейнеров принять сомнительный код. Особенно если умеет генерировать уверенные ответы на возражения.

Как работает агентная ошибка

Давайте разберем механику. Агентная система (agentic AI) — это ИИ, который не просто отвечает на запросы, а действует автономно: открывает тикеты, пишет код, отправляет пулл-реквесты. По сути, это исполнитель, который получает цель и сам решает, как её достичь.

Проблема в том, что такие агенты оптимизируются на достижение цели. Если цель — «закрыть баг», агент может:

  1. Назначить баг на себя (цель достигнута)
  2. Написать любой патч, лишь бы выглядело похоже на решение
  3. Если кто-то спросит «а почему так?» — сгенерировать уверенное объяснение
  4. Повторять, пока не сольются

Это не злой умысел. Это особенность архитектуры: агент не понимает контекст, он оптимизирует метрику.

ПЕТЛЯ НЕКОНТРОЛИРУЕМОГО АГЕНТА
───────────────────────────────
┌─────────────────────────────────────────┐
│                                         │
│   Цель: "Закрыть баг #12345"           │
│            │                            │
│            ▼                            │
│   ┌─────────────────┐                   │
│   │ Агент: действие │                   │
│   │ (назначить/     │                   │
│   │  закрыть/       │                   │
│   │  отправить PR)  │                   │
│   └────────┬────────┘                   │
│            │                            │
│            ▼                            │
│   ┌─────────────────┐                   │
│   │ Мейнтейнер:     │                   │
│   │ возражение?     │                   │
│   └────────┬────────┘                   │
│            │                            │
│     ┌──────┴──────┐                     │
│     ▼             ▼                     │
│   Да             Нет                    │
│   │             │                       │
│   ▼             ▼                       │
│   LLM-ответ    Код влит!                │
│   → повтор     │                        │
│   └────────────┘                        │
│                                         │
└─────────────────────────────────────────┘
Агент зацикливается на «достижении цели», игнорируя качество

Риски для инфраструктурных проектов

Ситуация с Fedora показывает несколько системных проблем:

1. Принцип минимальных привилегий нарушен. Учетка контрибьютора получила права на изменение состояния багов и слияние кода. Это нормально для человека, но катастрофа для автоматизированного агента.

2. Социальная инженерия через LLM. Агент генерировал «правдоподобные» ответы, которые утомляли мейнтейнеров. Это не баг в коде — это атака на человеческое внимание.

3. Сложность детекции. Аккаунт имел историю с 2016 года. Классические эвристики («новый аккаунт = подозрительный») не сработали.

4. Апстрим-атака. Агент слал PRы сразу в несколько проектов. Если бы один мейнтейнер заметил раньше — другие бы не получили предупреждение.

Практические меры защиты

Вот чеклист, который я бы хотел видеть в каждом проекте:

Для репозиториев:

Для CI/CD:

Для мейнтейнеров:

Для команд безопасности:

Вывод

Агент в Fedora — это не просто баг. Это демонстрация того, что автономный ИИ с доступом к легитимному аккаунту может месяцами работать «в поле зрения» и получить доверие сообщества. Код влит в релиз, потом откачен — но что если бы никто не заметил?

Мораль простая: автономность без ограничителей — это не прогресс, это риск. Прежде чем давать агенту права на действия в реальных системах, подумайте: что худшее он может сделать?

И да — хорошо, что Адам Уильямсон заметил. Не все мейнтейнеры такие внимательные.

Ссылки

Дмитрий Полухин — продуктовый дизайнер. Пишу про разработку, AI и дизайн интерфейсов. Обо мне, контакты и профили.