BUG: get_jailbreak_templates(num_templates=0) returns every template and the Jailbreak scenario accepts num_jailbreaks below 1
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 TextJailBreak.get_jailbreak_templates and Jailbreak.set_params_from_args, then inspect the existing validation for num_jailbreak_attempts. Add or update focused tests for invalid num_templates values and num_jailbreaks below 1; done means both APIs reject these inputs with clear ValueErrors. Pull request #3418 is already open, so check its changes and discussion before starting.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Describe the bug
TextJailBreak.get_jailbreak_templates(num_templates=...) only samples when num_templates is truthy (if num_templates:), and nothing checks the value:
num_templates=0returns all templates (650 on main) instead of zero or an error. The docstring saysNoneis the way to get all of them.num_templates=-1fails insiderandom.samplewith the unrelatedSample larger than population or is negative.num_templates=Truereturns one template, and2.5fails withTypeError: can't multiply sequence by non-int of type 'float'.
The Jailbreak scenario passes its num_jailbreaks run parameter through as num_jailbreaks or _DEFAULT_NUM_JAILBREAKS, and set_params_from_args checks only num_jailbreak_attempts. So num_jailbreaks=0 (for example --num-jailbreaks 0 on the CLI) silently runs the default random sample of 2 templates, and num_jailbreaks=-1 is accepted and only fails later in initialize_async with the random.sample message.
Steps/Code to Reproduce
from pyrit.datasets import TextJailBreak
print(len(TextJailBreak.get_jailbreak_templates()))
print(len(TextJailBreak.get_jailbreak_templates(num_templates=0)))
print(len(TextJailBreak.get_jailbreak_templates(num_templates=True)))
TextJailBreak.get_jailbreak_templates(num_templates=-1)
import asyncio
from unittest.mock import MagicMock
from pyrit.scenario.scenarios.airt.jailbreak import Jailbreak
from pyrit.score import TrueFalseScorer
from pyrit.setup import IN_MEMORY, initialize_pyrit_async
asyncio.run(initialize_pyrit_async(memory_db_type=IN_MEMORY))
scenario = Jailbreak(objective_scorer=MagicMock(spec=TrueFalseScorer))
scenario.set_params_from_args(args={"num_jailbreaks": 0}) # accepted; the run uses 2 random templates
scenario.set_params_from_args(args={"num_jailbreaks": -1}) # accepted; fails later in initialize_async
Expected Results
get_jailbreak_templates raises a ValueError naming num_templates for anything other than None or an integer of at least 1, and the Jailbreak scenario rejects num_jailbreaks below 1 in set_params_from_args, the same way it already rejects num_jailbreak_attempts below 1.
Actual Results
650
650
1
ValueError: Sample larger than population or is negative
Both set_params_from_args calls return without error.
Screenshots
N/A
Versions
- OS: Windows 11
- Python version: 3.11.9
- PyRIT version: installed from main (4cb71734) in editable mode
- Lenguaje dominante
- Python
- Estrellas
- 4.6k
- Forks
- 962
- Merge medio
- 2 d 13 h
- PR fusionados (30 d)
- 423
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: Overlapping scorer-evaluation globs duplicate CSVs and change accuracyPosiblemente ocupada @its-amann la tomó hace 1 día. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
microsoft/PyRIT#3430 · 1 comentario ·
Los mantenedores suelen responder en 2 días
-
BUG: MarkdownInjectionScorer misses shortcut-reference images with path-based exfiltration, and raw HTML <img>Posiblemente ocupada @aatif101 la tomó hace 3 días. AbiertoBug: triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
microsoft/PyRIT#3343 · 2 comentarios · 1 asignado ·
Los mantenedores suelen responder en 2 días
-
Detect Azure SAS tokens, SharedAccessKey connection strings, and Databricks PATs in CredentialLeakScorerPosiblemente ocupada @nithin42 la tomó hoy. Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 68/100
Los mantenedores suelen responder en 2 días
-
BUG: OpenAITTSTarget accepts any speed, so an out-of-range value is only sent to the API on every requestPosiblemente ocupada @ShivamSharma43 la tomó hace 1 día. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 25/100
microsoft/PyRIT#3445 · 1 comentario · 1 asignado ·
Los mantenedores suelen responder en 2 días
-
BUG: LetterBijectionConverter accepts a negative fixed_size and then leaves the prompt unchangedPosiblemente ocupada @ShivamSharma43 la tomó hace 1 día. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 35/100
microsoft/PyRIT#3434 · 1 asignado ·
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 67/100
MISP/misp-workbench#496 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 1-3 horas Aptitud para principiantes 88/100
fossasia/visdom-dev#69 ·
Los mantenedores suelen responder en 3 días
-
[Bug] Parameters named like a property break to_xcal()Posiblemente ocupada @atharvasalunke1267 la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
collective/icalendar#2018 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Los mantenedores suelen responder en 1 día