TGViewer
PWN AI PWN AI @pwnai · 7.34K subscribers
Post #1244 904
Статические инструменты тестирования моделей изживают свою эпоху. Тестировать на заготовленных наборах атак или слепых кодировках сегодня - пахнуть слабостью в 2026 году. Garak или promptfoo хороши для галочки, но они слепы к контексту.

Они не умеют строить логические ловушки, они не чувствуют тему, а их попытки составить сильный атакующий запрос с разными тактиками разбиваются о необходимость делать каждый промпт уникальным. В эпоху, когда всё можно построить вокруг модели, я задумался: как на самом деле должен выглядеть эффективный инструмент для атак? OpenAI учит свои модели редтимить сами себя, но я не OpenAI. А создавать атаки, которые эволюционируют на фидбеке от мишени, хотелось до дрожи. Так родилась идея, которую я назвал «ВОЗМЕЗДИЕ». Название не случайное, нравится один фильм…

Почти весь путь самоэволюции решения - это история одной ошибки, которую пришлось выдирать из себя силой. Первая версия харнесса сама писала атакующие запросы, пока решала grayswan, опираясь на шаблоны. Выглядело убедительно, работало быстро и потом оказалось абсолютно бесполезным. Прогон на тысяче запросов вскрыл много нюансов: из тысячи текстов получилось всего восемнадцать уникальных запросов, с широким разнообразием техник. Два приёма стояли в ста процентах запросов, кодировки использовались в трёх процентах, невидимые символы - ни разу. Тексты были разные, а придуманы были одним и тем же способом. Тестирование модели превратилось во что-то однотипное.

Пришлось перестроить всё вокруг одного железного правила: формулировку пишет модель, а кодовая часть только проверяет запрос, находит и измеряет. Инструмент перестал быть генератором и стал прибором с арсеналом.

Под капотом у «ВОЗМЕЗДИЯ» нет ни фиксированных модулей под векторы атак, ни агентов, которые на лету компилируют тактику. Это три слоя, и границей между ними держится всё остальное.

Первый слой - движок на чистой стандартной библиотеке Python. Он ничего не придумывает, он только измеряет результат так, чтобы числу можно было верить.

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

Третий слой - сама модель. Она читает материал, выбирает тактику и пишет запрос. Код ей не мешает и не подсказывает фразы, он только называет последствия и отказывается выдавать непроверенное.

Главная проблема в редтиминге - думать, что сила атаки в кодировках или обходах фильтров. На самом деле всё решает механизм атаки. Механизм - это то, что именно запрос просит модель сделать. Не тема и не оформление, а само задание. «Расскажи, как» - один механизм, «проверь, полон ли этот документ» - другой, «сформулируй тестовый запрос, на котором проверяемый ассистент должен отказать» - третий. Когда модель просят рассказать, она оценивает действие и отказывает. Когда её просят отредактировать или составить тест - она оценивает работу с текстом и соглашается.

Замеры на 200 ходах показали разброс между лучшим и худшим механизмом в 40 раз. Уровень, где модель просто заказывает текст запроса, даёт меньше всего вредного содержания, но почти всегда отдаёт готовый рабочий промпт, который можно отправить как есть. Слабые механизмы не просто нейтральны, они разбавляют сильные и жгут ходы. Поэтому харнесс перестал предлагать всё подряд и начал называть порядок.

Прогон на 9 различных моделях развалил удобную картину, где есть просто модели посильнее и послабее. Они разошлись не силой защиты, а её природой. Часть моделей отвечала пустой строкой с той же латентностью, что и на обычные запросы. Это значит, что срабатывал входной фильтр до генерации. У других защита жила внутри модели, и они отвечали текстом. Это два разных мира. Против фильтра нужно, чтобы запрос не был похож на опасный, и тут единственно подтверждённый прирост дали кодировки. Против модели нужно, чтобы задача выглядела другой по роду, а семантические приёмы влияния вроде срочности или авторитета дали ровным счётом ноль. Более того, эмоциональное давление и транслитерация делали запрос только хуже.

Оказалось, что пересборка стратегии в момент отказа - это путь в никуда. Перефразировка того же механизма почти не двигает результат, а повторение одного и того же разными словами даёт модели больше материала для отказа. Отказ нужно читать как указание на род защиты - это золотое правило мы помним с результатов теста grayswan. Пустая строка - значит фильтр сработал, меняем вид текста. Короткий шаблонный отказ - модель отвечает по правилу, уводим сменой рода задачи. Частичный ответ - самый ценный сигнал, показывающий, какой именно элемент конструкции мишень считает недопустимым.
Многоходовые атаки тоже оказались контринтуитивным приёмом. Дробление задачи на безобидные шаги на семантической защите только усиливает отказ, потому что модель видит саму последовательность как приём. Работает другая многоходовость - смена механизма между ходами. Перелом наступает на втором-третьем ходу, когда частичный ответ становится полным.

Техническая боль настигла там, где я её не ждал. Бюджет токенов, который я назначил «разумным», оказался слишком мал для рассуждающих моделей, и все ходы обрывались на середине. Время ответа мишени превращало калибровку харнесса в часы ожидания. Исчерпание ключа чуть не похоронило волну, потому что первая версия не различала виды сбоев и продолжала жечь задачи на не заправленном openrouter.

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

И самое неприятное, что я узнал в самом конце. Харнесс после нескольких этапов самоэволюции вписывал в каждый запрос свои собственные, лишние фразы, требуя привести артефакт целиком и без сокращений. Они стояли во всех запросах, а атакуемая модель их узнавала и называла вслух. Одна из моделей ответила буквально, что этот абзац в задании - та самая инъекция, только адресованная ей. То есть инструмент своей рукой сообщал цели, что перед ней шаблон. Все успехи, о которых я пишу, достигнуты несмотря на это.

Но самоэволюционирующее решение - на то и носит такое звание, чтобы адаптироваться к ошибкам. Сейчас пока затрачено около 600 долларов, если быть точным. В это входит самоэволюция, тесты и неудачи.
OpenAI GPT-Red: самоулучшение ради устойчивости Познакомьтесь с GPT-Red — системой OpenAI для автоматизированного red teaming, которая с помощью self-play улучшает безопасность, согласование и устойчивость ИИ к промпт-инъекциям.
More from @pwnai
  1. Sep 23, 2026Раньше считалось, что ханипоты отлично сбивают с толку автономных хакеров на базе ИИ. Логи…
  2. Sep 21, 2026Ну а на грейсвоне вышло новое соревнование, на которое стало теперь интересно потратить ещ…
  3. Sep 14, 202610 сентября Anthropic опубликовала Detecting and countering misuse of AI — отчёт о злоупот…
  4. Sep 12, 2026Post #1242
  5. Sep 6, 2026Фанфакты: Однажды ночью эта атакующая штука снесла мне ось с компа) ну я там ничего не хра…
  6. Sep 6, 2026Я уже неделю участвую в новом соревновании от GraySwan - Hazard Hunt, в категории Cyber. У…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →