BUG: ManyShotJailbreakAttack accepts a negative example_count and drops examples from the end
Les mainteneurs répondent en général sous 2 jours
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 35/100
- Type d'issue
- Bug
- Clarté
- Clairement spécifiée
- Activité
- À l'abandon
- Stack technique
- python
- Domaine
- security, testing-qa
Piste de recherche
Start at ManyShotJailbreakAttack.validate_constructor_parameters and the construction path described in the issue; check how the REST TechniqueService.create_async path uses that validation. Add coverage for non-positive, boolean, and non-integer example_count values at construction and validation, then confirm invalid values raise a ValueError naming example_count. An open linked pull request (#3395) indicates work is already underway.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Describe the bug
ManyShotJailbreakAttack uses example_count as a slice bound (examples[:example_count]), but validate_constructor_parameters only rejects 0. A negative count is accepted and silently drops examples from the end of the list instead of selecting from the start, so example_count=-1 with the bundled dataset sends 399 examples, and with five custom examples -1 keeps four and -4 keeps one. True is accepted as 1, and non-integers fail with an unrelated error (2.5 raises TypeError: slice indices must be integers..., -5 with five examples raises the misleading Many shot examples must be provided.).
Because the check sits in validate_constructor_parameters, the REST technique API (TechniqueService.create_async) also accepts {"example_count": -1} and stores a technique that later runs with the wrong number of examples. The neighbouring bounds in that API (max_attempts_on_failure, max_turns, tree_depth, chunk_size, ...) are all rejected up front.
Steps/Code to Reproduce
import asyncio
from unittest.mock import MagicMock
from pyrit.executor.attack import ManyShotJailbreakAttack
from pyrit.prompt_target import PromptTarget
from pyrit.setup import IN_MEMORY, initialize_pyrit_async
asyncio.run(initialize_pyrit_async(memory_db_type=IN_MEMORY))
target = MagicMock(spec=PromptTarget)
examples = [{"user": f"q{i}", "assistant": f"a{i}"} for i in range(5)]
for count in (-1, -4, True):
attack = ManyShotJailbreakAttack(objective_target=target, example_count=count, many_shot_examples=examples)
print(count, len(attack._examples))
print(len(ManyShotJailbreakAttack(objective_target=target, example_count=-1)._examples))
Expected Results
example_count values that are not positive integers raise a ValueError naming example_count, both at construction and in validate_constructor_parameters.
Actual Results
-1 4
-4 1
True 1
399
Screenshots
N/A
Versions
- OS: Windows 11
- Python version: 3.11.9
- PyRIT version: installed from main (1979257a) in editable mode
- Langage dominant
- Python
- Étoiles
- 4.6k
- Forks
- 962
- Merge moyen
- 2 j 13 h
- PR mergées (30 j)
- 423
Préparer son environnement
Lance le conteneur de développement du projet dans votre navigateur, avec votre propre compte GitHub.
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Aucun guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de microsoft/PyRIT
-
BUG: Overlapping scorer-evaluation globs duplicate CSVs and change accuracyPeut-être pris @its-amann l’a pris il y a 1 jour. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
microsoft/PyRIT#3430 · 1 commentaire ·
Les mainteneurs répondent en général sous 2 jours
-
BUG: MarkdownInjectionScorer misses shortcut-reference images with path-based exfiltration, and raw HTML <img>Peut-être pris @aatif101 l’a pris il y a 3 jours. OuverteBug: triage
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
microsoft/PyRIT#3343 · 2 commentaires · 1 personne assignée ·
Les mainteneurs répondent en général sous 2 jours
-
Detect Azure SAS tokens, SharedAccessKey connection strings, and Databricks PATs in CredentialLeakScorerPeut-être pris @nithin42 l’a pris aujourd’hui. Ouverte
Difficulté 3/5 1-2 jours Accessibilité débutants 68/100
Les mainteneurs répondent en général sous 2 jours
-
BUG: OpenAITTSTarget accepts any speed, so an out-of-range value is only sent to the API on every requestPeut-être pris @ShivamSharma43 l’a pris il y a 1 jour. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 25/100
microsoft/PyRIT#3445 · 1 commentaire · 1 personne assignée ·
Les mainteneurs répondent en général sous 2 jours
-
BUG: LetterBijectionConverter accepts a negative fixed_size and then leaves the prompt unchangedPeut-être pris @ShivamSharma43 l’a pris il y a 1 jour. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 35/100
microsoft/PyRIT#3434 · 1 personne assignée ·
Les mainteneurs répondent en général sous 2 jours
Toutes les issues de microsoft/PyRIT
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 67/100
MISP/misp-workbench#496 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 66/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 1/5 1-3 heures Accessibilité débutants 88/100
fossasia/visdom-dev#69 ·
Les mainteneurs répondent en général sous 3 jours
-
[Bug] Parameters named like a property break to_xcal()Peut-être pris @atharvasalunke1267 l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
collective/icalendar#2018 · 2 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
Les mainteneurs répondent en général sous 1 jour