Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
SEW — Встраивает и обнаруживает ключевые, основанные на стиле водяные знаки в сгенерированном LLM коде на Python, Java и C++ посредством перезаписи CST, сохраняя функциональную корректность и противостоя атакам редактирования кода. | Kitploit
Инструменты/GitHubGitHub/suhanmen/sew
Статический анализАнализ КодаКриптографияСтатьи и ИсследованияБезопасность ИИ
GitHubsuhanmen/sew

SEW

Встраивает и обнаруживает ключевые, основанные на стиле водяные знаки в сгенерированном LLM коде на Python, Java и C++ посредством перезаписи CST, сохраняя функциональную корректность и противостоя атакам редактирования кода.

Репозиторий
1113 ч 1 мин назадЕщё не проверено

Популярное

Смотреть все →

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

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

SEW: Style-Encoded Watermarking of LLM-Generated Code

GitHub Repo stars GitHub last commit GitHub contributors

Ссылка на статью📖

📰 Новости

  • 📢 НОВОЕ! Статья SEW доступна на arXiv: arXiv:2609.39414. (30 сентября 2026 г.)
  • 📢 Официальный код SEW опубликован на GitHub. (30 сентября 2026 г.)

🔍 Мотивация

ОсобенностьВодяные знаки на уровне токенов (KGW, SWEET, Unigram, STONE, STA-1)Пост-фактум водяные знаки (ACW, SrcMarker, RoSeMary)✨ SEW
ДоступВо время декодирования (смещает выбор токенов)Пост-фактум (переписывает готовый код)Пост-фактум (переписывает готовый код, не зависит от модели)
Функциональная корректностьИзменяет программу (компромисс между обнаруживаемостью и корректностью)Может сломать программы (Java/C++ pass@1 ≈ 12% при нейросетевом переписывании)Сохраняется (pass@1 равен коду без водяного знака)
Предсказуемость—Повторяющиеся шаблоны (восстанавливаются из 10 программ с водяным знаком)Зависит от ключа и контекста (выборы меняются в зависимости от структуры каждой программы)
Обнаружение (TPR@FPR5%)14–60%31–98%⚡ 98.7–99.5%

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

✨ О SEW

SEW overview

SEW (Style-Encoded Watermarking) встраивает и обнаруживает водяные знаки в уже сгенерированном коде с помощью трёх компонентов:

  1. Правила стиля кода с ключевыми, контекстно-зависимыми выборами. Семантически эквивалентные стилевые выборы, собранные из руководств по стилю и правил преобразования (29 для Python, 22 для Java, 19 для C++; например, x += 1 / x = x + 1, range(n) / range(0, n), if (c) s; / if (c) { s; }), сопоставляются на конкретном синтаксическом дереве (CST). Какой вариант принимает позиция, определяется секретным ключом и структурным контекстом позиции.
  2. Калибровка стилевых предпочтений. Доказательство наличия водяного знака оценивается относительно вероятности каждого стилевого варианта в написанном человеком коде, поэтому стили, которые люди уже предпочитают, учитываются меньше.
  3. Контекстно-зависимая агрегация стилей. Позиции в структурно совпадающих местах, которым назначен один и тот же стилевой выбор, объединяются в один голос, так что повторные применения одного выбора не завышают доказательство.

Для обнаружения нужны только подозрительный код и ключ — не генерирующая модель, не исходный код и не какая-либо запись о встраивании.

🚀 Чем ценен SEW?

✅ Не зависит от модели и корректен по построению — SEW переписывает только те стилевые позиции, где оба варианта имеют одинаковую семантику, поэтому он работает с выводом любой модели и сохраняет pass@1 равным таковому для кода без водяного знака.

✅ Откалиброванное доказательство — тест Пуассона-бинома с вероятностями стилей, оценёнными по написанному человеком коду (решения LeetCode, не пересекающиеся с данными оценки), поддерживает низкий уровень ложных срабатываний на человеческом коде.

✅ Устойчив и трудно выводим — SEW сохраняет обнаружение при форматировании, линтинге, удалении комментариев и переименовании переменных, и противник, наблюдающий программы с водяным знаком, не может восстановить его стилевые выборы так, как он восстанавливает выборы пост-фактум базовых методов.

📈 Результаты

Основной результат — обнаружение на CodeContests (TPR@FPR5% / AUROC, %), усреднённое по трём LLM (Qwen3.5-9B, gemma-4-12B-it, gpt-oss-20b).

ТипМетодPythonJavaC++
На уровне токеновKGW48.33 / 80.5643.30 / 72.3159.31 / 84.54
SWEET59.92 / 85.1841.19 / 76.5660.01 / 87.24
Unigram57.45 / 88.9736.54 / 71.3747.05 / 71.13
STONE28.09 / 62.3314.38 / 62.9523.65 / 64.79
STA-135.26 / 66.2620.93 / 61.4844.71 / 73.72
Пост-фактумACW90.10 / 95.05––
SrcMarker90.21 / 97.8671.52 / 93.5869.88 / 81.55
RoSeMary97.86 / 97.3231.00 / 95.4681.26 / 89.44
SEW99.49 / 99.6498.70 / 98.9999.22 / 99.38

Функциональная корректность (pass@1 кода с водяным знаком, %; код без водяного знака: 57.63 / 52.05 / 53.74).

МетодPythonJavaC++
ACW56.00––
SrcMarker56.7811.8711.82
RoSeMary56.3911.7111.52
SEW57.6352.0553.74

Устойчивость к атакам редактирования кода (TPR@FPR5%, %, усреднённое по трём LLM и трём языкам; ACW: только Python).

Скачать инструмент