BUG: XSSOutputScorer misses SVG and JavaScript data URIs
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
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.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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.
- Lenguaje dominante
- Python
- Estrellas
- 4.6k
- Forks
- 962
- Merge medio
- 2 d 15 h
- PR fusionados (30 d)
- 398
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: MarkdownInjectionScorer misses shortcut-reference images with path-based exfiltration, and raw HTML <img>Posiblemente ocupada @aatif101 la tomó hace 1 día. 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
-
BUG: UrlConverter preserves forward slashes by default, preventing path payload evasionPosiblemente ocupada @Kaap10 la tomó hace 1 día. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 25/100
Los mantenedores suelen responder en 2 días
-
BUG: FuzzerGenerator accepts a jailbreak goal below 1 and a success threshold outside [0, 1]Posiblemente ocupada @ShivamSharma43 la tomó hace 1 día. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 35/100
Los mantenedores suelen responder en 2 días
-
BUG: ManyShotJailbreakAttack accepts a negative example_count and drops examples from the endPosiblemente ocupada @ShivamSharma43 la tomó hace 1 día. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 35/100
Los mantenedores suelen responder en 2 días
-
[BLOCKED] FEAT: Drill into paired Scenario outcome conversationsPosiblemente ocupada @shashank03-dev la tomó hace 1 día. Abiertofeature-request help wanted
Dificultad 5/5 Más de una semana Aptitud para principiantes 10/100
microsoft/PyRIT#3389 · 2 comentarios ·
Los mantenedores suelen responder en 2 días
Todos los issues de microsoft/PyRIT
Issues similares
-
Uninstall guide omits the CloudWatch log groups AWS CodeBuild creates for useCodeBuild pipelinesAbiertobug documentation
Dificultad 1/5 1-3 horas Aptitud para principiantes 88/100
awslabs/visual-asset-management-system#552 ·
Los mantenedores suelen responder en 1 día
-
netbox status: needs triage type: documentation
Dificultad 1/5 Menos de una hora Aptitud para principiantes 76/100
netbox-community/netbox#23460 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
awslabs/threat-composer#362 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
ansys/pyansys-common-mcp#213 ·
Los mantenedores suelen responder en 3 días