Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
refusal-relocates — LLM-Sicherheit: Analysiere, wie Fine-Tuning das Ablehnungsverhalten verändert, und bewerte Layer-Freezing- und Low-Rank-Verteidigungen. | Kitploit
Tools/GitHubGitHub/js-lee-ai/refusal-relocates
DefensivwerkzeugeSchwachstellenanalyseMaschinelles LernenPapers & ForschungKI-SicherheitAdversarial-Angriff
GitHubjs-lee-ai/refusal-relocates

refusal-relocates

LLM-Sicherheit: Analysiere, wie Fine-Tuning das Ablehnungsverhalten verändert, und bewerte Layer-Freezing- und Low-Rank-Verteidigungen.

Repository anzeigen
190vor 19 TagenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Webseite
Teilen

Refusal verlagert sich, Refusal lokalisiert sich, der Schaden verlagert sich, Sicherheitsschichten unter Few-Sample-Fine-Tuning

arXiv Project Page Code MIT Paper CC BY 4.0 Python 3.10+ CI Stars

Projektseite · Schnellstart · Verwendung · CLI · Ergebnisse · Reproduzieren · FAQ · Zitation


Neuigkeiten

  • [2026-09-28] Code veröffentlicht, zusammen mit den Laufprotokollen und Skripten, die die Tabellen des Papers neu erstellen.

Überblick

Ein paar Dutzend schädlicher Beispiele können die Verweigerung schädlicher Anfragen bei einem ausgerichteten Modell aufheben. Frühere Arbeiten lokalisieren die Sicherheit in bestimmten Schichten und Richtungen, was nahelegt, den gefundenen Ort zu schützen. Dieses Repository prüft diese Prämisse so, wie es ein adaptiver Angreifer tun würde. Es findet heraus, wo die Verweigerung wiederhergestellt werden kann, friert diesen Bereich ein und greift erneut an, und es repariert das Gewichtsupdate und lässt dann den Angreifer es ausbreiten.

Die Studie stützt sich auf drei Messungen.

  • Die Verweigerung wird auf einer Tiefe wiederhergestellt. Beim Lockstep-Patching wird der vollständige Hidden State des sauberen Modells auf einer Schicht an das kompromittierte Modell übergeben, beim Prefill und bei jedem Decoding-Schritt, und die Verweigerung kehrt auf einer reproduzierbaren Übergangstiefe zurück.
  • Das Einfrieren dieser Tiefe verschiebt den Schaden. Im abgestimmten Llama-3.1-8B-Vergleich verschiebt das Einfrieren der Schichten 0–17 den Übergang von Schicht 15 auf die Schichten 27 und 28, und die Verweigerung nach dem eingeschränkten Angriff beträgt 0,00 bis 0,01 gegenüber sauberen 0,92 bis 0,96.
  • Die Top-Two-Reparatur fällt durch ein Spread-Update. Das Entfernen der beiden obersten singulären Richtungen des Updates stellt die Verweigerung nach kurzen Fine-Tunes, die nur die Attention betreffen, auf vier Checkpoints wieder her. Ein Angreifer, der das Update ausbreitet, reduziert die relative Top-Two-Reparatur auf 0,000, und ein auf 75 harmlosen Fine-Tunes kalibrierter Detektor markiert nur 3 von 14 Reparaturfehlern.

Dieses Repository enthält die Messung und beide Verteidigungen als kleine Bibliothek sowie die Laufprotokolle und Skripte, die die Tabellen des Papers neu erstellen.

Was es in einem Bild zeigt

Links laufen das saubere und das kompromittierte Modell auf gemeinsamen Tokens, und der saubere Hidden State wird auf einer Schicht in das kompromittierte Modell gepatcht. Rechts wird der Angriff mit eingefrorenen Schichten 0 bis 17 wiederholt und das Patching erneut auf dem eingeschränkten Checkpoint ausgeführt

(a) Lockstep-Aktivierungspatching überschreibt die Schichtausgabe des kompromittierten Modells mit dem sauberen Zustand beim Prefill und bei jedem Decoding-Schritt. (b) Im abgestimmten Llama-Angriff verschiebt das Einfrieren der Schichten 0–17 den Half-Ceiling-Übergang von 15 auf 27–28.

Schnellstart

pip install "git+https://github.com/js-lee-AI/refusal-relocates.git"
import numpy as np
import refusal

rng = np.random.default_rng(0)
A = rng.standard_normal((16, 512)) / 512 ** 0.5    # LoRA factors of one module, rank 16
B = rng.standard_normal((512, 16)) / 16 ** 0.5
for name, decay in [("ordinary", 0.5), ("spread", 1.0)]:
    b = B * decay ** np.arange(16)                  # energy in a few directions, or spread flat
    before, after = refusal.update_stats(A, b), refusal.update_stats(*refusal.remove_top_k(A, b, k=2))
    print(f"{name:8s}  PR/r {before['pr_over_r']:.2f}  top-2 energy {before['top2_energy_fraction']:.2f}"
          f"  norm left after top-2 removal {after['unscaled_norm'] / before['unscaled_norm']:.2f}")
# ordinary  PR/r 0.10  top-2 energy 0.94  norm left after top-2 removal 0.24
# spread    PR/r 0.94  top-2 energy 0.18  norm left after top-2 removal 0.90

Ein gewöhnliches Fine-Tuning legt den Großteil seiner Aktualisierung in wenige singuläre Richtungen, sodass das Entfernen der obersten zwei den größten Teil davon entfernt. Eine verteilte Aktualisierung hat ein flaches Spektrum, sodass dasselbe Entfernen den größten Teil davon an Ort und Stelle lässt. PR/r, das Partizipationsverhältnis über den LoRA-Rang, ist zugleich der Score des spektralen Detektors aus dem Paper.

Dies läuft auf einer CPU in etwa einer Sekunde und lädt nichts herunter. Derselbe Code ist examples/quickstart.py, und CI führt ihn bei jedem Push aus.

Um echte Checkpoints zu trainieren, zu patchen und zu evaluieren, installieren Sie das Extra models.

pip install "refusal-relocates[models] @ git+https://github.com/js-lee-AI/refusal-relocates.git"
Installationfügt hinzuausreichend für
pip install "git+https://github.com/js-lee-AI/refusal-relocates.git"numpyden spektralen Kern, die Top-k-Entfernung, den Detektor, den Refusal-Scorer, den Befehl refusal
pip install "refusal-relocates[models] @ git+https://github.com/js-lee-AI/refusal-relocates.git"torch, transformers, peft, accelerate, safetensors, scikit-learn, datasetsTraining, Lockstep-Patching, Probes und Evaluierung an einem Modell
git clone und dann pip install -e ".[models,test]"pytestexperiments/, records/ und tests/

Getestet mit Python 3.11.5, PyTorch 2.10.0, Transformers 4.57.3 und PEFT 0.18.0. Modelle werden in bfloat16 auf einem CUDA-Gerät geladen.

Verwendung

Einen kompromittierten Checkpoint Schicht für Schicht patchen

import refusal

data = refusal.load_data("data/prompt_sets.json")        # built by `refusal prepare`, see below
prompts = data["advbench"][:40]
clean, tokenizer = refusal.load_model("meta-llama/Llama-3.1-8B-Instruct")
attacked, _ = refusal.load_model("meta-llama/Llama-3.1-8B-Instruct", adapter="runs/attack/adapter")

for layer in [6, 9, 12, 15, 18]:
    responses = refusal.lockstep_generate(clean, attacked, tokenizer, prompts, layer=layer)
    print(layer, sum(refusal.is_refusal(r) for r in responses) / len(prompts))
Tool herunterladen