TL;DR
LENS — это двухпромптовая схема. Вы не спрашиваете модель «уязвимо или нет?» напрямую. Сначала модель выводит из готовых экспертных разборов «негласные правила» анализа и оформляет их в промпт. Затем на своих ошибках она выводит второй промпт: что и где искать в документах до того, как делать вывод. Рабочий прогон идёт в два этапа: собрать факты, потом анализировать по правилам.
Если спросить модель в лоб, она ошибается больше чем в половине случаев. Причин две. Во-первых, она «дрейфует» от дисциплины эксперта: допускает то, что эксперт отбросил бы. Например, считает, что у злоумышленника есть секретный ключ, которого у него на практике не бывает. Во-вторых, она спешит с выводом, не собрав все факты. Нужная информация лежит в документах, а модель её не искала. Эксперт сам не может записать свои негласные правила: «мы знаем больше, чем можем сказать». Он и не знает заранее, какие факты понадобятся.
Метод обходит это так. Правила модель восстанавливает по примерам: достаточно одного разбора «уязвимо» и одного «не уязвимо». План сбора фактов она восстанавливает, сравнивая свой неверный разбор с эталонным. Обычно хватает одного-двух кругов уточнения, после этого вы гоняете промпты на новых случаях.
Схема метода
ПОДГОТОВКА (один раз, 1–2 круга)
ШАГ 1: 2 экспертных разбора (позитивный + негативный)
→ мета-промпт → промпт-ДИСЦИПЛИНА (p_exp)
ШАГ 2: прогон p_exp на тех же 2 примерах, сравнение с эталоном
→ если не совпало: ошибка + эталон → мета-промпт
→ промпт-СБОР ФАКТОВ (p_evi)
ШАГ 3: p_evi собирает факты → p_exp пересобирается с ними → повтор
до совпадения с экспертным разбором
РАБОТА (на каждом новом случае)
ЭТАП А: p_evi + объект → досье фактов
ЭТАП Б: p_exp + объект + досье → отчёт (и PoC, если применимо)
(отдельные запросы, лучше в разных чатах)
Пример применения
Задача: Вы руководите маркетингом крупного селлера на Wildberries и Ozon. Каждую неделю выходят сотни рекламных текстов и карточек. Юрист по закону «О рекламе» (ФАС) пропускает или режет формулировки: «№1 в России», «скидка до 70%», «лечит», «гарантия лучшей цены». Его правила никто не записал: они в голове и в паре старых заключений. Нужно, чтобы модель разбирала новые тексты как этот юрист, а не «как в интернете написано».
Промпт (шаг 1 — вывод дисциплины):
Тебе даны примеры разбора рекламных текстов на соответствие закону «О рекламе».
Каждый вход — рекламный текст с контекстом (площадка, категория товара,
подтверждающие документы). Каждый выход — заключение юриста: есть ли нарушение,
почему, какие нормы применены и как исправить.
Твоя задача: вывести промпт, который передаёт дисциплину анализа, отражённую
в этих примерах, и позволяет разбирать новые тексты. Выведи только промпт.
Пример 1 (нарушение)
Вход: Текст: «Наш чай №1 в России! Снижает давление». Площадка: Ozon.
Категория: БАД. Документы: сертификата на «№1» нет.
Выход: [заключение юриста: два нарушения — недоказанное превосходство
и медицинское обещание у БАД; нормы; как переписать]
Пример 2 (нарушения нет)
Вход: Текст: «Скидка 30% на второй товар до 31 марта». Площадка: Wildberries.
Категория: одежда. Документы: условия акции опубликованы на странице.
Выход: [заключение юриста: нарушения нет, потому что условия и срок указаны,
скидка применима к описанным товарам; что проверялось]
Результат: Модель вернёт один готовый промпт. Это инструкция «как анализировать»: какие допущения делать, что считать доказанным, в каком порядке проверять, в каком формате писать заключение. Дальше прогоняйте его на этих же двух примерах. Если вывод не совпал с юристом, берите шаблон шага 2 (см. ниже) и просите модель вывести промпт сбора фактов: какие нормы, разъяснения ФАС и условия акций надо найти до заключения. Затем снова проверьте на тех же примерах. После 1–2 кругов запускайте на новых текстах в два этапа: сначала досье, потом заключение.
Почему это работает
Слабость. Модель по умолчанию отвечает быстро и «в среднем». Правила эксперта она не знает, потому что они нигде не записаны. Нужные факты (нормы, исключения, последствия) не подтягивает, пока её не попросили. Поэтому ответ выглядит убедительно, но опирается на неполную картину.
Сильная сторона. Модель хорошо обобщает по примерам: из пар «вход → разбор эксперта» она восстанавливает инструкцию, которая этот разбор воспроизводит. Она также хорошо разбирает собственные ошибки, когда видит рядом эталон и пометку «это неверно».
Как метод это использует. Две задачи разделены: как рассуждать (дисциплина) и какие факты нужны (досье). Обе инструкции модель пишет сама, из материалов эксперта. Важная деталь: просят не «найди факты для этого случая», а «напиши общий промпт, который собирает факты для любого случая». Поэтому промпт переносится на новые объекты.
Рычаги управления: - Число примеров. Авторы получили рабочую дисциплину из двух. Один позитивный и один негативный — минимум. Добавляйте пограничные случаи, если модель путается. - Негативный пример обязателен. Без него модель выведет правило «всё подозрительно». - Условие остановки. В статье эксперт сверяет: совпал вывод, совпала логика, сработал PoC. Замените это своим критерием, например «совпало с заключением юриста по 5 из 5». - Формулировка в мета-промпте «должен работать на новых». Эта фраза не даёт модели зашить в промпт детали конкретного случая. - Структура досье. В промпте сбора фактов у авторов пункты: кто отправитель и получатель, что делает получатель с полем, цепочка последствий, какое состояние меняется (постоянное или временное). Замените пункты на свои, под вашу область.
Шаблон промпта
Шаг 1. Вывод дисциплины анализа (по Таблице 1 из статьи):
Тебе даны примеры входов и выходов для задачи: {описание_задачи}.
Каждый вход описывает {объект_анализа} вместе с {подтверждающие_данные}.
Каждый выход — разбор, написанный экспертом: {формат_разбора}.
Твоя задача: вывести промпт, который отражает дисциплину анализа,
видимую в этих примерах, и может направлять анализ новых {объекты}.
Выведи только этот промпт.
Формат примеров:
Вход: {объект_и_данные}
Выход: {экспертный_разбор}
Пример 1 ({тип_позитивный}):
{вход_1}
{выход_1}
Пример 2 ({тип_негативный}):
{вход_2}
{выход_2}
Шаг 2. Вывод промпта сбора фактов из провала (по Таблице 2):
Я просил LLM разобрать {объекты_анализа}. LLM следовала промпту анализа
({p_exp}), но её разбор не прошёл экспертную проверку. Я считаю, что причина:
LLM не знала достаточно контекста про каждый объект.
Случай провала:
История анализа:
{объект_и_данные}
{промпт_анализа_p_exp}
{разбор_модели}
Обратная связь:
{разбор_эксперта}
Это эталон. Разбор модели неверен.
Твоя задача: вывести ОБЩИЙ промпт сбора фактов. Для любого {объекта}
он должен поручать LLM найти в {источники_документы} всё нужное
для анализа, чтобы собранного контекста хватило для разбора,
воспроизводящего эталон. Промпт должен работать на новых {объектах}.
Выведи только промпт.
Шаг 3. Рабочий запуск (два отдельных запроса):
[Запрос А] {p_evi — выведенный промпт сбора фактов}
Объект: {новый_объект}
Источники: {документы}
[Запрос Б] {p_exp — выведенный промпт дисциплины}
Объект: {новый_объект}
Досье фактов: {результат_запроса_А}
Подставляйте: описание задачи, объекты, два экспертных разбора (один позитивный, один негативный), источники (нормы, регламенты, документацию).
🚀 Быстрый старт — вставь в чат:
Вот шаблон метода LENS (вывод промпта дисциплины и промпта сбора фактов).
Адаптируй под мою задачу: [твоя задача].
Задавай вопросы, чтобы заполнить поля.
[вставить шаблон выше]
LLM спросит, какие есть экспертные разборы (нужны один «да» и один «нет»), в каких источниках искать факты и как выглядит правильный формат заключения. Без этих трёх вещей метод не работает: правила выводятся из разборов, факты ищутся в источниках, а формат фиксирует результат.
Ограничения
⚠️ Нужны экспертные эталоны. Метод стартует с готовых разборов эксперта. Без хотя бы пары (один «да», один «нет») выведенный промпт будет угадыванием.
⚠️ Нужна проверка человеком. Критерий «разбор совпал с экспертным» в статье оценивал эксперт. Подтверждает, что провал исправлен, только человек, не сама модель.
⚠️ Ложные срабатывания остаются. Модель находит почти всё, что есть, но заметная доля «найденного» оказывается ложной тревогой. Результат — список кандидатов на проверку, а не приговор.
⚠️ Нужен корпус источников. Сбор фактов предполагает, что документы доступны модели: приложены к чату или подключены через поиск. На разрозненных, закрытых или устных знаниях второй промпт бесполезен.
⚠️ Домен статьи узкий, перенос проверен частично. Основная проверка — анализ уязвимостей протоколов связи. Авторы показали перенос на другие протоколы, но не на юридический или маркетинговый анализ. Применение вне безопасности — экстраполяция.
⚠️ Ошибка в эталоне переносится. Если экспертные разборы содержат устаревшую или спорную логику, модель аккуратно её «выучит».
Как исследовали
Авторы взяли Diameter — протокол, по которому узлы 4G-сети обмениваются данными об абонентах. В нём сотни полей. Нужно понять, какое поле можно подделать с реальным ущербом. Для ручной проверки это слишком много, а без знания спецификаций 3GPP, разбросанных по разным документам, ошибиться легко.
Сначала проверили «в лоб»: модель иногда даже строила рабочие эксплойты, но в более чем половине случаев ошибалась. Разбор ошибок показал две причины: модель допускала нереалистичные возможности атакующего и делала выводы, не собрав связанные факты. Тогда авторы построили LENS: промпт «правил» выводится из экспертных разборов, промпт «сбора фактов» выводится из провалов, и оба уточняются друг через друга, потому что один зависит от другого. Хватало 1–2 кругов, а для вывода правил оказалось достаточно двух случайных примеров, одного позитивного и одного негативного.
Проверяли на вручную размеченной выборке, на четырёх разных LLM и с повторными прогонами. Полнота (доля найденных уязвимых полей) составила 94–98%, точность (доля верных среди найденного) 79–89%, общая accuracy 84–92%. Затем LENS прогнали по 766 полям интерфейсов S6a и Cx: 204 поля (около 27%) оказались эксплуатируемыми, 196 из них не были известны. Выявленные атаки проверили на реальных реализациях: найдено 95 новых уязвимостей, включая 78 в коммерческих системах. Наконец, метод применили к 16 другим протоколам и подтвердили 118 новых уязвимостей. Это важно для читателя: подход не привязан к одной области.
Практический вывод: ошибки модели в экспертной работе чаще всего связаны не с глупостью, а с отсутствием правил и фактов. И то и другое можно получить от самой модели, если дать ей эталоны.
Адаптации и экстраполяции
🔧 Техника: развести «как думать» и «что знать» в двух разных запросах → меньше преждевременных выводов
Даже без вывода промптов: перед любым экспертным вопросом сделайте отдельный запрос только на сбор фактов (без права делать вывод), а вывод запрашивайте во втором.
Не делай выводов. Собери досье по {объекту}:
1) кто и что с ним делает, 2) на что он влияет дальше по цепочке,
3) какие есть исключения и ограничения, 4) где это записано в {источниках}.
Только факты со ссылками.
Экстраполяция: правила для агента из ревью кода. Возьмите два ревью вашего тимлида: один принятый PR и один отклонённый с комментариями. Дайте их модели по шаблону шага 1 и попросите вывести правила в виде раздела для CLAUDE.md или AGENTS.md. Затем дайте агенту пару PR, которые он сделал неудачно, вместе с комментариями ревью, и повторите шаг 2: «выведи общую инструкцию, что агент должен прочитать и проверить перед тем, как писать код». Так в файл инструкций попадают негласные требования команды.
Ресурсы
- LENS — «When Core-Network Elements Become Reachable: Field-Level Exploitability Analysis in Diameter», принята на IEEE Symposium on Security and Privacy (S&P) 2027
- Авторы: Wei Yi, Changlong Han, Xue Zhang, Qiao Zhang, Yi Chen, Jin Cao, Di Tang, Yulong Fu, Ben Niu, Hui Li
- Университеты и институты: Xidian University, The University of Hong Kong, Sun Yat-Sen University, Institute of Information Engineering (CAS)
- Идейные отсылки: парадокс Полани («мы знаем больше, чем можем сказать»), вывод инструкций из пар «вход → выход» (ссылка [7] в статье), обучение на собственных провалах (рефлексия, ссылки [8], [9], [15])
- Источники предметной области: спецификации 3GPP (S6a, Cx)
