From 50c93edfb82cde0af5cc82db190d6a667238164d Mon Sep 17 00:00:00 2001 From: Marius Ciepluch <11855163+norandom@users.noreply.github.com> Date: Sat, 3 Oct 2026 08:23:33 +0200 Subject: [PATCH] learn: 98 advisory-fix pairs whose function survives the fix (advisory-fixes-2) Real (vulnerable function, fixed function) pointer pairs for the six compiled families, mined at zero model cost from reviewed GHSA advisories (pip, npm, maven, composer), newest first: 79 of 98 published after 2026-06-01 (post_cutoff = true). Each pair: one linked one-parent fix commit, <= 4 source files / 120 lines, the function holding the changed code lines declared once on both sides with a changed body; every function diff read and kept only when the named function holds the fix (145 reviewed, 100 kept); 2 dropped by the reserved-population test; permissive licences only, no repository named elsewhere under benchmarks/. New label source advisory-fixes-2; the advisory-fix tests run over both batches. Memory 937 -> 1133 static examples (98 paired groups added); positives-only groups stay 99 (vibe-py/dev-php/v2 data gaps), their share of positive groups in the six families 0.40 -> 0.29. Embeddings: 7 calls, $0.0014. No chat-model call. Record: benchmarks/measurements/2026-10-03-decision-engine-negatives-harvest. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01EmM1j46qgKMh3zqD1QMwEo --- .../record.json | 351 ++ .../pairs/advisory-fixes-2/catalog.toml | 3549 +++++++++++++++++ .../pairs/advisory-fixes-2/verification.json | 496 +++ src/openultrasast/learn/sources.toml | 12 + tests/test_advisory_fix_pairs.py | 65 +- 5 files changed, 4454 insertions(+), 19 deletions(-) create mode 100644 benchmarks/measurements/2026-10-03-decision-engine-negatives-harvest/record.json create mode 100644 benchmarks/pairs/advisory-fixes-2/catalog.toml create mode 100644 benchmarks/pairs/advisory-fixes-2/verification.json diff --git a/benchmarks/measurements/2026-10-03-decision-engine-negatives-harvest/record.json b/benchmarks/measurements/2026-10-03-decision-engine-negatives-harvest/record.json new file mode 100644 index 0000000..af39487 --- /dev/null +++ b/benchmarks/measurements/2026-10-03-decision-engine-negatives-harvest/record.json @@ -0,0 +1,351 @@ +{ + "created": "2026-10-03", + "note": "COUNTS ONLY. Real (vulnerable function, fixed function) pairs where the function survives the fix, mined at zero model cost from reviewed GitHub advisories for the six compiled families, added as pointer-pair corpus benchmarks/pairs/advisory-fixes-2 (98 pairs, source `advisory-fixes-2` in learn/sources.toml), labelled, given static feature records and built into the memory store; their excerpts embedded. No chat-model call. Candidate, path, function and repository names stay in the catalog; the two pairs the reserved-population test flagged are withheld (never printed: found by bisection with the test's output discarded).", + "method": { + "enumeration": "gh api /advisories?type=reviewed&ecosystem=&cwes=&published=>2025-06-01, per ecosystem (pip, npm, maven, composer, go, rubygems) x family; newest first", + "advisories_enumerated": 6594, + "advisories_published_after_2026_06_01": 2400, + "automated_screen": "single family by CWE; a linked fix commit (at most 3, one repository); repository not named anywhere under benchmarks/ (populations v1/v2, every pair corpus; excluded v3 file names never opened), no WordPress plugin, one pair per repository; SPDX licence permissive; one-parent commit with <= 4 non-test source files and <= 120 changed source lines; the function holding most changed CODE lines (comments and blanks excluded) inside its own matcher span, declared exactly once on both sides, body changed, >= 25% of the file's changed code lines (second pass; the first pass counted lines by nearest declaration above)", + "file_reads": "the two versions of each changed source file through the contents API (metadata + two raw files per file; no clone, no scanner, engine, plane task or model on any of these repositories)", + "manual_review": "every automated candidate's function diff was read (agent, no model call) and kept only when the named function itself holds the fix", + "reserved_population_guard": "tests/test_independent_population.py::test_no_reserved_repository_is_referenced_by_the_development_tree, run with its output discarded; bisection over catalog subsets, 23 runs", + "quotas": "20 per family on the second pass (14 on the first); advisories past a met quota were not examined", + "mechanism": "family default (injection/output_encoding/deserialization source_reaches_sink, path path_join_user_input, access_control missing_auth_guard, untrusted_destination validation_strength for CWE-601 else source_reaches_sink); provenance = agent" + }, + "screened": { + "advisories_examined_second_pass": 2983, + "outcomes_second_pass": { + "no fix commit linked": 1247, + "repository already in benchmarks/ (populations v1/v2 or a pair corpus)": 520, + "language outside the feature vocabulary (go/ruby)": 332, + "CWEs span several families": 253, + "repository already kept (one pair per repository)": 140, + "licence not permissive or unrecorded": 135, + "large commit (refactor or release, not the fix)": 125, + "kept": 110, + "no function declared on both sides with a changed body": 51, + "fix spread over several commits or repositories": 25, + "manual review: the chosen function does not hold the fix (comment-only, misattributed, partial or family mismatch)": 13, + "no source file changed": 11, + "merge or root commit": 11, + "language outside the feature vocabulary (go/ruby/c#/...)": 9, + "WordPress plugin (population v3 safety)": 1 + }, + "candidates_manually_reviewed": 145, + "kept_after_review": 100, + "review_drops": { + "total": 45, + "function misattributed (matcher span overrun or an undetected enclosing declaration)": 13, + "change in the function unrelated to the advisory (refactor, rename, formatting, another advisory)": 11, + "partial: the function only calls or configures the real fix": 7, + "comment or documentation change only": 6, + "one pair per repository (a reviewed pair of the same repository kept)": 4, + "second pass chose another function of an advisory already reviewed": 2, + "family mismatch": 1, + "unsure": 1 + }, + "reserved_population_drops": 2, + "kept": 98 + }, + "kept": { + "total": 98, + "by_family": { + "access_control": 17, + "deserialization": 11, + "injection": 20, + "output_encoding": 16, + "path": 17, + "untrusted_destination": 17 + }, + "post_cutoff_by_family": { + "access_control": 13, + "deserialization": 2, + "injection": 20, + "output_encoding": 16, + "path": 17, + "untrusted_destination": 11 + }, + "post_cutoff_total": 79, + "by_language": { + "typescript": 34, + "python": 30, + "javascript": 15, + "java": 10, + "php": 9 + }, + "by_ecosystem": { + "npm": 48, + "pip": 32, + "maven": 9, + "composer": 9 + }, + "licences": { + "MIT": 67, + "Apache-2.0": 24, + "BSD-3-Clause": 5, + "ISC": 1, + "Unlicense": 1 + }, + "split": { + "train": 51, + "holdout": 47 + }, + "published_range": [ + "2025-06-06", + "2026-10-02" + ], + "verification": { + "verified": 98, + "excerpt_bytes_read": 526134 + }, + "known_limit": "excerpts inherit the label builder's matcher: some spans run past the function's end into the next declaration; the label is path::function and the changed lines were checked inside the span" + }, + "labels": { + "command": "ousast learn labels --root . --out --snapshot ", + "rows": [ + 6589, + 6981 + ], + "new_pair_rows": 392, + "new_pin_rows_by_label": { + "positive": 98, + "negative": 98 + }, + "fixed_side_negative": "98 of 98 pairs (absent_fixed_side 0)" + }, + "features": { + "command": "benchmarks/learn/build_features.py --labels --units --kinds pairs", + "records": 392, + "instrument_states_plane_all_families": { + "agree:missing": 74, + "agree:none": 122, + "delta:not_applicable": 196, + "engine:missing": 128, + "engine:none": 68, + "entry_points:not_applicable": 196, + "facts:not_applicable": 196, + "language:ran": 196, + "model_sinks:missing": 196, + "quick:ran": 196, + "roles:ran": 196, + "source:ran": 196, + "verify:missing": 74, + "verify:none": 122 + }, + "note": "quick rules and deterministic roles ran on each side; engine, verify, agree and model sinks never ran for these pairs (missing/none: null features, never zeros)" + }, + "memory_build": { + "command": "ousast learn memory build --labels --units --profile static --root . (exit 2: adjudications 9 of 43 anonymous functions, unchanged since 2026-10-01; rows kept)", + "examples": [ + 937, + 1133 + ], + "pairs_examples": [ + 772, + 968 + ], + "pairs_counts_after": { + "absent_fixed_side": 0, + "examples": 968, + "labels": 1936, + "no_excerpt": 0, + "no_record": 968, + "recorded": 968, + "unread": 0 + } + }, + "positives_only_groups": { + "how": "the 2026-10-02 gap record's count: static example rows of the store, per family, repository groups with a positive and no negative", + "before": 99, + "after": 99, + "before_note": "the store before this harvest held 937 examples (the 10-02 gap record counted 904 and 98; the 10-02 rebuild added one population-v2 positive without a negative)", + "why_unchanged": "the 99 are data gaps of other corpora (94 vibe-py pairs whose fixed side lost the function, 3 dev-php, 2 population-v2); a new repository group arrives with both labels, so it adds paired groups and leaves those counts as they were", + "paired_groups_total": [ + 151, + 249 + ], + "positives_only_share_of_positive_groups_six_families": [ + 0.4034, + 0.2857 + ], + "by_family_before_after": { + "access_control": { + "groups_pos_only": [ + 12, + 12 + ], + "groups_pos": [ + 32, + 49 + ], + "groups_both": [ + 20, + 37 + ], + "examples_neg": [ + 20, + 37 + ] + }, + "config_secrets": { + "groups_pos_only": [ + 3, + 3 + ], + "groups_pos": [ + 5, + 5 + ], + "groups_both": [ + 2, + 2 + ], + "examples_neg": [ + 13, + 13 + ] + }, + "deserialization": { + "groups_pos_only": [ + 20, + 20 + ], + "groups_pos": [ + 41, + 52 + ], + "groups_both": [ + 21, + 32 + ], + "examples_neg": [ + 21, + 32 + ] + }, + "injection": { + "groups_pos_only": [ + 11, + 11 + ], + "groups_pos": [ + 44, + 64 + ], + "groups_both": [ + 33, + 53 + ], + "examples_neg": [ + 70, + 90 + ] + }, + "memory": { + "groups_pos_only": [ + 0, + 0 + ], + "groups_pos": [ + 5, + 5 + ], + "groups_both": [ + 5, + 5 + ], + "examples_neg": [ + 173, + 173 + ] + }, + "output_encoding": { + "groups_pos_only": [ + 14, + 14 + ], + "groups_pos": [ + 36, + 52 + ], + "groups_both": [ + 22, + 38 + ], + "examples_neg": [ + 61, + 77 + ] + }, + "path": { + "groups_pos_only": [ + 12, + 12 + ], + "groups_pos": [ + 33, + 50 + ], + "groups_both": [ + 21, + 38 + ], + "examples_neg": [ + 21, + 38 + ] + }, + "unknown": { + "groups_pos_only": [ + 0, + 0 + ], + "groups_pos": [ + 2, + 2 + ], + "groups_both": [ + 2, + 2 + ], + "examples_neg": [ + 2, + 2 + ] + }, + "untrusted_destination": { + "groups_pos_only": [ + 27, + 27 + ], + "groups_pos": [ + 52, + 69 + ], + "groups_both": [ + 25, + 42 + ], + "examples_neg": [ + 36, + 53 + ] + } + } + }, + "embeddings": { + "command": "ousast learn memory embed --budget-usd 0.20 (dry run first: 66,005 estimated tokens, $0.0013)", + "requested": 1004, + "cached": 781, + "embedded": 223, + "calls": 7, + "tokens": 71163, + "usd": 0.001423, + "note": "embedded = the new pairs' excerpts plus the excerpts the 10-02 rebuild left without a vector; OpenRouter, the embedding model .env names" + }, + "spend": { + "chat_model_calls": 0, + "embedding_usd": 0.001423, + "github_api": "metadata and raw contents only" + } +} diff --git a/benchmarks/pairs/advisory-fixes-2/catalog.toml b/benchmarks/pairs/advisory-fixes-2/catalog.toml new file mode 100644 index 0000000..ce1aa45 --- /dev/null +++ b/benchmarks/pairs/advisory-fixes-2/catalog.toml @@ -0,0 +1,3549 @@ +# Advisory-fix pairs, batch 2 (2026-10-03): fixed-side negatives where the function SURVIVES the fix. +# +# Why: the decision engine's memory had 98 positives-only repository groups (2026-10-02-decision-engine-negatives-gap), +# 94 of them vibe-py pairs whose fixed side lost the function. This batch adds real (vulnerable, fixed) pairs of ONE +# function for the six families the engine compiles (access_control, deserialization, injection, output_encoding, +# path, untrusted_destination), mined at zero model cost from reviewed GitHub advisories (pip, npm, maven, composer), +# newest first, so most were published after 2026-06-01 (`post_cutoff = true`) and memorisation can be measured. +# +# Every pair: a reviewed GHSA advisory whose single fix commit (one parent) is linked from the advisory; at most 4 +# non-test source files and 120 changed source lines (the fix, not a refactor); the function the commit changes most +# is declared exactly once on both sides (the label builder's matcher, learn.excerpt.function_bounds) and its body +# differs. The positive is that function at `parent`, the negative the same function at `commit`. The function is +# chosen by changed lines, not read from the advisory text: `provenance = "agent"`, `fix_lines` records the counts. +# Repositories: permissive licences only (SPDX from the API), none named anywhere else under benchmarks/ (populations +# v1/v2, every pair corpus), no WordPress plugin, and the reserved-population test passes. Go and Ruby were not taken +# (their excerpts fall outside the feature vocabulary's languages, 2026-10-02 record). +# +# Pointer pairs (vendored = false), the advisory-fixes slice and cache layout: materialize.py --catalog +# verifies the cached excerpts (verification.json beside this file). Screening record: +# benchmarks/measurements/2026-10-03-decision-engine-negatives-harvest/record.json. `split` alternates train/holdout +# by fix date within each family; one pair per repository. + +[[pair]] +name = "prefect-token-validation-e216171" +slice = "advisory-fixes" +batch = "2026-10-03" +language = "python" +origin = "github-advisory" +license = "Apache-2.0" +repo = "prefecthq/prefect" +cve = "CVE-2026-3514 GHSA-c635-393c-hcx2" +cwe = "CWE-863" +ecosystem = "pip" +published_at = "2026-06-02T09:36:15Z" +post_cutoff = true +commit = "e21617125335025b4b27e7d6f0ca028e8e8f3b79" +parent = "d7a24b6f7bd68168501d9ecb67dd50a2b23868db" +commit_url = "https://github.com/prefecthq/prefect/commit/e21617125335025b4b27e7d6f0ca028e8e8f3b79" +vendored = false +host = "github" +path = "src/prefect/server/api/server.py" +mode = "name" +relpath = "src/prefect/server/api/server.py" +provenance = "agent" +split = "train" +review_tier = "advisory" +fix_date = "2026-03-10" +fix_lines = { in_function = 7, in_file = 9, source_total = 14 } + +[[pair.expected]] +cwe = "CWE-863" +class = "incorrect-authorization" +path = "src/prefect/server/api/server.py" +function = "token_validation" +mechanism = "missing_auth_guard" +family = "access_control" +evidence = "GHSA-c635-393c-hcx2: Prefect has an Authentication Middleware Bypass when URL paths are appended with 'health' or 'ready'" + +[[pair]] +name = "arcadedb-getdatabasegroupsconfiguration-04110c0" +slice = "advisory-fixes" +batch = "2026-10-03" +language = "java" +origin = "github-advisory" +license = "Apache-2.0" +repo = "arcadedata/arcadedb" +cve = "CVE-2026-44221 GHSA-fxc7-fm93-6q77" +cwe = "CWE-863" +ecosystem = "maven" +published_at = "2026-05-05T22:22:22Z" +post_cutoff = false +commit = "04110c06315da55604ac107f71fe7182f3a3deb8" +parent = "a28b5da98fdb57ac6dc5b5f94debe78b4ff4afd5" +commit_url = "https://github.com/arcadedata/arcadedb/commit/04110c06315da55604ac107f71fe7182f3a3deb8" +vendored = false +host = "github" +path = "server/src/main/java/com/arcadedb/server/security/ServerSecurity.java" +mode = "name" +relpath = "server/src/main/java/com/arcadedb/server/security/ServerSecurity.java" +provenance = "agent" +split = "holdout" +review_tier = "advisory" +fix_date = "2026-04-20" +fix_lines = { in_function = 32, in_file = 39, source_total = 51 } + +[[pair.expected]] +cwe = "CWE-863" +class = "incorrect-authorization" +path = "server/src/main/java/com/arcadedb/server/security/ServerSecurity.java" +function = "getDatabaseGroupsConfiguration" +mechanism = "missing_auth_guard" +family = "access_control" +evidence = "GHSA-fxc7-fm93-6q77: ArcadeDB vulnerable to cross-database authorization bypass and unsecured newly-created databases" + +[[pair]] +name = "langflow-get-flow-by-id-or-endpoint-name-2c9f498" +slice = "advisory-fixes" +batch = "2026-10-03" +language = "python" +origin = "github-advisory" +license = "MIT" +repo = "langflow-ai/langflow" +cve = "CVE-2026-55255 GHSA-qrpv-q767-xqq2" +cwe = "CWE-639" +ecosystem = "pip" +published_at = "2026-06-19T21:16:46Z" +post_cutoff = true +commit = "2c9f498d664a3c32698b57d7c5e752625291060e" +parent = "f4a2179bfddf8581ff1b1c671bafbffd8d2886e4" +commit_url = "https://github.com/langflow-ai/langflow/commit/2c9f498d664a3c32698b57d7c5e752625291060e" +vendored = false +host = "github" +path = "src/backend/base/langflow/helpers/flow.py" +mode = "name" +relpath = "src/backend/base/langflow/helpers/flow.py" +provenance = "agent" +split = "train" +review_tier = "advisory" +fix_date = "2026-04-22" +fix_lines = { in_function = 30, in_file = 27, source_total = 62 } + +[[pair.expected]] +cwe = "CWE-639" +class = "idor" +path = "src/backend/base/langflow/helpers/flow.py" +function = "get_flow_by_id_or_endpoint_name" +mechanism = "missing_auth_guard" +family = "access_control" +evidence = "GHSA-qrpv-q767-xqq2: Langflow: IDOR Vulnerability in `/api/v1/responses` Endpoint Allows Authenticated Attackers to Access Another User's Flow" + +[[pair]] +name = "grav-plugin-api-update-26f529c" +slice = "advisory-fixes" +batch = "2026-10-03" +language = "php" +origin = "github-advisory" +license = "MIT" +repo = "getgrav/grav-plugin-api" +cve = "CVE-2026-42843 GHSA-r945-h4vm-h736" +cwe = "CWE-863" +ecosystem = "composer" +published_at = "2026-05-05T21:20:03Z" +post_cutoff = false +commit = "26f529c7d438c73343e82311fb095caeaf1a6116" +parent = "76d7b62e9450c517caed709260b2d03393778ce4" +commit_url = "https://github.com/getgrav/grav-plugin-api/commit/26f529c7d438c73343e82311fb095caeaf1a6116" +vendored = false +host = "github" +path = "classes/Api/Controllers/UsersController.php" +mode = "name" +relpath = "classes/Api/Controllers/UsersController.php" +provenance = "agent" +split = "holdout" +review_tier = "advisory" +fix_date = "2026-04-27" +fix_lines = { in_function = 15, in_file = 19, source_total = 21 } + +[[pair.expected]] +cwe = "CWE-863" +class = "incorrect-authorization" +path = "classes/Api/Controllers/UsersController.php" +function = "update" +mechanism = "missing_auth_guard" +family = "access_control" +evidence = "GHSA-r945-h4vm-h736: Grav API Privilege Escalation to Super Admin" + +[[pair]] +name = "google-maps-mcp-main-00d8725" +slice = "advisory-fixes" +batch = "2026-10-03" +language = "python" +origin = "github-advisory" +license = "MIT" +repo = "arthurkatcher/google-maps-mcp" +cve = "GHSA-52cq-7v8r-62c6" +cwe = "CWE-306" +ecosystem = "pip" +published_at = "2026-05-08T16:32:29Z" +post_cutoff = false +commit = "00d872507c78e8116bbf9de7be7cd112945c0fd8" +parent = "e671db68c804c9e67d51582d3280839ffa65f127" +commit_url = "https://github.com/arthurkatcher/google-maps-mcp/commit/00d872507c78e8116bbf9de7be7cd112945c0fd8" +vendored = false +host = "github" +path = "run.py" +mode = "name" +relpath = "run.py" +provenance = "agent" +split = "train" +review_tier = "advisory" +fix_date = "2026-05-03" +fix_lines = { in_function = 17, in_file = 15, source_total = 27 } + +[[pair.expected]] +cwe = "CWE-306" +class = "missing-authentication" +path = "run.py" +function = "main" +mechanism = "missing_auth_guard" +family = "access_control" +evidence = "GHSA-52cq-7v8r-62c6: gmaps-mcp's unauthenticated HTTP transport allows unlimited Google Maps API calls at operator expense" + +[[pair]] +name = "camofox-mcp-createmcphttpapp-599f56e" +slice = "advisory-fixes" +batch = "2026-10-03" +language = "typescript" +origin = "github-advisory" +license = "MIT" +repo = "redf0x1/camofox-mcp" +cve = "GHSA-7hgr-7h44-33w2" +cwe = "CWE-306" +ecosystem = "npm" +published_at = "2026-05-19T20:13:35Z" +post_cutoff = false +commit = "599f56ee40f8062aeca541c251ed1d39fb437f50" +parent = "f6289fdce0bab700475ea85eb456243758a371a7" +commit_url = "https://github.com/redf0x1/camofox-mcp/commit/599f56ee40f8062aeca541c251ed1d39fb437f50" +vendored = false +host = "github" +path = "src/http.ts" +mode = "name" +relpath = "src/http.ts" +provenance = "agent" +split = "holdout" +review_tier = "advisory" +fix_date = "2026-05-12" +fix_lines = { in_function = 15, in_file = 42, source_total = 51 } + +[[pair.expected]] +cwe = "CWE-306" +class = "missing-authentication" +path = "src/http.ts" +function = "createMcpHttpApp" +mechanism = "missing_auth_guard" +family = "access_control" +evidence = "GHSA-7hgr-7h44-33w2: CamoFox MCP: Unauthenticated HTTP MCP browser-control surface" + +[[pair]] +name = "spring-graphql-isoverridefor-63a89ed" +slice = "advisory-fixes" +batch = "2026-10-03" +language = "java" +origin = "github-advisory" +license = "Apache-2.0" +repo = "spring-projects/spring-graphql" +cve = "CVE-2026-41856 GHSA-phxq-526m-79px" +cwe = "CWE-284" +ecosystem = "maven" +published_at = "2026-06-11T09:31:56Z" +post_cutoff = true +commit = "63a89ed1379be646822dca9779b15dbf2ce45839" +parent = "b53f2e9510a84599e385edc22df2aeeafafdd107" +commit_url = "https://github.com/spring-projects/spring-graphql/commit/63a89ed1379be646822dca9779b15dbf2ce45839" +vendored = false +host = "github" +path = "spring-graphql/src/main/java/org/springframework/graphql/data/method/HandlerMethod.java" +mode = "name" +relpath = "spring-graphql/src/main/java/org/springframework/graphql/data/method/HandlerMethod.java" +provenance = "agent" +split = "train" +review_tier = "advisory" +fix_date = "2026-05-17" +fix_lines = { in_function = 2, in_file = 1, source_total = 2 } + +[[pair.expected]] +cwe = "CWE-284" +class = "access-control" +path = "spring-graphql/src/main/java/org/springframework/graphql/data/method/HandlerMethod.java" +function = "isOverrideFor" +mechanism = "missing_auth_guard" +family = "access_control" +evidence = "GHSA-phxq-526m-79px: Spring for GraphQL: Annotation Detection Vulnerability" + +[[pair]] +name = "jenkins-dofilltimezonenameitems-0586de4" +slice = "advisory-fixes" +batch = "2026-10-03" +language = "java" +origin = "github-advisory" +license = "MIT" +repo = "jenkinsci/jenkins" +cve = "CVE-2026-53439 GHSA-g28p-6mcc-v4rv" +cwe = "CWE-862" +ecosystem = "maven" +published_at = "2026-06-10T15:31:31Z" +post_cutoff = true +commit = "0586de425598497cfb4dcdafa5007e507a440a77" +parent = "a154e1108f3170dc036ecbe6b2a89f164ff1554e" +commit_url = "https://github.com/jenkinsci/jenkins/commit/0586de425598497cfb4dcdafa5007e507a440a77" +vendored = false +host = "github" +path = "core/src/main/java/hudson/model/TimeZoneProperty.java" +mode = "name" +relpath = "core/src/main/java/hudson/model/TimeZoneProperty.java" +provenance = "agent" +split = "holdout" +review_tier = "advisory" +fix_date = "2026-05-29" +fix_lines = { in_function = 3, in_file = 4, source_total = 6 } + +[[pair.expected]] +cwe = "CWE-862" +class = "missing-authorization" +path = "core/src/main/java/hudson/model/TimeZoneProperty.java" +function = "doFillTimeZoneNameItems" +mechanism = "missing_auth_guard" +family = "access_control" +evidence = "GHSA-g28p-6mcc-v4rv: Jenkins exposes other users' timezone and view names to users with Overall/Read permission" + +[[pair]] +name = "netlicensing-mcp-dispatch-fbbb1d5" +slice = "advisory-fixes" +batch = "2026-10-03" +language = "python" +origin = "github-advisory" +license = "Apache-2.0" +repo = "labs64/netlicensing-mcp" +cve = "CVE-2026-54446 GHSA-x9vc-9ffq-p3gj" +cwe = "CWE-306" +ecosystem = "pip" +published_at = "2026-07-14T20:47:19Z" +post_cutoff = true +commit = "fbbb1d5ff88eb5400ec933a84e75601ebee48927" +parent = "e826d695df5a08d250dc88e9d8843ff0042ce35a" +commit_url = "https://github.com/labs64/netlicensing-mcp/commit/fbbb1d5ff88eb5400ec933a84e75601ebee48927" +vendored = false +host = "github" +path = "src/netlicensing_mcp/server.py" +mode = "name" +relpath = "src/netlicensing_mcp/server.py" +provenance = "agent" +split = "train" +review_tier = "advisory" +fix_date = "2026-06-04" +fix_lines = { in_function = 41, in_file = 80, source_total = 102 } + +[[pair.expected]] +cwe = "CWE-306" +class = "missing-authentication" +path = "src/netlicensing_mcp/server.py" +function = "dispatch" +mechanism = "missing_auth_guard" +family = "access_control" +evidence = "GHSA-x9vc-9ffq-p3gj: NetLicensing-MCP: Unauthenticated Use of Server-Side NetLicensing API Key in HTTP Mode" + +[[pair]] +name = "starlette-admin-validate-where-af05b45" +slice = "advisory-fixes" +batch = "2026-10-03" +language = "python" +origin = "github-advisory" +license = "MIT" +repo = "jowilf/starlette-admin" +cve = "CVE-2026-54553 GHSA-6753-gr46-6wpr" +cwe = "CWE-639" +ecosystem = "pip" +published_at = "2026-08-26T14:14:37Z" +post_cutoff = true +commit = "af05b45cd90944b726949fd650ab9d19f1abafc3" +parent = "eb2b3ec33174f4f28f0997670e9ae1da8b09fdbd" +commit_url = "https://github.com/jowilf/starlette-admin/commit/af05b45cd90944b726949fd650ab9d19f1abafc3" +vendored = false +host = "github" +path = "starlette_admin/views.py" +mode = "name" +relpath = "starlette_admin/views.py" +provenance = "agent" +split = "holdout" +review_tier = "advisory" +fix_date = "2026-06-08" +fix_lines = { in_function = 16, in_file = 34, source_total = 52 } + +[[pair.expected]] +cwe = "CWE-639" +class = "idor" +path = "starlette_admin/views.py" +function = "_validate_where" +mechanism = "missing_auth_guard" +family = "access_control" +evidence = "GHSA-6753-gr46-6wpr: Starlette-Admin's unvalidated `order_by` parameter allows ordering by hidden columns (info-exposure oracle) and HTTP 500 DoS" + +[[pair]] +name = "next-auth-initauth-d008b9b" +slice = "advisory-fixes" +batch = "2026-10-03" +language = "typescript" +origin = "github-advisory" +license = "ISC" +repo = "nextauthjs/next-auth" +cve = "CVE-2026-73421 GHSA-8fpg-xm3f-6cx3" +cwe = "CWE-285" +ecosystem = "npm" +published_at = "2026-07-23T14:52:23Z" +post_cutoff = true +commit = "d008b9b764bf4b322a87e1822d1dda7789258d8f" +parent = "af42d8f6559aa118ab551274776d06b132775f82" +commit_url = "https://github.com/nextauthjs/next-auth/commit/d008b9b764bf4b322a87e1822d1dda7789258d8f" +vendored = false +host = "github" +path = "packages/next-auth/src/lib/index.ts" +mode = "name" +relpath = "packages/next-auth/src/lib/index.ts" +provenance = "agent" +split = "train" +review_tier = "advisory" +fix_date = "2026-06-11" +fix_lines = { in_function = 12, in_file = 24, source_total = 31 } + +[[pair.expected]] +cwe = "CWE-285" +class = "missing-authorization" +path = "packages/next-auth/src/lib/index.ts" +function = "initAuth" +mechanism = "missing_auth_guard" +family = "access_control" +evidence = "GHSA-8fpg-xm3f-6cx3: Auth.js: Configuration errors can cause existence-based auth checks to fail open (auth object populated with an error)" + +[[pair]] +name = "deepseek-mcp-server-starthttptransport-dab07ed" +slice = "advisory-fixes" +batch = "2026-10-03" +language = "typescript" +origin = "github-advisory" +license = "MIT" +repo = "arikusi/deepseek-mcp-server" +cve = "CVE-2026-55605 GHSA-72f3-6w86-7rv3" +cwe = "CWE-306" +ecosystem = "npm" +published_at = "2026-08-25T18:38:30Z" +post_cutoff = true +commit = "dab07ed93ddde0ab219d4cb7066785847db53a32" +parent = "5e1302171e9941bacc2ec2f83fe313c914614328" +commit_url = "https://github.com/arikusi/deepseek-mcp-server/commit/dab07ed93ddde0ab219d4cb7066785847db53a32" +vendored = false +host = "github" +path = "src/transport-http.ts" +mode = "name" +relpath = "src/transport-http.ts" +provenance = "agent" +split = "holdout" +review_tier = "advisory" +fix_date = "2026-06-14" +fix_lines = { in_function = 31, in_file = 70, source_total = 97 } + +[[pair.expected]] +cwe = "CWE-306" +class = "missing-authentication" +path = "src/transport-http.ts" +function = "startHttpTransport" +mechanism = "missing_auth_guard" +family = "access_control" +evidence = "GHSA-72f3-6w86-7rv3: @arikusi/deepseek-mcp-server: Missing Authentication on Self-Hosted HTTP MCP Endpoint" + +[[pair]] +name = "network-ai-routerequest-a59c13a" +slice = "advisory-fixes" +batch = "2026-10-03" +language = "typescript" +origin = "github-advisory" +license = "MIT" +repo = "jovancoding/network-ai" +cve = "GHSA-mxjx-28vx-xjjj" +cwe = "CWE-862" +ecosystem = "npm" +published_at = "2026-06-19T21:42:32Z" +post_cutoff = true +commit = "a59c13a1f0ce0e8a0779a90343eef92fac5ab4c3" +parent = "344fb17362e873eefcdacb83415dbb3487bd1841" +commit_url = "https://github.com/jovancoding/network-ai/commit/a59c13a1f0ce0e8a0779a90343eef92fac5ab4c3" +vendored = false +host = "github" +path = "lib/approval-inbox.ts" +mode = "name" +relpath = "lib/approval-inbox.ts" +provenance = "agent" +split = "train" +review_tier = "advisory" +fix_date = "2026-06-18" +fix_lines = { in_function = 13, in_file = 34, source_total = 77 } + +[[pair.expected]] +cwe = "CWE-862" +class = "missing-authorization" +path = "lib/approval-inbox.ts" +function = "routeRequest" +mechanism = "missing_auth_guard" +family = "access_control" +evidence = "GHSA-mxjx-28vx-xjjj: Network-AI: ApprovalInbox HTTP server has no authentication — anyone can approve pending agent actions " + +[[pair]] +name = "device-builder-parse-args-9e294f7" +slice = "advisory-fixes" +batch = "2026-10-03" +language = "python" +origin = "github-advisory" +license = "Apache-2.0" +repo = "esphome/device-builder" +cve = "CVE-2026-59178 GHSA-rrxg-g2pf-6hh4" +cwe = "CWE-306" +ecosystem = "pip" +published_at = "2026-09-14T18:08:57Z" +post_cutoff = true +commit = "9e294f729c3eb7334bb57b9fc49b75b728052f52" +parent = "04bcde551ad1ff3f6e94279f8aac65effcd2977e" +commit_url = "https://github.com/esphome/device-builder/commit/9e294f729c3eb7334bb57b9fc49b75b728052f52" +vendored = false +host = "github" +path = "esphome_device_builder/controllers/config/settings.py" +mode = "name" +relpath = "esphome_device_builder/controllers/config/settings.py" +provenance = "agent" +split = "holdout" +review_tier = "advisory" +fix_date = "2026-06-20" +fix_lines = { in_function = 24, in_file = 13, source_total = 108 } + +[[pair.expected]] +cwe = "CWE-306" +class = "missing-authentication" +path = "esphome_device_builder/controllers/config/settings.py" +function = "parse_args" +mechanism = "missing_auth_guard" +family = "access_control" +evidence = "GHSA-rrxg-g2pf-6hh4: ESPHome Device Builder: Renamed auth env vars silently disable dashboard authentication on upgrade" + +[[pair]] +name = "typespec-start-30d6f65" +slice = "advisory-fixes" +batch = "2026-10-03" +language = "typescript" +origin = "github-advisory" +license = "MIT" +repo = "microsoft/typespec" +cve = "GHSA-7q9c-hpx7-9cwm" +cwe = "CWE-306" +ecosystem = "npm" +published_at = "2026-09-04T21:43:13Z" +post_cutoff = true +commit = "30d6f6598dd796e2d6aea038139d29b91e6a2da7" +parent = "156c91d401959eba1bde02142eb00b27c669e571" +commit_url = "https://github.com/microsoft/typespec/commit/30d6f6598dd796e2d6aea038139d29b91e6a2da7" +vendored = false +host = "github" +path = "packages/spector/src/server/server.ts" +mode = "name" +relpath = "packages/spector/src/server/server.ts" +provenance = "agent" +split = "train" +review_tier = "advisory" +fix_date = "2026-07-16" +fix_lines = { in_function = 4, in_file = 9, source_total = 11 } + +[[pair.expected]] +cwe = "CWE-306" +class = "missing-authentication" +path = "packages/spector/src/server/server.ts" +function = "start" +mechanism = "missing_auth_guard" +family = "access_control" +evidence = "GHSA-7q9c-hpx7-9cwm: TypeSpec: Unauthenticated Remote Shutdown of Spector Mock Server via POST /.admin/stop" + +[[pair]] +name = "tomcat-findsecurityconstraints-8bafd79" +slice = "advisory-fixes" +batch = "2026-10-03" +language = "java" +origin = "github-advisory" +license = "Apache-2.0" +repo = "apache/tomcat" +cve = "CVE-2026-65182 GHSA-gcx9-497g-6cp6" +cwe = "CWE-284" +ecosystem = "maven" +published_at = "2026-08-26T00:30:52Z" +post_cutoff = true +commit = "8bafd79a3b54684e80e9cb1bafd4746aede7d3f5" +parent = "738fca57c1cb50b98536e9114ec8cb37ffab4b30" +commit_url = "https://github.com/apache/tomcat/commit/8bafd79a3b54684e80e9cb1bafd4746aede7d3f5" +vendored = false +host = "github" +path = "java/org/apache/catalina/realm/RealmBase.java" +mode = "name" +relpath = "java/org/apache/catalina/realm/RealmBase.java" +provenance = "agent" +split = "holdout" +review_tier = "advisory" +fix_date = "2026-08-11" +fix_lines = { in_function = 3, in_file = 10, source_total = 17 } + +[[pair.expected]] +cwe = "CWE-284" +class = "access-control" +path = "java/org/apache/catalina/realm/RealmBase.java" +function = "findSecurityConstraints" +mechanism = "missing_auth_guard" +family = "access_control" +evidence = "GHSA-gcx9-497g-6cp6: Apache Tomcat has an Improper Access Control, Incorrect Authorization vulnerability" + +[[pair]] +name = "vm2-makebuiltinsfromlegacyoptions-b0f5066" +slice = "advisory-fixes" +batch = "2026-10-03" +language = "javascript" +origin = "github-advisory" +license = "MIT" +repo = "patriksimek/vm2" +cve = "CVE-2026-92957 GHSA-8686-vhfx-7r3j" +cwe = "CWE-284" +ecosystem = "npm" +published_at = "2026-10-01T15:36:01Z" +post_cutoff = true +commit = "b0f50662dd499ff33544bb42387958c64711af1e" +parent = "aa146a77f859325e079f3bfbfe6d8309af483daa" +commit_url = "https://github.com/patriksimek/vm2/commit/b0f50662dd499ff33544bb42387958c64711af1e" +vendored = false +host = "github" +path = "lib/builtin.js" +mode = "name" +relpath = "lib/builtin.js" +provenance = "agent" +split = "train" +review_tier = "advisory" +fix_date = "2026-08-22" +fix_lines = { in_function = 2, in_file = 7, source_total = 8 } + +[[pair.expected]] +cwe = "CWE-284" +class = "access-control" +path = "lib/builtin.js" +function = "makeBuiltinsFromLegacyOptions" +mechanism = "missing_auth_guard" +family = "access_control" +evidence = "GHSA-8686-vhfx-7r3j: vm2: NodeVM node:-prefixed negative builtin deny bypass exposes child_process" + +[[pair]] +name = "inlong-filtersensitive-ebcd6d3" +slice = "advisory-fixes" +batch = "2026-10-03" +language = "java" +origin = "github-advisory" +license = "Apache-2.0" +repo = "apache/inlong" +cve = "CVE-2025-27531 GHSA-62gc-8jr5-x9pm" +cwe = "CWE-502" +ecosystem = "maven" +published_at = "2025-06-06T15:30:53Z" +post_cutoff = false +commit = "ebcd6d3230b73abdc41edb93619be2a26c9b8c97" +parent = "1183e43b442558139169ab981a7d35c60860d859" +commit_url = "https://github.com/apache/inlong/commit/ebcd6d3230b73abdc41edb93619be2a26c9b8c97" +vendored = false +host = "github" +path = "inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/util/MySQLSensitiveUrlUtils.java" +mode = "name" +relpath = "inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/util/MySQLSensitiveUrlUtils.java" +provenance = "agent" +split = "train" +review_tier = "advisory" +fix_date = "2024-12-08" +fix_lines = { in_function = 8, in_file = 15, source_total = 24 } + +[[pair.expected]] +cwe = "CWE-502" +class = "insecure-deserialization" +path = "inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/util/MySQLSensitiveUrlUtils.java" +function = "filterSensitive" +mechanism = "source_reaches_sink" +family = "deserialization" +evidence = "GHSA-62gc-8jr5-x9pm: Apache InLong Deserialization of Untrusted Data Vulnerability" + +[[pair]] +name = "h2o-3-validatejdbcurl-0298ee3" +slice = "advisory-fixes" +batch = "2026-10-03" +language = "java" +origin = "github-advisory" +license = "Apache-2.0" +repo = "h2oai/h2o-3" +cve = "CVE-2025-6544 GHSA-5w3j-gwgh-4rfv" +cwe = "CWE-502" +ecosystem = "pip" +published_at = "2025-09-22T18:30:34Z" +post_cutoff = false +commit = "0298ee348f5c73673b7b542158081e79605f5f25" +parent = "56fca16b30e46c0b852a2666d22e9cd7315acdfa" +commit_url = "https://github.com/h2oai/h2o-3/commit/0298ee348f5c73673b7b542158081e79605f5f25" +vendored = false +host = "github" +path = "h2o-core/src/main/java/water/jdbc/SQLManager.java" +mode = "name" +relpath = "h2o-core/src/main/java/water/jdbc/SQLManager.java" +provenance = "agent" +split = "holdout" +review_tier = "advisory" +fix_date = "2025-07-15" +fix_lines = { in_function = 22, in_file = 21, source_total = 23 } + +[[pair.expected]] +cwe = "CWE-502" +class = "insecure-deserialization" +path = "h2o-core/src/main/java/water/jdbc/SQLManager.java" +function = "validateJdbcUrl" +mechanism = "source_reaches_sink" +family = "deserialization" +evidence = "GHSA-5w3j-gwgh-4rfv: H2O affected by a deserialization vulnerability" + +[[pair]] +name = "skops-load-model-29d61ea" +slice = "advisory-fixes" +batch = "2026-10-03" +language = "python" +origin = "github-advisory" +license = "MIT" +repo = "skops-dev/skops" +cve = "CVE-2025-54886 GHSA-378x-6p4f-8jgm" +cwe = "CWE-502" +ecosystem = "pip" +published_at = "2025-08-07T16:42:54Z" +post_cutoff = false +commit = "29d61ea8a92f2bde6830e8f32cc72a1a87211cda" +parent = "5c457718a67229ca92190b718bdcbfe8a16672d8" +commit_url = "https://github.com/skops-dev/skops/commit/29d61ea8a92f2bde6830e8f32cc72a1a87211cda" +vendored = false +host = "github" +path = "skops/card/_model_card.py" +mode = "name" +relpath = "skops/card/_model_card.py" +provenance = "agent" +split = "train" +review_tier = "advisory" +fix_date = "2025-08-06" +fix_lines = { in_function = 34, in_file = 33, source_total = 39 } + +[[pair.expected]] +cwe = "CWE-502" +class = "insecure-deserialization" +path = "skops/card/_model_card.py" +function = "_load_model" +mechanism = "source_reaches_sink" +family = "deserialization" +evidence = "GHSA-378x-6p4f-8jgm: SKOPS Card.get_model happily allows arbitrary code execution" + +[[pair]] +name = "picklescan-list-globals-58983e1" +slice = "advisory-fixes" +batch = "2026-10-03" +language = "python" +origin = "github-advisory" +license = "MIT" +repo = "mmaitre314/picklescan" +cve = "CVE-2025-71325 GHSA-9gvj-pp9x-gcfr" +cwe = "CWE-502" +ecosystem = "pip" +published_at = "2025-08-12T00:13:55Z" +post_cutoff = false +commit = "58983e1c20973ac42f2df7ff15d7c8cd32f9b688" +parent = "2974a252df7649ca910c4d6c79afa1029ee99423" +commit_url = "https://github.com/mmaitre314/picklescan/commit/58983e1c20973ac42f2df7ff15d7c8cd32f9b688" +vendored = false +host = "github" +path = "src/picklescan/scanner.py" +mode = "name" +relpath = "src/picklescan/scanner.py" +provenance = "agent" +split = "holdout" +review_tier = "advisory" +fix_date = "2025-08-10" +fix_lines = { in_function = 5, in_file = 4, source_total = 5 } + +[[pair.expected]] +cwe = "CWE-502" +class = "insecure-deserialization" +path = "src/picklescan/scanner.py" +function = "_list_globals" +mechanism = "source_reaches_sink" +family = "deserialization" +evidence = "GHSA-9gvj-pp9x-gcfr: Picklescan has pickle parsing logic flaw that leads to malicious pickle file bypass" + +[[pair]] +name = "sglang-deserialize-49afb3d" +slice = "advisory-fixes" +batch = "2026-10-03" +language = "python" +origin = "github-advisory" +license = "Apache-2.0" +repo = "sgl-project/sglang" +cve = "CVE-2025-10164 GHSA-9w53-xr52-mwgj" +cwe = "CWE-502" +ecosystem = "pip" +published_at = "2025-09-09T21:30:26Z" +post_cutoff = false +commit = "49afb3d9d9deedf6dea3a6dd5c50e85e7d8bcb07" +parent = "f80371ff8cb7d7308aea818e54d68de464972856" +commit_url = "https://github.com/sgl-project/sglang/commit/49afb3d9d9deedf6dea3a6dd5c50e85e7d8bcb07" +vendored = false +host = "github" +path = "python/sglang/srt/utils/common.py" +mode = "name" +relpath = "python/sglang/srt/utils/common.py" +provenance = "agent" +split = "train" +review_tier = "advisory" +fix_date = "2025-10-24" +fix_lines = { in_function = 51, in_file = 72, source_total = 73 } + +[[pair.expected]] +cwe = "CWE-502" +class = "insecure-deserialization" +path = "python/sglang/srt/utils/common.py" +function = "deserialize" +mechanism = "source_reaches_sink" +family = "deserialization" +evidence = "GHSA-9w53-xr52-mwgj: SGLang Remote Code Execution Vulnerability via Unsafe Deserialization in update_weights_from_tensor" + +[[pair]] +name = "pdfminer-six-load-data-b808ee0" +slice = "advisory-fixes" +batch = "2026-10-03" +language = "python" +origin = "github-advisory" +license = "MIT" +repo = "pdfminer/pdfminer.six" +cve = "CVE-2025-70559 GHSA-f83h-ghpp-7wcc" +cwe = "CWE-502" +ecosystem = "pip" +published_at = "2025-11-07T23:17:05Z" +post_cutoff = false +commit = "b808ee05dd7f0c8ea8ec34bdf394d40e63501086" +parent = "51683b2528e2aa685dd8b9e61f6ccf9f76a59a62" +commit_url = "https://github.com/pdfminer/pdfminer.six/commit/b808ee05dd7f0c8ea8ec34bdf394d40e63501086" +vendored = false +host = "github" +path = "pdfminer/cmapdb.py" +mode = "name" +relpath = "pdfminer/cmapdb.py" +provenance = "agent" +split = "holdout" +review_tier = "advisory" +fix_date = "2025-11-07" +fix_lines = { in_function = 10, in_file = 8, source_total = 10 } + +[[pair.expected]] +cwe = "CWE-502" +class = "insecure-deserialization" +path = "pdfminer/cmapdb.py" +function = "_load_data" +mechanism = "source_reaches_sink" +family = "deserialization" +evidence = "GHSA-f83h-ghpp-7wcc: Insecure Deserialization (pickle) in pdfminer.six CMap Loader — Local Privesc" + +[[pair]] +name = "reverb-handle-9ec26f8" +slice = "advisory-fixes" +batch = "2026-10-03" +language = "php" +origin = "github-advisory" +license = "MIT" +repo = "laravel/reverb" +cve = "CVE-2026-23524 GHSA-m27r-m6rx-mhm4" +cwe = "CWE-502" +ecosystem = "composer" +published_at = "2026-01-21T15:40:24Z" +post_cutoff = false +commit = "9ec26f8ffbb701f84920dd0bb9781a1797591f1a" +parent = "f19950ff01b474aec554fadcc6a3c62e726c10ae" +commit_url = "https://github.com/laravel/reverb/commit/9ec26f8ffbb701f84920dd0bb9781a1797591f1a" +vendored = false +host = "github" +path = "src/Protocols/Pusher/PusherPubSubIncomingMessageHandler.php" +mode = "name" +relpath = "src/Protocols/Pusher/PusherPubSubIncomingMessageHandler.php" +provenance = "agent" +split = "train" +review_tier = "advisory" +fix_date = "2026-01-06" +fix_lines = { in_function = 6, in_file = 7, source_total = 9 } + +[[pair.expected]] +cwe = "CWE-502" +class = "insecure-deserialization" +path = "src/Protocols/Pusher/PusherPubSubIncomingMessageHandler.php" +function = "handle" +mechanism = "source_reaches_sink" +family = "deserialization" +evidence = "GHSA-m27r-m6rx-mhm4: Laravel Redis Horizontal Scaling Insecure Deserialization" + +[[pair]] +name = "transformers-is-kernel-a7f8e7f" +slice = "advisory-fixes" +batch = "2026-10-03" +language = "python" +origin = "github-advisory" +license = "Apache-2.0" +repo = "huggingface/transformers" +cve = "CVE-2026-4372 GHSA-29pf-2h5f-8g72" +cwe = "CWE-502" +ecosystem = "pip" +published_at = "2026-05-26T13:30:33Z" +post_cutoff = false +commit = "a7f8e7ff37d87d1a1a0c8cf607971c607741452f" +parent = "744639aba7811a9120e738d975ee4498dee60f92" +commit_url = "https://github.com/huggingface/transformers/commit/a7f8e7ff37d87d1a1a0c8cf607971c607741452f" +vendored = false +host = "github" +path = "src/transformers/integrations/hub_kernels.py" +mode = "name" +relpath = "src/transformers/integrations/hub_kernels.py" +provenance = "agent" +split = "holdout" +review_tier = "advisory" +fix_date = "2026-03-02" +fix_lines = { in_function = 19, in_file = 15, source_total = 31 } + +[[pair.expected]] +cwe = "CWE-502" +class = "insecure-deserialization" +path = "src/transformers/integrations/hub_kernels.py" +function = "is_kernel" +mechanism = "source_reaches_sink" +family = "deserialization" +evidence = "GHSA-29pf-2h5f-8g72: HuggingFace transformers vulnerable to remote code execution" + +[[pair]] +name = "opentelemetry-java-instrumentation-read-9cf4fba" +slice = "advisory-fixes" +batch = "2026-10-03" +language = "java" +origin = "github-advisory" +license = "Apache-2.0" +repo = "open-telemetry/opentelemetry-java-instrumentation" +cve = "CVE-2026-33701 GHSA-xw7x-h9fj-p2c7" +cwe = "CWE-502" +ecosystem = "maven" +published_at = "2026-03-25T21:27:43Z" +post_cutoff = false +commit = "9cf4fbaaa9e79226142b2ed42a6f6b4ac0be2197" +parent = "778754b1f528693498a2f73aeae6018d3d456a77" +commit_url = "https://github.com/open-telemetry/opentelemetry-java-instrumentation/commit/9cf4fbaaa9e79226142b2ed42a6f6b4ac0be2197" +vendored = false +host = "github" +path = "instrumentation/rmi/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rmi/context/ContextPayload.java" +mode = "name" +relpath = "instrumentation/rmi/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rmi/context/ContextPayload.java" +provenance = "agent" +split = "train" +review_tier = "advisory" +fix_date = "2026-03-23" +fix_lines = { in_function = 25, in_file = 33, source_total = 46 } + +[[pair.expected]] +cwe = "CWE-502" +class = "insecure-deserialization" +path = "instrumentation/rmi/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rmi/context/ContextPayload.java" +function = "read" +mechanism = "source_reaches_sink" +family = "deserialization" +evidence = "GHSA-xw7x-h9fj-p2c7: OpenTelemetry: Unsafe Deserialization in RMI Instrumentation may Lead to Remote Code Execution" + +[[pair]] +name = "keras-from-config-55888d3" +slice = "advisory-fixes" +batch = "2026-10-03" +language = "python" +origin = "github-advisory" +license = "Apache-2.0" +repo = "keras-team/keras" +cve = "CVE-2026-12484 GHSA-v2w2-w228-c444" +cwe = "CWE-502" +ecosystem = "pip" +published_at = "2026-07-19T21:30:20Z" +post_cutoff = true +commit = "55888d3becbdbb45dc16a55b489900f911e2dde5" +parent = "5798af8d3ba329511acced3cd622e863e42fe2ec" +commit_url = "https://github.com/keras-team/keras/commit/55888d3becbdbb45dc16a55b489900f911e2dde5" +vendored = false +host = "github" +path = "keras/src/utils/torch_utils.py" +mode = "name" +relpath = "keras/src/utils/torch_utils.py" +provenance = "agent" +split = "holdout" +review_tier = "advisory" +fix_date = "2026-06-10" +fix_lines = { in_function = 12, in_file = 10, source_total = 23 } + +[[pair.expected]] +cwe = "CWE-502" +class = "insecure-deserialization" +path = "keras/src/utils/torch_utils.py" +function = "from_config" +mechanism = "source_reaches_sink" +family = "deserialization" +evidence = "GHSA-v2w2-w228-c444: Keras: TorchModuleWrapper can deserialize unsafe PyTorch pickle data" + +[[pair]] +name = "airflow-handle-event-submit-a1ab065" +slice = "advisory-fixes" +batch = "2026-10-03" +language = "python" +origin = "github-advisory" +license = "Apache-2.0" +repo = "apache/airflow" +cve = "CVE-2026-67260 GHSA-q4c3-7575-55j2" +cwe = "CWE-502" +ecosystem = "pip" +published_at = "2026-08-12T18:31:18Z" +post_cutoff = true +commit = "a1ab0653121829675ad864080d2cd9d3d1688b01" +parent = "fb459dec5072051563d1924b57fa6f85fb265381" +commit_url = "https://github.com/apache/airflow/commit/a1ab0653121829675ad864080d2cd9d3d1688b01" +vendored = false +host = "github" +path = "airflow-core/src/airflow/models/trigger.py" +mode = "name" +relpath = "airflow-core/src/airflow/models/trigger.py" +provenance = "agent" +split = "train" +review_tier = "advisory" +fix_date = "2026-08-05" +fix_lines = { in_function = 41, in_file = 82, source_total = 87 } + +[[pair.expected]] +cwe = "CWE-502" +class = "insecure-deserialization" +path = "airflow-core/src/airflow/models/trigger.py" +function = "handle_event_submit" +mechanism = "source_reaches_sink" +family = "deserialization" +evidence = "GHSA-q4c3-7575-55j2: Apache Airflow scheduler unsafely deserializes human-in-the-loop task next_kwargs" + +[[pair]] +name = "sequelize-partialescape-5deadd2" +slice = "advisory-fixes" +batch = "2026-10-03" +language = "javascript" +origin = "github-advisory" +license = "MIT" +repo = "sequelize/sequelize" +cve = "CVE-2026-69240 GHSA-v8fg-2rw7-q452" +cwe = "CWE-89" +ecosystem = "npm" +published_at = "2026-08-03T20:29:50Z" +post_cutoff = true +commit = "5deadd2410ae9136a21fb652db206d27bb715f26" +parent = "b9e71a7af57568dd85b8a2fdaac59b96ce0f0e95" +commit_url = "https://github.com/sequelize/sequelize/commit/5deadd2410ae9136a21fb652db206d27bb715f26" +vendored = false +host = "github" +path = "src/sql-string.js" +mode = "name" +relpath = "src/sql-string.js" +provenance = "agent" +split = "train" +review_tier = "advisory" +fix_date = "2024-10-02" +fix_lines = { in_function = 63, in_file = 62, source_total = 65 } + +[[pair.expected]] +cwe = "CWE-89" +class = "sqli" +path = "src/sql-string.js" +function = "partialEscape" +mechanism = "source_reaches_sink" +family = "injection" +evidence = "GHSA-v8fg-2rw7-q452: Sequelize: SQL Injection (Oracle DB)" + +[[pair]] +name = "electerm-mv-aa77881" +slice = "advisory-fixes" +batch = "2026-10-03" +language = "javascript" +origin = "github-advisory" +license = "MIT" +repo = "electerm/electerm" +cve = "CVE-2026-49255 GHSA-v5ff-xmfp-p245" +cwe = "CWE-78" +ecosystem = "npm" +published_at = "2026-07-02T19:22:31Z" +post_cutoff = true +commit = "aa778818843b9c083bd711cd04644d102fcb5a42" +parent = "fde153d677a170c5816368f6586647f3af4ef284" +commit_url = "https://github.com/electerm/electerm/commit/aa778818843b9c083bd711cd04644d102fcb5a42" +vendored = false +host = "github" +path = "src/app/lib/fs.js" +mode = "name" +relpath = "src/app/lib/fs.js" +provenance = "agent" +split = "holdout" +review_tier = "advisory" +fix_date = "2026-05-25" +fix_lines = { in_function = 15, in_file = 47, source_total = 56 } + +[[pair.expected]] +cwe = "CWE-78" +class = "command-injection" +path = "src/app/lib/fs.js" +function = "mv" +mechanism = "source_reaches_sink" +family = "injection" +evidence = "GHSA-v5ff-xmfp-p245: electerm has Command Injection in File System Operations (rmrf, mv, cp)" + +[[pair]] +name = "systeminformation-checklinuxdchpinterfaces-bbfddde" +slice = "advisory-fixes" +batch = "2026-10-03" +language = "javascript" +origin = "github-advisory" +license = "MIT" +repo = "sebhildebrandt/systeminformation" +cve = "CVE-2026-50289 GHSA-5xpp-75jx-m839" +cwe = "CWE-78" +ecosystem = "npm" +published_at = "2026-07-15T23:09:28Z" +post_cutoff = true +commit = "bbfddde48672d0ee124fefdb3cb4442fd9dd4f03" +parent = "da1cbf5eb09907cf5c3431f4c9ea441b7a227617" +commit_url = "https://github.com/sebhildebrandt/systeminformation/commit/bbfddde48672d0ee124fefdb3cb4442fd9dd4f03" +vendored = false +host = "github" +path = "lib/network.js" +mode = "name" +relpath = "lib/network.js" +provenance = "agent" +split = "train" +review_tier = "advisory" +fix_date = "2026-05-29" +fix_lines = { in_function = 4, in_file = 3, source_total = 5 } + +[[pair.expected]] +cwe = "CWE-78" +class = "command-injection" +path = "lib/network.js" +function = "checkLinuxDCHPInterfaces" +mechanism = "source_reaches_sink" +family = "injection" +evidence = "GHSA-5xpp-75jx-m839: systeminformation: OS command injection in networkInterfaces() via interfaces(5) source-directive path on Linux" + +[[pair]] +name = "prompty-buildagent-c27402d" +slice = "advisory-fixes" +batch = "2026-10-03" +language = "typescript" +origin = "github-advisory" +license = "MIT" +repo = "microsoft/prompty" +cve = "CVE-2026-53597 GHSA-c4gh-rv8h-q9vw" +cwe = "CWE-94" +ecosystem = "npm" +published_at = "2026-07-17T19:53:34Z" +post_cutoff = true +commit = "c27402da2487075be577f06aa79df627fb9d6853" +parent = "b4fd3608116d8b1c42319d060d49eb6da85f25e7" +commit_url = "https://github.com/microsoft/prompty/commit/c27402da2487075be577f06aa79df627fb9d6853" +vendored = false +host = "github" +path = "runtime/typescript/packages/core/src/core/loader.ts" +mode = "name" +relpath = "runtime/typescript/packages/core/src/core/loader.ts" +provenance = "agent" +split = "holdout" +review_tier = "advisory" +fix_date = "2026-06-06" +fix_lines = { in_function = 8, in_file = 10, source_total = 11 } + +[[pair.expected]] +cwe = "CWE-94" +class = "code-injection" +path = "runtime/typescript/packages/core/src/core/loader.ts" +function = "buildAgent" +mechanism = "source_reaches_sink" +family = "injection" +evidence = "GHSA-c4gh-rv8h-q9vw: Prompty: Arbitrary code execution via JavaScript frontmatter in TypeScript loader" + +[[pair]] +name = "datamodel-code-generator-get-field-extras-17fc235" +slice = "advisory-fixes" +batch = "2026-10-03" +language = "python" +origin = "github-advisory" +license = "MIT" +repo = "koxudaxi/datamodel-code-generator" +cve = "CVE-2026-54653 GHSA-386q-5hp3-95m9" +cwe = "CWE-94" +ecosystem = "pip" +published_at = "2026-07-28T21:48:14Z" +post_cutoff = true +commit = "17fc235e234cbcfaaadef8c74cb72c9687db0d1d" +parent = "b73abb5cd703a50471b8950bbd3bd0b82ad71de7" +commit_url = "https://github.com/koxudaxi/datamodel-code-generator/commit/17fc235e234cbcfaaadef8c74cb72c9687db0d1d" +vendored = false +host = "github" +path = "src/datamodel_code_generator/parser/jsonschema.py" +mode = "name" +relpath = "src/datamodel_code_generator/parser/jsonschema.py" +provenance = "agent" +split = "train" +review_tier = "advisory" +fix_date = "2026-06-08" +fix_lines = { in_function = 3, in_file = 13, source_total = 13 } + +[[pair.expected]] +cwe = "CWE-94" +class = "code-injection" +path = "src/datamodel_code_generator/parser/jsonschema.py" +function = "get_field_extras" +mechanism = "source_reaches_sink" +family = "injection" +evidence = "GHSA-386q-5hp3-95m9: `datamodel-code-generator` vulnerable to code injection in via attacker-controlled `default_factory` schema field" + +[[pair]] +name = "spring-data-mongodb-bindablevaluefor-24d5afc" +slice = "advisory-fixes" +batch = "2026-10-03" +language = "java" +origin = "github-advisory" +license = "Apache-2.0" +repo = "spring-projects/spring-data-mongodb" +cve = "CVE-2026-41696 GHSA-hc43-m36c-8v33" +cwe = "CWE-943" +ecosystem = "maven" +published_at = "2026-06-10T00:31:51Z" +post_cutoff = true +commit = "24d5afc0c7df223150e06fce3f64c226bcc88ca2" +parent = "22136feff1554aca087508ac9a341798ca9e0316" +commit_url = "https://github.com/spring-projects/spring-data-mongodb/commit/24d5afc0c7df223150e06fce3f64c226bcc88ca2" +vendored = false +host = "github" +path = "spring-data-mongodb/src/main/java/org/springframework/data/mongodb/util/json/ParameterBindingJsonReader.java" +mode = "name" +relpath = "spring-data-mongodb/src/main/java/org/springframework/data/mongodb/util/json/ParameterBindingJsonReader.java" +provenance = "agent" +split = "holdout" +review_tier = "advisory" +fix_date = "2026-06-08" +fix_lines = { in_function = 22, in_file = 29, source_total = 39 } + +[[pair.expected]] +cwe = "CWE-943" +class = "query-injection" +path = "spring-data-mongodb/src/main/java/org/springframework/data/mongodb/util/json/ParameterBindingJsonReader.java" +function = "bindableValueFor" +mechanism = "source_reaches_sink" +family = "injection" +evidence = "GHSA-hc43-m36c-8v33: Spring Data MongoDB Has Regex Parameter Binding Injection in @Query Repository Methods" + +[[pair]] +name = "spring-ai-emitlucenestring-2b20cfc" +slice = "advisory-fixes" +batch = "2026-10-03" +language = "java" +origin = "github-advisory" +license = "Apache-2.0" +repo = "spring-projects/spring-ai" +cve = "CVE-2026-47835 GHSA-cmwh-w62w-r2mf" +cwe = "CWE-943" +ecosystem = "maven" +published_at = "2026-06-15T21:30:39Z" +post_cutoff = true +commit = "2b20cfc8f478444f942d4be7a867d254441ff991" +parent = "b28642fb735e79f663aa03e25c8ad1eddcf0a5cc" +commit_url = "https://github.com/spring-projects/spring-ai/commit/2b20cfc8f478444f942d4be7a867d254441ff991" +vendored = false +host = "github" +path = "spring-ai-vector-store/src/main/java/org/springframework/ai/vectorstore/filter/converter/AbstractFilterExpressionConverter.java" +mode = "name" +relpath = "spring-ai-vector-store/src/main/java/org/springframework/ai/vectorstore/filter/converter/AbstractFilterExpressionConverter.java" +provenance = "agent" +split = "train" +review_tier = "advisory" +fix_date = "2026-06-10" +fix_lines = { in_function = 4, in_file = 4, source_total = 4 } + +[[pair.expected]] +cwe = "CWE-943" +class = "query-injection" +path = "spring-ai-vector-store/src/main/java/org/springframework/ai/vectorstore/filter/converter/AbstractFilterExpressionConverter.java" +function = "emitLuceneString" +mechanism = "source_reaches_sink" +family = "injection" +evidence = "GHSA-cmwh-w62w-r2mf: Spring AI vector store metadata filtering to handle special characters in Elasticsearch, OpenSearch, and GemFire Vector Stores" + +[[pair]] +name = "aws-cdk-write-baa9e1d" +slice = "advisory-fixes" +batch = "2026-10-03" +language = "typescript" +origin = "github-advisory" +license = "Apache-2.0" +repo = "aws/aws-cdk" +cve = "CVE-2026-13760 GHSA-vcrf-j523-4mrf" +cwe = "CWE-78" +ecosystem = "npm" +published_at = "2026-07-21T19:04:50Z" +post_cutoff = true +commit = "baa9e1dff469306cc23b8f4bd232d703f98bf68a" +parent = "e360dd9b44d2111e28cd16ac683a813f33ed5793" +commit_url = "https://github.com/aws/aws-cdk/commit/baa9e1dff469306cc23b8f4bd232d703f98bf68a" +vendored = false +host = "github" +path = "packages/aws-cdk-lib/aws-lambda-nodejs/lib/bundling.ts" +mode = "name" +relpath = "packages/aws-cdk-lib/aws-lambda-nodejs/lib/bundling.ts" +provenance = "agent" +split = "holdout" +review_tier = "advisory" +fix_date = "2026-06-12" +fix_lines = { in_function = 2, in_file = 2, source_total = 4 } + +[[pair.expected]] +cwe = "CWE-78" +class = "command-injection" +path = "packages/aws-cdk-lib/aws-lambda-nodejs/lib/bundling.ts" +function = "write" +mechanism = "source_reaches_sink" +family = "injection" +evidence = "GHSA-vcrf-j523-4mrf: aws-cdk-lib: OS Command Injection in NodejsFunction Docker Bundling" + +[[pair]] +name = "danger-js-localgetfileatsha-087a729" +slice = "advisory-fixes" +batch = "2026-10-03" +language = "typescript" +origin = "github-advisory" +license = "MIT" +repo = "danger/danger-js" +cve = "CVE-2026-16629 GHSA-3x93-p86w-5jvh" +cwe = "CWE-77" +ecosystem = "npm" +published_at = "2026-07-23T00:31:28Z" +post_cutoff = true +commit = "087a7290264cc6fb7154ea8c2552a7b2cb8b33a3" +parent = "a9f198a96ac593c4b6968b91e4591d8931dc9861" +commit_url = "https://github.com/danger/danger-js/commit/087a7290264cc6fb7154ea8c2552a7b2cb8b33a3" +vendored = false +host = "github" +path = "source/platforms/git/localGetFileAtSHA.ts" +mode = "name" +relpath = "source/platforms/git/localGetFileAtSHA.ts" +provenance = "agent" +split = "train" +review_tier = "advisory" +fix_date = "2026-06-16" +fix_lines = { in_function = 8, in_file = 6, source_total = 10 } + +[[pair.expected]] +cwe = "CWE-77" +class = "command-injection" +path = "source/platforms/git/localGetFileAtSHA.ts" +function = "localGetFileAtSHA" +mechanism = "source_reaches_sink" +family = "injection" +evidence = "GHSA-3x93-p86w-5jvh: danger allows local OS command injection through crafted file paths" + +[[pair]] +name = "argos-javascript-gitfetch-8355f3a" +slice = "advisory-fixes" +batch = "2026-10-03" +language = "typescript" +origin = "github-advisory" +license = "MIT" +repo = "argos-ci/argos-javascript" +cve = "CVE-2026-59960 GHSA-4x45-gxvp-6283" +cwe = "CWE-78" +ecosystem = "npm" +published_at = "2026-09-10T22:34:17Z" +post_cutoff = true +commit = "8355f3af3be3f4fe361d58a688d21535cf672717" +parent = "1787fe78cba46f408493e02114150f2d73f47fa4" +commit_url = "https://github.com/argos-ci/argos-javascript/commit/8355f3af3be3f4fe361d58a688d21535cf672717" +vendored = false +host = "github" +path = "packages/core/src/ci-environment/git.ts" +mode = "name" +relpath = "packages/core/src/ci-environment/git.ts" +provenance = "agent" +split = "holdout" +review_tier = "advisory" +fix_date = "2026-06-21" +fix_lines = { in_function = 12, in_file = 18, source_total = 26 } + +[[pair.expected]] +cwe = "CWE-78" +class = "command-injection" +path = "packages/core/src/ci-environment/git.ts" +function = "gitFetch" +mechanism = "source_reaches_sink" +family = "injection" +evidence = "GHSA-4x45-gxvp-6283: @argos-ci/core: CI Branch Name OS Command Injection" + +[[pair]] +name = "cakephp-transformfunctionexpression-138f2f6" +slice = "advisory-fixes" +batch = "2026-10-03" +language = "php" +origin = "github-advisory" +license = "MIT" +repo = "cakephp/cakephp" +cve = "CVE-2026-77635 GHSA-fxf7-vhh8-7vpq" +cwe = "CWE-89" +ecosystem = "composer" +published_at = "2026-09-08T20:56:41Z" +post_cutoff = true +commit = "138f2f61486532c29ee4d106da2a9848c1ff1ab3" +parent = "ab608711674ac662af7315c5cdf1e0fbe2000e45" +commit_url = "https://github.com/cakephp/cakephp/commit/138f2f61486532c29ee4d106da2a9848c1ff1ab3" +vendored = false +host = "github" +path = "src/Database/Driver/Postgres.php" +mode = "name" +relpath = "src/Database/Driver/Postgres.php" +provenance = "agent" +split = "train" +review_tier = "advisory" +fix_date = "2026-07-09" +fix_lines = { in_function = 4, in_file = 3, source_total = 4 } + +[[pair.expected]] +cwe = "CWE-89" +class = "sqli" +path = "src/Database/Driver/Postgres.php" +function = "_transformFunctionExpression" +mechanism = "source_reaches_sink" +family = "injection" +evidence = "GHSA-fxf7-vhh8-7vpq: CakePHP: FunctionsBuilder::jsonValue() vulerable to SQL injection with PostgresDriver" + +[[pair]] +name = "orval-getroutepath-8ef1bfd" +slice = "advisory-fixes" +batch = "2026-10-03" +language = "typescript" +origin = "github-advisory" +license = "MIT" +repo = "orval-labs/orval" +cve = "CVE-2026-71867 GHSA-2w86-xfrc-g85r" +cwe = "CWE-89" +ecosystem = "npm" +published_at = "2026-09-03T18:26:12Z" +post_cutoff = true +commit = "8ef1bfdf3f9bcaf9dabfbe2e42887f1c0e159ab6" +parent = "c082bb4aff4f9aaee196a1ca948492f0e28d6e79" +commit_url = "https://github.com/orval-labs/orval/commit/8ef1bfdf3f9bcaf9dabfbe2e42887f1c0e159ab6" +vendored = false +host = "github" +path = "packages/core/src/getters/route.ts" +mode = "name" +relpath = "packages/core/src/getters/route.ts" +provenance = "agent" +split = "holdout" +review_tier = "advisory" +fix_date = "2026-07-12" +fix_lines = { in_function = 29, in_file = 45, source_total = 107 } + +[[pair.expected]] +cwe = "CWE-89" +class = "sqli" +path = "packages/core/src/getters/route.ts" +function = "getRoutePath" +mechanism = "source_reaches_sink" +family = "injection" +evidence = "GHSA-2w86-xfrc-g85r: Orval: RCE via schema property name -> computed-property-key injection in the MSW mock generator" + +[[pair]] +name = "typeorm-handler-41d1c62" +slice = "advisory-fixes" +batch = "2026-10-03" +language = "typescript" +origin = "github-advisory" +license = "MIT" +repo = "typeorm/typeorm" +cve = "CVE-2026-73651 GHSA-2rp8-mm9q-fp49" +cwe = "CWE-94" +ecosystem = "npm" +published_at = "2026-07-21T21:59:23Z" +post_cutoff = true +commit = "41d1c62fe49f99c3ca916d4d986f61ee9f45d519" +parent = "8a51b756bf31c885da1e1d92cb17d94819c7040a" +commit_url = "https://github.com/typeorm/typeorm/commit/41d1c62fe49f99c3ca916d4d986f61ee9f45d519" +vendored = false +host = "github" +path = "src/commands/MigrationGenerateCommand.ts" +mode = "name" +relpath = "src/commands/MigrationGenerateCommand.ts" +provenance = "agent" +split = "train" +review_tier = "advisory" +fix_date = "2026-07-13" +fix_lines = { in_function = 8, in_file = 20, source_total = 22 } + +[[pair.expected]] +cwe = "CWE-94" +class = "code-injection" +path = "src/commands/MigrationGenerateCommand.ts" +function = "handler" +mechanism = "source_reaches_sink" +family = "injection" +evidence = "GHSA-2rp8-mm9q-fp49: TypeORM: migration:generate template-literal code injection" + +[[pair]] +name = "velocity-js-isblockedpathkey-f8e47a6" +slice = "advisory-fixes" +batch = "2026-10-03" +language = "typescript" +origin = "github-advisory" +license = "MIT" +repo = "shepherdwind/velocity.js" +cve = "CVE-2026-73649 GHSA-7gfh-x38p-prh3" +cwe = "CWE-94" +ecosystem = "npm" +published_at = "2026-07-24T16:21:22Z" +post_cutoff = true +commit = "f8e47a6c4607249b9c967d3a1ced959b4dd64dba" +parent = "4cbc7f102c1c7c3e938883a11789231c2d9e6eac" +commit_url = "https://github.com/shepherdwind/velocity.js/commit/f8e47a6c4607249b9c967d3a1ced959b4dd64dba" +vendored = false +host = "github" +path = "src/compile/set.ts" +mode = "name" +relpath = "src/compile/set.ts" +provenance = "agent" +split = "holdout" +review_tier = "advisory" +fix_date = "2026-07-14" +fix_lines = { in_function = 15, in_file = 34, source_total = 100 } + +[[pair.expected]] +cwe = "CWE-94" +class = "code-injection" +path = "src/compile/set.ts" +function = "isBlockedPathKey" +mechanism = "source_reaches_sink" +family = "injection" +evidence = "GHSA-7gfh-x38p-prh3: Velocity.js: Remote Code Execution via property-read to Function constructor (bypass of GHSA-j658-c2gf-x6pq fix)" + +[[pair]] +name = "jsonata-evaluategroupexpression-4b217d5" +slice = "advisory-fixes" +batch = "2026-10-03" +language = "javascript" +origin = "github-advisory" +license = "MIT" +repo = "jsonata-js/jsonata" +cve = "CVE-2026-77413 GHSA-8gq3-vp5j-2grp" +cwe = "CWE-94" +ecosystem = "npm" +published_at = "2026-08-21T20:57:07Z" +post_cutoff = true +commit = "4b217d514376e30cba278941298d7ba97c4a6c6e" +parent = "f09df8416eab8ff44926fc6527c80fb8701de159" +commit_url = "https://github.com/jsonata-js/jsonata/commit/4b217d514376e30cba278941298d7ba97c4a6c6e" +vendored = false +host = "github" +path = "src/jsonata.js" +mode = "name" +relpath = "src/jsonata.js" +provenance = "agent" +split = "train" +review_tier = "advisory" +fix_date = "2026-07-15" +fix_lines = { in_function = 11, in_file = 26, source_total = 67 } + +[[pair.expected]] +cwe = "CWE-94" +class = "code-injection" +path = "src/jsonata.js" +function = "evaluateGroupExpression" +mechanism = "source_reaches_sink" +family = "injection" +evidence = "GHSA-8gq3-vp5j-2grp: JSONata: Arbitrary Code Execution via crafted JSONata expressions" + +[[pair]] +name = "nuxt-getislandcontext-5b60017" +slice = "advisory-fixes" +batch = "2026-10-03" +language = "typescript" +origin = "github-advisory" +license = "MIT" +repo = "nuxt/nuxt" +cve = "CVE-2026-71320 GHSA-9473-5f9j-94wq" +cwe = "CWE-94" +ecosystem = "npm" +published_at = "2026-08-05T21:29:55Z" +post_cutoff = true +commit = "5b60017f7f1d5e9384cadf1d6c580b99d583c418" +parent = "668cdfdfda41849ed11c1ee5e2067a11fc103b22" +commit_url = "https://github.com/nuxt/nuxt/commit/5b60017f7f1d5e9384cadf1d6c580b99d583c418" +vendored = false +host = "github" +path = "packages/nitro-server/src/runtime/handlers/island.ts" +mode = "name" +relpath = "packages/nitro-server/src/runtime/handlers/island.ts" +provenance = "agent" +split = "holdout" +review_tier = "advisory" +fix_date = "2026-07-27" +fix_lines = { in_function = 12, in_file = 14, source_total = 43 } + +[[pair.expected]] +cwe = "CWE-94" +class = "code-injection" +path = "packages/nitro-server/src/runtime/handlers/island.ts" +function = "getIslandContext" +mechanism = "source_reaches_sink" +family = "injection" +evidence = "GHSA-9473-5f9j-94wq: Nuxt: Server-Side Remote Code Execution via Runtime Template Injection in Nuxt Server Island Props" + +[[pair]] +name = "gitpython-option-candidates-96a888f" +slice = "advisory-fixes" +batch = "2026-10-03" +language = "python" +origin = "github-advisory" +license = "BSD-3-Clause" +repo = "gitpython-developers/gitpython" +cve = "CVE-2026-76220 GHSA-wvpp-8hx9-p66j" +cwe = "CWE-88" +ecosystem = "pip" +published_at = "2026-08-07T15:49:07Z" +post_cutoff = true +commit = "96a888f4d782cb2f80452148e48e60ce4af6d541" +parent = "a495ccd3b547ccd60b2187215823b72a9c0188bf" +commit_url = "https://github.com/gitpython-developers/gitpython/commit/96a888f4d782cb2f80452148e48e60ce4af6d541" +vendored = false +host = "github" +path = "git/cmd.py" +mode = "name" +relpath = "git/cmd.py" +provenance = "agent" +split = "train" +review_tier = "advisory" +fix_date = "2026-08-04" +fix_lines = { in_function = 13, in_file = 10, source_total = 12 } + +[[pair.expected]] +cwe = "CWE-88" +class = "argument-injection" +path = "git/cmd.py" +function = "_option_candidates" +mechanism = "source_reaches_sink" +family = "injection" +evidence = "GHSA-wvpp-8hx9-p66j: GitPython: Unsafe git option guard bypass via split_single_char_options=False short-option token smuggling enables command execution" + +[[pair]] +name = "mermaid-addnamespace-12d472c" +slice = "advisory-fixes" +batch = "2026-10-03" +language = "typescript" +origin = "github-advisory" +license = "MIT" +repo = "mermaid-js/mermaid" +cve = "CVE-2026-50159 GHSA-6x64-9x62-f2gx" +cwe = "CWE-94" +ecosystem = "npm" +published_at = "2026-08-06T19:55:31Z" +post_cutoff = true +commit = "12d472c9ed43f94814b110da8d7a9ae6dd5266ed" +parent = "2cd6dcf735533b323507e3e889ffdea870540b43" +commit_url = "https://github.com/mermaid-js/mermaid/commit/12d472c9ed43f94814b110da8d7a9ae6dd5266ed" +vendored = false +host = "github" +path = "packages/mermaid/src/mermaidAPI.ts" +mode = "name" +relpath = "packages/mermaid/src/mermaidAPI.ts" +provenance = "agent" +split = "holdout" +review_tier = "advisory" +fix_date = "2026-08-04" +fix_lines = { in_function = 32, in_file = 31, source_total = 34 } + +[[pair.expected]] +cwe = "CWE-94" +class = "code-injection" +path = "packages/mermaid/src/mermaidAPI.ts" +function = "addNamespace" +mechanism = "source_reaches_sink" +family = "injection" +evidence = "GHSA-6x64-9x62-f2gx: Mermaid allows CSS injection applying to sibling elements of the diagram" + +[[pair]] +name = "php-codesniffer-getblamecontent-7a3a6bb" +slice = "advisory-fixes" +batch = "2026-10-03" +language = "php" +origin = "github-advisory" +license = "BSD-3-Clause" +repo = "phpcsstandards/php_codesniffer" +cve = "CVE-2026-67434 GHSA-hmqg-cxww-wqhq" +cwe = "CWE-78" +ecosystem = "composer" +published_at = "2026-08-06T21:31:34Z" +post_cutoff = true +commit = "7a3a6bbf153a03fa3a9413afc60bded6b764e76b" +parent = "b5ce04f12210b2fcb91fbcb9780d8fb0ffd07bea" +commit_url = "https://github.com/phpcsstandards/php_codesniffer/commit/7a3a6bbf153a03fa3a9413afc60bded6b764e76b" +vendored = false +host = "github" +path = "src/Reports/Gitblame.php" +mode = "name" +relpath = "src/Reports/Gitblame.php" +provenance = "agent" +split = "train" +review_tier = "advisory" +fix_date = "2026-08-05" +fix_lines = { in_function = 2, in_file = 1, source_total = 6 } + +[[pair.expected]] +cwe = "CWE-78" +class = "command-injection" +path = "src/Reports/Gitblame.php" +function = "getBlameContent" +mechanism = "source_reaches_sink" +family = "injection" +evidence = "GHSA-hmqg-cxww-wqhq: PHP_CodeSniffer gitblame report command injection via crafted filename" + +[[pair]] +name = "xmldom-serializetostring-1cde3e3" +slice = "advisory-fixes" +batch = "2026-10-03" +language = "javascript" +origin = "github-advisory" +license = "MIT" +repo = "xmldom/xmldom" +cve = "CVE-2026-83616 GHSA-c7q8-3ch8-vqpv" +cwe = "CWE-91" +ecosystem = "npm" +published_at = "2026-09-08T21:03:28Z" +post_cutoff = true +commit = "1cde3e31a07c41c87cfd368d6946aa477f16b4f9" +parent = "57aec90ac57b4408ae7c5d1746bf2a693b5ed90e" +commit_url = "https://github.com/xmldom/xmldom/commit/1cde3e31a07c41c87cfd368d6946aa477f16b4f9" +vendored = false +host = "github" +path = "lib/dom.js" +mode = "name" +relpath = "lib/dom.js" +provenance = "agent" +split = "holdout" +review_tier = "advisory" +fix_date = "2026-08-21" +fix_lines = { in_function = 7, in_file = 12, source_total = 24 } + +[[pair.expected]] +cwe = "CWE-91" +class = "xml-injection" +path = "lib/dom.js" +function = "serializeToString" +mechanism = "source_reaches_sink" +family = "injection" +evidence = "GHSA-c7q8-3ch8-vqpv: xmldom: Processing Instruction Target Injection Bypasses requireWellFormed" + +[[pair]] +name = "trix-fromjson-9c0a993" +slice = "advisory-fixes" +batch = "2026-10-03" +language = "javascript" +origin = "github-advisory" +license = "MIT" +repo = "basecamp/trix" +cve = "CVE-2026-73428 GHSA-53g2-mvcc-q9x3" +cwe = "CWE-79" +ecosystem = "npm" +published_at = "2026-07-24T16:18:01Z" +post_cutoff = true +commit = "9c0a993d9fc2ffe9d56b013b030bc238f9c0557c" +parent = "e62fcc3b5872a310a79cecb47472bd16bf6499ad" +commit_url = "https://github.com/basecamp/trix/commit/9c0a993d9fc2ffe9d56b013b030bc238f9c0557c" +vendored = false +host = "github" +path = "src/trix/models/string_piece.js" +mode = "name" +relpath = "src/trix/models/string_piece.js" +provenance = "agent" +split = "train" +review_tier = "advisory" +fix_date = "2026-03-26" +fix_lines = { in_function = 6, in_file = 7, source_total = 16 } + +[[pair.expected]] +cwe = "CWE-79" +class = "xss" +path = "src/trix/models/string_piece.js" +function = "fromJSON" +mechanism = "source_reaches_sink" +family = "output_encoding" +evidence = "GHSA-53g2-mvcc-q9x3: Trix: Stored XSS via HTMLParser attribute injection on paste" + +[[pair]] +name = "oauthlib-prepare-token-revocation-request-c888359" +slice = "advisory-fixes" +batch = "2026-10-03" +language = "python" +origin = "github-advisory" +license = "BSD-3-Clause" +repo = "oauthlib/oauthlib" +cve = "CVE-2026-49264 GHSA-hj66-6f7g-4r5v" +cwe = "CWE-79" +ecosystem = "pip" +published_at = "2026-09-29T17:53:41Z" +post_cutoff = true +commit = "c888359f3c42bec235b2c5caab2069c9ed62457c" +parent = "b3f9edffed6b370e3eb92721cea0da22ec7e18b9" +commit_url = "https://github.com/oauthlib/oauthlib/commit/c888359f3c42bec235b2c5caab2069c9ed62457c" +vendored = false +host = "github" +path = "oauthlib/oauth2/rfc6749/clients/base.py" +mode = "name" +relpath = "oauthlib/oauth2/rfc6749/clients/base.py" +provenance = "agent" +split = "holdout" +review_tier = "advisory" +fix_date = "2026-05-22" +fix_lines = { in_function = 19, in_file = 22, source_total = 43 } + +[[pair.expected]] +cwe = "CWE-79" +class = "xss" +path = "oauthlib/oauth2/rfc6749/clients/base.py" +function = "prepare_token_revocation_request" +mechanism = "source_reaches_sink" +family = "output_encoding" +evidence = "GHSA-hj66-6f7g-4r5v: Oauthlib : Unsafe JSONP callback injection in RevocationEndpoint allows arbitrary JavaScript response generation" + +[[pair]] +name = "suneditor-submitsrc-9d43a5e" +slice = "advisory-fixes" +batch = "2026-10-03" +language = "javascript" +origin = "github-advisory" +license = "MIT" +repo = "jihong88/suneditor" +cve = "CVE-2026-54606 GHSA-w93q-cq9w-58p7" +cwe = "CWE-79" +ecosystem = "npm" +published_at = "2026-08-26T15:26:24Z" +post_cutoff = true +commit = "9d43a5e082101d2d6475cba86e0d58d7c2cf6677" +parent = "ab8427af1a0607665b0088e4c93bf453083d6a13" +commit_url = "https://github.com/jihong88/suneditor/commit/9d43a5e082101d2d6475cba86e0d58d7c2cf6677" +vendored = false +host = "github" +path = "src/plugins/modal/embed.js" +mode = "name" +relpath = "src/plugins/modal/embed.js" +provenance = "agent" +split = "train" +review_tier = "advisory" +fix_date = "2026-05-30" +fix_lines = { in_function = 10, in_file = 41, source_total = 42 } + +[[pair.expected]] +cwe = "CWE-79" +class = "xss" +path = "src/plugins/modal/embed.js" +function = "submitSRC" +mechanism = "source_reaches_sink" +family = "output_encoding" +evidence = "GHSA-w93q-cq9w-58p7: SunEditor Embed Plugin has DOM XSS via External Script Element After Iframe Embed" + +[[pair]] +name = "mathlive-atomtomathml-5fe1c46" +slice = "advisory-fixes" +batch = "2026-10-03" +language = "typescript" +origin = "github-advisory" +license = "MIT" +repo = "arnog/mathlive" +cve = "CVE-2026-54705 GHSA-fm7p-gw32-828p" +cwe = "CWE-116" +ecosystem = "npm" +published_at = "2026-07-29T17:21:26Z" +post_cutoff = true +commit = "5fe1c46153883f9ec0249a5c8c34e64aaae9cfb8" +parent = "25db1a836f35e9fc8973599e7cb19be1e4d1b9c7" +commit_url = "https://github.com/arnog/mathlive/commit/5fe1c46153883f9ec0249a5c8c34e64aaae9cfb8" +vendored = false +host = "github" +path = "src/formats/atom-to-math-ml.ts" +mode = "name" +relpath = "src/formats/atom-to-math-ml.ts" +provenance = "agent" +split = "holdout" +review_tier = "advisory" +fix_date = "2026-06-09" +fix_lines = { in_function = 51, in_file = 37, source_total = 74 } + +[[pair.expected]] +cwe = "CWE-116" +class = "improper-encoding" +path = "src/formats/atom-to-math-ml.ts" +function = "atomToMathML" +mechanism = "source_reaches_sink" +family = "output_encoding" +evidence = "GHSA-fm7p-gw32-828p: mathlive's Lack of Escaping of HTML allows for XSS" + +[[pair]] +name = "genql-comment-2dbc80f" +slice = "advisory-fixes" +batch = "2026-10-03" +language = "typescript" +origin = "github-advisory" +license = "MIT" +repo = "remorses/genql" +cve = "CVE-2026-63397 GHSA-w757-xvvv-vgfw" +cwe = "CWE-116" +ecosystem = "npm" +published_at = "2026-07-16T21:30:38Z" +post_cutoff = true +commit = "2dbc80ffb767ee58e6b27d9d81d58fa1ee8bea28" +parent = "3b281a90f46a481fabf5aafd13208f426db45265" +commit_url = "https://github.com/remorses/genql/commit/2dbc80ffb767ee58e6b27d9d81d58fa1ee8bea28" +vendored = false +host = "github" +path = "cli/src/render/common/comment.ts" +mode = "name" +relpath = "cli/src/render/common/comment.ts" +provenance = "agent" +split = "train" +review_tier = "advisory" +fix_date = "2026-06-11" +fix_lines = { in_function = 4, in_file = 4, source_total = 6 } + +[[pair.expected]] +cwe = "CWE-116" +class = "improper-encoding" +path = "cli/src/render/common/comment.ts" +function = "comment" +mechanism = "source_reaches_sink" +family = "output_encoding" +evidence = "GHSA-w757-xvvv-vgfw: Genql: inject arbitrary JavaScript or TypeScript via a GraphQL schema" + +[[pair]] +name = "angular-visitelementlike-417a407" +slice = "advisory-fixes" +batch = "2026-10-03" +language = "typescript" +origin = "github-advisory" +license = "MIT" +repo = "angular/angular" +cve = "CVE-2026-69151 GHSA-jj27-h5hq-8x99" +cwe = "CWE-79" +ecosystem = "npm" +published_at = "2026-08-03T16:23:40Z" +post_cutoff = true +commit = "417a4071a776464d549509ed3aec121dbd2fda5e" +parent = "2112edefe1dd24d322c247ff5354dcdb6e9c6c98" +commit_url = "https://github.com/angular/angular/commit/417a4071a776464d549509ed3aec121dbd2fda5e" +vendored = false +host = "github" +path = "packages/compiler/src/render3/view/i18n/meta.ts" +mode = "name" +relpath = "packages/compiler/src/render3/view/i18n/meta.ts" +provenance = "agent" +split = "holdout" +review_tier = "advisory" +fix_date = "2026-06-15" +fix_lines = { in_function = 2, in_file = 12, source_total = 13 } + +[[pair.expected]] +cwe = "CWE-79" +class = "xss" +path = "packages/compiler/src/render3/view/i18n/meta.ts" +function = "_visitElementLike" +mechanism = "source_reaches_sink" +family = "output_encoding" +evidence = "GHSA-jj27-h5hq-8x99: Angular i18n: Cross-Site Scripting (XSS) via event-handler attributes" + +[[pair]] +name = "cyberchef-objtotable-85db3be" +slice = "advisory-fixes" +batch = "2026-10-03" +language = "javascript" +origin = "github-advisory" +license = "Apache-2.0" +repo = "gchq/cyberchef" +cve = "CVE-2026-57439 GHSA-fx6f-382r-j72c" +cwe = "CWE-79" +ecosystem = "npm" +published_at = "2026-09-24T19:24:30Z" +post_cutoff = true +commit = "85db3be5d0096859b810f0e8d3e151d5dc9b948f" +parent = "50a7319b69ff6fd4473c8648fcaac1eeb3027dac" +commit_url = "https://github.com/gchq/cyberchef/commit/85db3be5d0096859b810f0e8d3e151d5dc9b948f" +vendored = false +host = "github" +path = "src/core/lib/Protocol.mjs" +mode = "name" +relpath = "src/core/lib/Protocol.mjs" +provenance = "agent" +split = "train" +review_tier = "advisory" +fix_date = "2026-06-17" +fix_lines = { in_function = 13, in_file = 8, source_total = 20 } + +[[pair.expected]] +cwe = "CWE-79" +class = "xss" +path = "src/core/lib/Protocol.mjs" +function = "objToTable" +mechanism = "source_reaches_sink" +family = "output_encoding" +evidence = "GHSA-fx6f-382r-j72c: CyberChef: Prototype pollution in Series Chart operation" + +[[pair]] +name = "mdc-isanchorlinkallowed-61d636c" +slice = "advisory-fixes" +batch = "2026-10-03" +language = "typescript" +origin = "github-advisory" +license = "MIT" +repo = "nuxt-content/mdc" +cve = "CVE-2026-63671 GHSA-mxm6-v9r6-r94c" +cwe = "CWE-79" +ecosystem = "npm" +published_at = "2026-09-16T22:14:01Z" +post_cutoff = true +commit = "61d636c2983f021288e4fc5c4006733b38cf0d53" +parent = "d6e5fc6001085f2d34b905ba0407a2f7392de388" +commit_url = "https://github.com/nuxt-content/mdc/commit/61d636c2983f021288e4fc5c4006733b38cf0d53" +vendored = false +host = "github" +path = "src/runtime/parser/utils/props.ts" +mode = "name" +relpath = "src/runtime/parser/utils/props.ts" +provenance = "agent" +split = "holdout" +review_tier = "advisory" +fix_date = "2026-06-21" +fix_lines = { in_function = 2, in_file = 2, source_total = 4 } + +[[pair.expected]] +cwe = "CWE-79" +class = "xss" +path = "src/runtime/parser/utils/props.ts" +function = "isAnchorLinkAllowed" +mechanism = "source_reaches_sink" +family = "output_encoding" +evidence = "GHSA-mxm6-v9r6-r94c: @nuxtjs/mdc's URL sanitizer misses SVG xlink:href and data:text/html, allowing XSS from untrusted markdown at the default configuration" + +[[pair]] +name = "node-xhtml-purifier-node-21d461a" +slice = "advisory-fixes" +batch = "2026-10-03" +language = "javascript" +origin = "github-advisory" +license = "MIT" +repo = "cstigler/node-xhtml-purifier" +cve = "CVE-2026-61784 GHSA-j8r4-32c5-33rc" +cwe = "CWE-79" +ecosystem = "npm" +published_at = "2026-09-24T19:33:23Z" +post_cutoff = true +commit = "21d461ad23e7bc9b3073693d5b51b9b8662044d3" +parent = "9370430332aa1398cc3f5abae5f335d1d8da032b" +commit_url = "https://github.com/cstigler/node-xhtml-purifier/commit/21d461ad23e7bc9b3073693d5b51b9b8662044d3" +vendored = false +host = "github" +path = "XHTMLPurifier.js" +mode = "name" +relpath = "XHTMLPurifier.js" +provenance = "agent" +split = "train" +review_tier = "advisory" +fix_date = "2026-06-23" +fix_lines = { in_function = 11, in_file = 10, source_total = 21 } + +[[pair.expected]] +cwe = "CWE-79" +class = "xss" +path = "XHTMLPurifier.js" +function = "Node" +mechanism = "source_reaches_sink" +family = "output_encoding" +evidence = "GHSA-j8r4-32c5-33rc: xhtml-purifier has HTML attribute-injection (sanitizer bypass) that leads to XSS" + +[[pair]] +name = "orpc-init-daabded" +slice = "advisory-fixes" +batch = "2026-10-03" +language = "typescript" +origin = "github-advisory" +license = "MIT" +repo = "middleapi/orpc" +cve = "CVE-2026-77360 GHSA-j9v4-rhgr-4m5f" +cwe = "CWE-113" +ecosystem = "npm" +published_at = "2026-09-17T14:52:37Z" +post_cutoff = true +commit = "daabded122a89d323357c4c401e879701864cb2f" +parent = "669f0b59cfc31efd6ea50bb50c320de2f3be2300" +commit_url = "https://github.com/middleapi/orpc/commit/daabded122a89d323357c4c401e879701864cb2f" +vendored = false +host = "github" +path = "packages/server/src/plugins/cors.ts" +mode = "name" +relpath = "packages/server/src/plugins/cors.ts" +provenance = "agent" +split = "holdout" +review_tier = "advisory" +fix_date = "2026-07-12" +fix_lines = { in_function = 5, in_file = 4, source_total = 5 } + +[[pair.expected]] +cwe = "CWE-113" +class = "header-injection" +path = "packages/server/src/plugins/cors.ts" +function = "init" +mechanism = "source_reaches_sink" +family = "output_encoding" +evidence = "GHSA-j9v4-rhgr-4m5f: oRPC: Vary Header Injection in CORS Plugin leading to potential Cache/CORS Bypass" + +[[pair]] +name = "mkdocs-material-mountsearchsuggest-52fb6be" +slice = "advisory-fixes" +batch = "2026-10-03" +language = "typescript" +origin = "github-advisory" +license = "MIT" +repo = "squidfunk/mkdocs-material" +cve = "CVE-2026-73295 GHSA-xvg9-69gf-fjrf" +cwe = "CWE-79" +ecosystem = "pip" +published_at = "2026-09-03T19:52:32Z" +post_cutoff = true +commit = "52fb6be8aafe326419f34dc94d3211e7bbfbfb25" +parent = "901e6335cc80b0f12e46a1e34bd85e983dd78a6e" +commit_url = "https://github.com/squidfunk/mkdocs-material/commit/52fb6be8aafe326419f34dc94d3211e7bbfbfb25" +vendored = false +host = "github" +path = "src/templates/assets/javascripts/components/search/suggest/index.ts" +mode = "name" +relpath = "src/templates/assets/javascripts/components/search/suggest/index.ts" +provenance = "agent" +split = "train" +review_tier = "advisory" +fix_date = "2026-07-17" +fix_lines = { in_function = 5, in_file = 4, source_total = 9 } + +[[pair.expected]] +cwe = "CWE-79" +class = "xss" +path = "src/templates/assets/javascripts/components/search/suggest/index.ts" +function = "mountSearchSuggest" +mechanism = "source_reaches_sink" +family = "output_encoding" +evidence = "GHSA-xvg9-69gf-fjrf: Material for MkDocs: DOM XSS in search suggestions via query parameter" + +[[pair]] +name = "jodit-isremovablenode-49a31f4" +slice = "advisory-fixes" +batch = "2026-10-03" +language = "typescript" +origin = "github-advisory" +license = "MIT" +repo = "xdan/jodit" +cve = "CVE-2026-65841 GHSA-45qg-252v-3f7p" +cwe = "CWE-80" +ecosystem = "npm" +published_at = "2026-07-31T19:15:57Z" +post_cutoff = true +commit = "49a31f451f6b686f5610022a1d4406ee85138dc5" +parent = "964a264f5a182d18143ac6ad9fbed1608c6d489c" +commit_url = "https://github.com/xdan/jodit/commit/49a31f451f6b686f5610022a1d4406ee85138dc5" +vendored = false +host = "github" +path = "src/plugins/clean-html/helpers/visitor/filters/try-remove-node.ts" +mode = "name" +relpath = "src/plugins/clean-html/helpers/visitor/filters/try-remove-node.ts" +provenance = "agent" +split = "holdout" +review_tier = "advisory" +fix_date = "2026-07-21" +fix_lines = { in_function = 7, in_file = 11, source_total = 17 } + +[[pair.expected]] +cwe = "CWE-80" +class = "xss" +path = "src/plugins/clean-html/helpers/visitor/filters/try-remove-node.ts" +function = "isRemovableNode" +mechanism = "source_reaches_sink" +family = "output_encoding" +evidence = "GHSA-45qg-252v-3f7p: Jodit has cross-site scripting (XSS) via