BUG: DenylistConverter and TransparencyAttackConverter identifiers ignore settings that change output
Maintainer antworten meist innerhalb von 2 Tagen
Bewertung
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Anfängerfreundlichkeit
- 35/100
Rechercherichtung
Read the identifier-building code for DenylistConverter and TransparencyAttackConverter, along with the shared behavior noted in #3287. Check how denylist, convergence_threshold, and convergence_patience affect output and are represented in identifiers; use the reproduction steps to verify each pair gets distinct identifiers and both denylist configurations register successfully.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Describe the bug
Two converters leave settings that change their output out of their identifiers, so differently configured instances share one hash:
DenylistConverter:denylist. It does not override_build_identifier(), so it inherits theLLMGenericTextConverteridentifier, which hashes the system prompt template but not thedenylistthat is rendered into it. The denylist also decides whether the LLM is called at all.TransparencyAttackConverter:convergence_thresholdandconvergence_patience. Both control when the optimization loop stops early, but onlybenign_image_path,size,stepsandlearning_rateare included.
Because the default registry name comes from that hash, registering a second configuration without a custom name raises a duplicate-name error, and memory and analytics cannot tell the configurations apart. This is the same problem as #3287, for these two converters.
Steps/Code to Reproduce
import asyncio
import tempfile
from pathlib import Path
from PIL import Image
from pyrit.converter import DenylistConverter, TransparencyAttackConverter
from pyrit.prompt_target import OpenAIChatTarget
from pyrit.registry import ConverterRegistry
from pyrit.setup import IN_MEMORY, initialize_pyrit_async
asyncio.run(initialize_pyrit_async(memory_db_type=IN_MEMORY))
target = OpenAIChatTarget(endpoint="https://example.invalid/openai/v1", api_key="unused", model_name="gpt-4o")
benign = Path(tempfile.mkdtemp()) / "benign.jpg"
Image.new("L", (150, 150), color=200).save(benign, "JPEG")
pairs = [
(
DenylistConverter(converter_target=target, denylist=["bomb"]),
DenylistConverter(converter_target=target, denylist=["password", "exploit"]),
),
(
TransparencyAttackConverter(benign_image_path=benign, convergence_threshold=1e-6),
TransparencyAttackConverter(benign_image_path=benign, convergence_threshold=0.1),
),
(
TransparencyAttackConverter(benign_image_path=benign, convergence_patience=10),
TransparencyAttackConverter(benign_image_path=benign, convergence_patience=1),
),
]
for first, second in pairs:
print(first.get_identifier().unique_name, second.get_identifier().unique_name)
registry = ConverterRegistry()
registry.instances.register(DenylistConverter(converter_target=target, denylist=["bomb"]))
registry.instances.register(DenylistConverter(converter_target=target, denylist=["password"]))
Expected Results
Each pair has two different identifiers, and both DenylistConverter instances register.
Actual Results
DenylistConverter::0085bebb DenylistConverter::0085bebb
TransparencyAttackConverter::438424a1 TransparencyAttackConverter::438424a1
TransparencyAttackConverter::438424a1 TransparencyAttackConverter::438424a1
ValueError: Instance 'DenylistConverter::0085bebb' already exists
Screenshots
N/A
Versions
- OS: Windows 11
- Python version: 3.11.9
- PyRIT version: installed from main (f277fedd) in editable mode
- Vorherrschende Sprache
- Python
- Sterne
- 4.7k
- Forks
- 1k
- Ø Merge
- 2 T. 2 Std.
- Gemergte PRs (30 T.)
- 439
Entwicklungsumgebung
Startet den Dev-Container des Projekts im Browser, mit Ihrem eigenen GitHub-Konto.
- Kein Dockerfile und keine Docker-Compose-Datei
- Hat eine Pull-Request-Vorlage
- Kein Beitragsleitfaden
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus microsoft/PyRIT
-
Description-only preset edits split comma-containing exact goals into separate goalsEvtl. vergeben @MRX-72 hat das heute übernommen. Offenhelp wanted
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
Maintainer antworten meist innerhalb von 2 Tagen
-
GUI rejects valid empty-string SearchReplaceConverter settings, preventing deletion convertersEvtl. vergeben @Darshika140 hat das vor 1 Tag übernommen. Offenhelp wanted
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
microsoft/PyRIT#3749 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 2 Tagen
-
HTML scenario export replaces an intentionally empty converted message with the original textEvtl. vergeben @VISHNU0906 hat das vor 1 Tag übernommen. Offenhelp wanted
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 77/100
microsoft/PyRIT#3741 · 1 Kommentar · 1 zugewiesene Person ·
Maintainer antworten meist innerhalb von 2 Tagen
-
help wanted
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
Maintainer antworten meist innerhalb von 2 Tagen
-
Development toolchain includes an audited vulnerable Zod versionEvtl. vergeben @ppcvote hat das heute übernommen. Offenhelp wanted
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
microsoft/PyRIT#3725 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 2 Tagen
Alle Issues in microsoft/PyRIT
Ähnliche Issues
-
URLValidator ignores an explicit empty scheme allowlistEvtl. vergeben @IlyaKhalafi hat das heute übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 85/100
tortoise/tortoise-orm#2393 ·
Maintainer antworten meist innerhalb von 2 Tagen
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 62/100
frappe/frappe_docker#2046 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Weekly link check failedOffen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 62/100
-
complete_box_iou_loss / complete_box_iou: NaN gradients for zero-height boxes, NaN for point boxesOffen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 62/100
Maintainer antworten meist innerhalb von 1 Tag
-
AXI SMU SPEC
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 62/100
tenstorrent/tt-oca-harness#3556 ·
Maintainer antworten meist innerhalb von 1 Tag