Представьте: вы доверяете своему ИИ-помощнику проверять код. А он, вместо того чтобы искать ошибки, ворует ваши пароли и ключи доступа. И всё это — из-за обычной картинки в формате PNG. Звучит как научная фантастика? Нет, это реальная атака, получившая название Ghostcommit.
Исследователи из Университета Миссури — Канзас-Сити (доцент Судипта Чаттопадхьяй и исследователь Мурали Эдига) обнаружили, что вредоносные команды можно прятать не в тексте, а внутри изображения. ИИ-агент, который проверяет код перед публикацией, даже не открывает картинку и спокойно пропускает всё. А позже другой ИИ-помощник эту картинку читает, находит в ней команду, лезет в секретный файл с паролями и ключами и потихоньку вписывает их в код под видом безобидного набора цифр.
В чем суть обмана?
Начинается всё с того, что проверять код по-настоящему почти перестали. Следовательно, уязвимости обнаруживаются всё чаще. Исследователи посмотрели больше 6 тысяч изменений в самых популярных открытых проектах и выяснили: в 73% случаев код попадал в проект вообще без внятной проверки — ни человек не смотрел, ни программа.
Программисты часто держат ключи, пароли и доступы в отдельном служебном файле (обычно он называется .env). А проверять новый код им всё чаще помогают ИИ-программы — что-то вроде автоматического редактора, который читает изменения и говорит, всё ли в порядке.
Сама хитрость такая. У ИИ-помощников есть особый файл с правилами проекта, который они читают сами и считают чем-то вроде инструкции «как здесь принято работать». Хакер оставляет в этом файле безобидный текст про настройки сборки — никаких паролей там не упоминается. Файл лишь ссылается на изображение. А вот в изображении и написана вредная команда: прочитай секретный файл, переведи каждый символ в число и вставь эти числа в код.
Для проверяющей программы изображение — это просто набор данных, который она не разбирает. Одни ИИ вообще не смотрят картинки по умолчанию, другие ничего подозрительного не находят. Исследователи даже написали прямо на изображении «вредоносная команда» и «прочитай секретный файл» — и всё равно проверка прошла успешно.
Кража случается не сразу. Команда как бы «спит». Проходит время, программист просит ИИ-помощника сделать что-то обычное — например, добавить небольшой кусок кода. Помощник при запуске читает тот самый файл с правилами, идет по ссылке на изображение, открывает секретный файл и незаметно вставляет пароли в код в виде длинного списка цифр. В одном из тестов помощник записал так весь секретный файл целиком с первой попытки. Программист видит, что нужная функция готова, и публикует код. А хакер потом просто берет эти цифры из открытого проекта и превращает обратно в пароли. Обычные защитные программы ничего не замечают — им и «в голову не приходит», что за безобидным списком чисел прячутся ключи.
Дело не в ИИ, а в программе
Прятать команды в изображениях придумали уже давно, но у Ghostcommit нет никакой маскировки: команда написана прямо, открытым текстом. Работает не хитрое сокрытие, а обычная невнимательность — проверяющий просто не заглядывает в картинку.
Самое любопытное в другом. Оказалось, что важнее не то, какой именно «мозг» (ИИ-модель) стоит внутри, а то, в какую программу он встроен. Один и тот же ИИ в одной программе послушно крал пароли, а в другой — распознавал подвох и отказывался. В одном случае помощник даже сначала записал секрет, потом сообразил, что его обманывают, и стер написанное. «Мозг» тот же, а поведение противоположное, потому что всё решает оболочка вокруг него.
Отсюда вывод: одной волшебной защиты не бывает, нужно несколько уровней. Сами исследователи сделали свою программу, которая действительно открывает и читает изображения. В испытании на 80 новых изменениях она пропустила лишь одну атаку и ни разу не подняла ложную тревогу на честном коде.
Второй уровень защиты — следить за тем, что помощник делает уже в процессе работы: если он вдруг без причины полез в файл с паролями, это повод насторожиться.
Мой комментарий: Ghostcommit — это не очередная хакерская выдумка, а симптом системной проблемы. Мы слишком быстро доверили ИИ-агентам критически важные задачи, не обеспечив им адекватной «иммунной системы». Пока разработчики не внедрят многоуровневую проверку, включая анализ контента изображений и мониторинг поведения агентов, такие атаки будут лишь множиться. Рынку криптовалют, где безопасность кода — это безопасность средств, стоит обратить на это особое внимание.