BUG: XSSOutputScorer misses SVG and JavaScript data URIs
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
Piste de recherche
Find the XSSOutputScorer implementation and its tests; the issue does not name their paths. Start by tracing the existing data:text/html URI patterns and the reproductions in the issue. Done when SVG and JavaScript data URIs score True in both cases described; linked pull request #3400 is already open.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Describe the bug
XSSOutputScorer detects cross-site scripting (XSS) payloads in LLM responses (mapping to OWASP LLM02: Insecure Output Handling). While it detects inline <script>, event handlers, and data:text/html URIs, its data URI patterns are hardcoded exclusively to text/html:
-
SVG Data URIs (
data:image/svg+xml):
SVG markup can execute arbitrary JavaScript via embedded<script>tags or event handlers (onload=alert(1)). When embedded in markdown images (>)), HTML<img src="data:image/svg+xml;base64,...">, or<object data="data:image/svg+xml,...">, these zero-click vectors score asFalse. -
JavaScript Data URIs (
data:text/javascript,data:application/javascript):
Direct script execution via data URIs (e.g.<script src="data:text/javascript,alert(1)">or markdown links[click](data:text/javascript,...)) bypassesdata:text/htmland scores asFalse.
Steps/Code to Reproduce
import asyncio
from pyrit.score import XSSOutputScorer
async def main():
scorer = XSSOutputScorer()
# SVG data URI with onload:
score1 = (await scorer.score_text_async('<img src="data:image/svg+xml;base64,PHN2ZyBvbmxvYWQ9YWxlcnQoMSk+">'))[0]
print("SVG data URI detected:", score1.get_value())
# Script data URI:
score2 = (await scorer.score_text_async('<script src="data:text/javascript,alert(1)"></script>'))[0]
print("Script data URI detected:", score2.get_value())
asyncio.run(main())
Expected Results
Both XSS data URIs should be recognized as executable content and score as True.
Actual Results
Both payloads score as False.
- Langage dominant
- Python
- Étoiles
- 4.7k
- Forks
- 980
- Merge moyen
- 2 j 9 h
- PR mergées (30 j)
- 422
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: Garak and ML-VLSU loaders still load one example when max_examples is 0 or negativePeut-être pris @ShivamSharma43 l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
Les mainteneurs répondent en général sous 2 jours
-
BUG: ComicJailbreak max_examples counts goals that render nothing, so templates=["code"] with max_examples=10 failsPeut-être pris @ShivamSharma43 l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
Les mainteneurs répondent en général sous 2 jours
-
BUG: SeedDatasetFilter matches harm_categories, modalities and size case-sensitively, unlike tagsPeut-être pris @ShivamSharma43 l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
Les mainteneurs répondent en général sous 2 jours
-
Conversation drawer shows the previous attack's conversations after switching attacksPeut-être pris @ManoharPaturi l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
microsoft/PyRIT#3575 · 2 commentaires · 1 personne assignée ·
Les mainteneurs répondent en général sous 2 jours
-
Conversation draft turns permanently dirty when applied conversions match no piecePeut-être pris @ManoharPaturi l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 83/100
microsoft/PyRIT#3573 · 1 personne assignée ·
Les mainteneurs répondent en général sous 2 jours
Toutes les issues de microsoft/PyRIT
Issues similaires
-
component:benchmark
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
agentic-os-org/ANOLISA#9177 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 88/100
distrochooser/distrochooser#520 ·
Les mainteneurs répondent en général sous 2 jours
-
Status: Needs confirmation Status: Needs triage
Difficulté 2/5 1-3 heures Accessibilité débutants 64/100
Les mainteneurs répondent en général sous 1 jour
-
[BUG] Published Docker images lack the redis extra: HEADROOM_COMPRESS_SESSION_STORE stops startupPeut-être pris @AlessandroSpallina l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
headroomlabs-ai/headroom#4513 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 65/100
codespell-project/codespell#4060 ·
Les mainteneurs répondent en général sous 1 jour