BUG: regex, package-hallucination and aggregator scorer identities collide across configs
Les mainteneurs répondent en général sous 2 jours
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 35/100
Piste de recherche
Start with RegexScorer._build_identifier and the _ConfigurableRegexScorerMixin scorers (XSS, SQLi, SSRF, MarkdownInjection), then compare with CredentialLeakScorer, which already hashes its patterns. Also check PackageHallucinationScorer and the FloatScaleScorerByCategory and FloatScaleScorerAllCategories aggregators, whose __name__ values collide. Reproduce the four collision cases in the issue before changing anything. Done means distinct identifiers for differently configured scorers, default-config hashes unchanged, and a maintainer decision on the metrics registry.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Some scorer identifiers leave out the config that decides the result, so differently configured scorers share a hash and eval_hash. That means get_scorer_metrics() and the evaluator's skip-if-exists can return another config's metrics, and stored scores can't be told apart.
RegexScorer._build_identifier only records pattern_count, so any two RegexScorers with the same number of patterns collide. The same goes for the _ConfigurableRegexScorerMixin scorers (XSS, SQLi, SSRF, MarkdownInjection and the rest) when they're given custom patterns. CredentialLeakScorer already hashes its patterns, so it's only the base that's missing it.
PackageHallucinationScorer only records known_package_count, so two scorers with different package sets of the same size look identical.
FloatScaleScorerByCategory.MAX and FloatScaleScorerAllCategories.MAX are both named MAX_by_category_, and the same is true for MIN and AVERAGE. Scorers record the aggregator's name, but the two behave differently: one returns a score per category and makes FloatScaleThresholdScorer raise, while the other returns a single score.
RegexScorer A vs B (1 pattern each, different patterns): same hash True, same eval_hash True; A -> false, B -> true
Markdown default vs custom patterns: same eval_hash True
PackageHallucination {requests} vs {evilpkg}: eval_hash equal True
aggregator names: MAX_by_category_ MAX_by_category_ -> same eval_hash True
A fix would add a digest of the patterns and the package set, only when they differ from the defaults so stored default hashes stay put, and give the all-categories aggregators their own names. Since that moves some hashes, I'm filing first to check how you want the metrics registry handled.
- Langage dominant
- Python
- Étoiles
- 4.7k
- Forks
- 1k
- Merge moyen
- 2 j 2 h
- PR mergées (30 j)
- 439
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
-
Description-only preset edits split comma-containing exact goals into separate goalsPeut-être pris @MRX-72 l’a pris il y a 1 jour. Ouvertehelp wanted
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
Les mainteneurs répondent en général sous 2 jours
-
GUI rejects valid empty-string SearchReplaceConverter settings, preventing deletion convertersPeut-être pris @Darshika140 l’a pris il y a 1 jour. Ouvertehelp wanted
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
microsoft/PyRIT#3749 · 1 commentaire ·
Les mainteneurs répondent en général sous 2 jours
-
HTML scenario export replaces an intentionally empty converted message with the original textPeut-être pris @VISHNU0906 l’a pris il y a 1 jour. Ouvertehelp wanted
Difficulté 2/5 1-3 heures Accessibilité débutants 77/100
microsoft/PyRIT#3741 · 1 commentaire · 1 personne assignée ·
Les mainteneurs répondent en général sous 2 jours
-
help wanted
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
Les mainteneurs répondent en général sous 2 jours
-
Development toolchain includes an audited vulnerable Zod versionPeut-être pris @ppcvote l’a pris aujourd’hui. Ouvertehelp wanted
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
microsoft/PyRIT#3725 · 1 commentaire ·
Les mainteneurs répondent en général sous 2 jours
Toutes les issues de microsoft/PyRIT
Issues similaires
-
area:scripts area:tests bug priority:later
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
Ikalus1988/MisakaNet#4358 ·
Les mainteneurs répondent en général sous 1 jour
-
Discovered ports from service discovery are never propagated to modules in Module.load()Peut-être pris @vishalmore90 l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
OWASP/Nettacker#1828 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 88/100
aws-samples/sample-per-model-bedrock#708 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
-
[Performance] Bound resolve_api_hashes raw fallback reads to the 1 MiB region actually scannedOuverte
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
sjkim1127/Reversecore_MCP#365 ·
Les mainteneurs répondent en général sous 1 jour