fix(server): durcissement sanitizer PII suite revue adversariale Qwen
- FN-1/2/3 : ajout RE_PRENOM_NOM (« Prénom NOM » inversé sans parens/crochets, ex. « Alix DATTIN ») ; 2e mot tout-majuscules -> 0 FP sur « Mozilla Firefox ». - FN-4 (majeur, 228 events) : sanitize_event scanne désormais les titres RÉCURSIVEMENT (vision_info.window_capture.window_title et tout titre imbriqué), au lieu de 3 clés top-level hardcodées. 2 correctifs issus de la revue croisée Qwen. 11 tests verts, 0 FP. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -136,3 +136,39 @@ def test_sanitize_action_result_inchange():
|
||||
|
||||
ev = {"type": "action_result", "base_shot_id": "shot_0003", "image": "x.png"}
|
||||
assert sanitize_event(ev) == ev
|
||||
|
||||
|
||||
def test_prenom_nom_inverse():
|
||||
"""FN-1/2/3 (Qwen) : « Prénom NOM » inversé (sans parens/crochets)."""
|
||||
from agent_v0.server_v1.pii_sanitizer import anonymize_text
|
||||
|
||||
m: dict = {}
|
||||
for s, leak in [("Alix DATTIN - Mozilla Firefox", "DATTIN"),
|
||||
("Agathe RONDOT - PACS CIM ARES", "RONDOT"),
|
||||
("Marie FLANDINETTE - Mozilla Firefox", "FLANDINETTE")]:
|
||||
out, _ = anonymize_text(s, mapping=m)
|
||||
assert leak not in out, out
|
||||
assert "[NOM_" in out
|
||||
# pas de faux positif sur les logiciels (2e mot non capitalisé tout en majuscules)
|
||||
out, ents = anonymize_text("Mozilla Firefox - Expert Sante - Consultation")
|
||||
assert out == "Mozilla Firefox - Expert Sante - Consultation"
|
||||
assert ents == []
|
||||
|
||||
|
||||
def test_sanitize_event_titre_imbrique_vision_info():
|
||||
"""FN-4 (Qwen) : titre PII imbriqué dans vision_info.window_capture (228 events)."""
|
||||
from agent_v0.server_v1.pii_sanitizer import sanitize_event
|
||||
|
||||
titre = "VIOLA (VIOLA) Liliane 90 ans - IPP: 168246 - Firefox"
|
||||
ev = {
|
||||
"type": "mouse_click",
|
||||
"window": {"title": titre, "app_name": "firefox.exe"},
|
||||
"vision_info": {"window_capture": {"window_title": titre, "app_name": "firefox.exe"}},
|
||||
}
|
||||
out = sanitize_event(ev)
|
||||
|
||||
wc = out["vision_info"]["window_capture"]["window_title"]
|
||||
assert "168246" not in wc and "VIOLA" not in wc, wc
|
||||
assert "[IPP_1]" in wc
|
||||
# cohérence : même titre dans window et vision_info -> même token
|
||||
assert out["window"]["title"] == wc
|
||||
|
||||
Reference in New Issue
Block a user