BUG: DenylistConverter and TransparencyAttackConverter identifiers ignore settings that change output
Los mantenedores suelen responder en 2 días
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 35/100
Línea de trabajo
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.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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
- Lenguaje dominante
- Python
- Estrellas
- 4.6k
- Forks
- 962
- Merge medio
- 2 d 16 h
- PR fusionados (30 d)
- 354
Preparar el entorno
Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Sin guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de microsoft/PyRIT
-
BUG: label queries only return the final conversation of an attackPosiblemente ocupada @u7k4rs6 la tomó hace 5 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
microsoft/PyRIT#3095 · 4 comentarios · 1 asignado ·
Los mantenedores suelen responder en 2 días
-
Dificultad 3/5 1-2 días Aptitud para principiantes 72/100
microsoft/PyRIT#3325 · 1 comentario ·
Los mantenedores suelen responder en 2 días
-
Detection coverage gaps: 47 missed payload classes across 9 output scorersPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 53/100
Los mantenedores suelen responder en 2 días
-
Dificultad 4/5 3-5 días Aptitud para principiantes 46/100
Los mantenedores suelen responder en 2 días
-
BUG: Tone, Tense, Translation, Noise, ScientificTranslation and Variation converter identifiers ignore a custom prompt_templatePosiblemente ocupada @ShivamSharma43 la tomó hace 1 día. Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 20/100
Los mantenedores suelen responder en 2 días
Todos los issues de microsoft/PyRIT
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 90/100
SublimeText/AdvancedNewFile#211 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 73/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 83/100
Imbad0202/academic-research-skills#987 ·
Los mantenedores suelen responder en 1 día
-
Add date of request to the UIAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
-
Pull-through from gcr.io returns 500 when pulling using podman/buildahPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. AbiertoIssue Triage-Needed
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
pulp/pulp_container#2581 ·
Los mantenedores suelen responder en 1 día