BUG: get_jailbreak_templates(num_templates=0) returns every template and the Jailbreak scenario accepts num_jailbreaks below 1
I maintainer di solito rispondono entro 2 giorni
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 35/100
Direzione di ricerca
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.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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
- Lingua principale
- Python
- Stelle
- 4.6k
- Fork
- 962
- Merge medio
- 2g 13h
- PR unite (30g)
- 423
Preparare l'ambiente
Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Nessuna guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di microsoft/PyRIT
-
BUG: AzureBlobStorageTarget returns a URL with // when the container URL ends with a slashForse già presa @ShivamSharma43 l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
I maintainer di solito rispondono entro 2 giorni
-
BUG: OpenAIImageTarget uploads edited images under a generated local path instead of their file nameForse già presa @ShivamSharma43 l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 79/100
I maintainer di solito rispondono entro 2 giorni
-
BUG: PathTraversalOutputScorer misses canonical Windows target windows/win.ini and IIS web.configForse già presa @Kaap10 l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
I maintainer di solito rispondono entro 2 giorni
-
BUG: XXEOutputScorer misses direct external DTD references and Java netdoc: / gopher: URI schemesForse già presa @Kaap10 l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 2 giorni
-
BUG: StaticPromptInjectionScorer misses modern LLM chat template tokens (Meta Llama 3+, Google Gemma, Microsoft Phi-3/4)Forse già presa @Kaap10 l’ha presa oggi. Aperta
Difficoltà 1/5 1-3 ore Idoneità per principianti 84/100
I maintainer di solito rispondono entro 2 giorni
Tutte le issue di microsoft/PyRIT
Issue simili
-
Difficoltà 1/5 1-3 ore Idoneità per principianti 85/100
WLAN-Pi/wlanpi-profiler#341 ·
I maintainer di solito rispondono entro 1 giorno
-
Memory leak: the shared `validation_aborted_error` keeps every traceback it is raised throughForse già presa @Fire162 l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
graphql-python/graphql-core#287 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 67/100
roman-corgi/ctc-dip#160 ·
I maintainer di solito rispondono entro 1 giorno
-
type-bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
render_findings.py reads and writes in the host's default encoding, so findings.html breaks on a cp1252 Windows hostForse già presa @Aaqibhafeezkhan l’ha presa oggi. Apertabug good first issue mentored python size: XS up-for-grabs
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
dheerajjha/mcp-migrate#366 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno