{"items":[{"id":"NVI-00010735","kind":"vulnerability","title":"GitPython validates a submodule's \".git\" path only after cloning into it (RCE)","revision":4,"unknowns":["Customer inventory, deployment, reachability and exploitation have not been inspected."],"lifecycle":"active","identifiers":["GHSA-83vg-56qc-22m7","CVE-2026-114145"],"plain_summary":"GitHub lists this reviewed advisory for Gitpython. Published version ranges and source prerequisites are shown below; this is not an inspection of a visitor’s application.","review_status":"source_listed","control_topics":[],"public_actions":[{"summary":"Identify the exact component and deployed version, examine the linked publisher’s conditions, and retain evidence of any mitigation.","source_ids":["sr-1eecf37675cfadee07022d6fc16d3172"],"action_type":"investigate","limitations":"Confirm current vendor support, compatibility and deployment evidence. This report has not tested a fix in your system.","current_supported_target":null}],"schema_version":"1.1.0","source_metrics":[{"kind":"CVSS","as_of":"2026-10-22T16:41:15.000Z","value":"7.5 high","meaning":"GitHub source severity; exploitability and local consequence require separate evidence.","source_id":"sr-d82db250774ab062f0d20c4a931ab563"},{"kind":"EPSS","as_of":"2026-11-02T12:00:30.000Z","value":"0.423%","meaning":"FIRST EPSS model v2026.06.15; exploitation probability over 30 days, percentile 0.36654. Missing scores are unknown.","source_id":"sr-1eecf37675cfadee07022d6fc16d3172"}],"why_it_matters":"Published affected context helps an owner decide what evidence to gather. This report has not examined your application.","related_sources":[{"id":"sr-d82db250774ab062f0d20c4a931ab563","url":"https://github.com/advisories/GHSA-83vg-56qc-22m7","basis":"vendor_advisory","notes":"GitHub Advisory Database; CC-BY-4.0. Each advisory links its original attribution. Null normalizes fields.","title":"GHSA-83vg-56qc-22m7","publisher":"GitHub Advisory Database","observed_at":"2026-10-31T22:07:30.906Z"},{"id":"sr-1eecf37675cfadee07022d6fc16d3172","url":"https://www.first.org/epss/data.html","basis":"official_catalog","notes":"FIRST EPSS; probability of exploitation in the next 30 days, not local compromise. Dataset date/model retained; FIRST services terms apply.","title":"CVE-2026-114145","publisher":"FIRST EPSS","observed_at":"2026-11-02T20:15:58.841Z"}],"affected_context":[{"certainty":"source_listed","source_ids":["sr-d82db250774ab062f0d20c4a931ab563"],"technology":"Gitpython","known_exclusions":[],"conditions_summary":"### Summary\n\n\n`create_submodule(name, path, url)` clones a submodule into the repo's own `.git`\ndirectory before it rejects the path. A `path` of \".git/hooks\" is accepted by the\npre-clone check, so the submodule is cloned straight into the live hooks directory,\nand a file named `post-checkout` in the submodule becomes an executable\n`.git/hooks/post-checkout`. On 3.2.0+ the later index check does raise `ValueError`,\nbut only after the clone already wrote to disk, and it does not remove the planted\nhook; on 3.1.x there is no such check and the call succeeds silently. Either way the\nhook runs on the next git operation (e.g. checkout), giving code execution.\n\n### Details\n\n\nThe checkout path is validated too late, after the clone has already mutated disk.\nThis breaks the \"validate before mutation\" invariant that commit 43a43cd8 (\"Validate\nsubmodule checkout and metadata paths before mutation\") set out to enforce.\n\nSubmodule.add() calls the permissive path check before cloning, and the strict check\nonly reaches the \".git\" alias at index time, after _clone_repo has written to disk:\n\ngit/objects/submodule/base.py (Submodule.add)\n  599: path = cls._to_relative_path(repo, path)           # a","public_affected_ranges":["<= 3.2.0"]}],"null_published_at":"2026-11-07T14:01:58.730Z","source_updated_at":"2026-10-22T16:41:15.000Z","source_disclosed_at":"2026-10-22T16:41:14.000Z","is_synthetic_fixture":false,"null_last_reviewed_at":null,"public_change_summary":"Dated EPSS estimate updated; this is not a new disclosure or proof of exploitation.","null_first_observed_at":"2026-10-31T22:07:30.906Z"},{"id":"NVI-00010735","kind":"vulnerability","title":"GitPython validates a submodule's \".git\" path only after cloning into it (RCE)","revision":3,"unknowns":["Customer inventory, deployment, reachability and exploitation have not been inspected."],"lifecycle":"active","identifiers":["GHSA-83vg-56qc-22m7","CVE-2026-114145"],"plain_summary":"GitHub lists this reviewed advisory for Gitpython. Published version ranges and source prerequisites are shown below; this is not an inspection of a visitor’s application.","review_status":"source_listed","control_topics":[],"public_actions":[{"summary":"Identify the exact component and deployed version, examine the linked publisher’s conditions, and retain evidence of any mitigation.","source_ids":["sr-12310533d7f1cd5c26883238b7b0de32"],"action_type":"investigate","limitations":"Confirm current vendor support, compatibility and deployment evidence. This report has not tested a fix in your system.","current_supported_target":null}],"schema_version":"1.1.0","source_metrics":[{"kind":"CVSS","as_of":"2026-10-22T16:41:15.000Z","value":"7.5 high","meaning":"GitHub source severity; exploitability and local consequence require separate evidence.","source_id":"sr-d82db250774ab062f0d20c4a931ab563"},{"kind":"EPSS","as_of":"2026-11-01T12:00:16.000Z","value":"0.423%","meaning":"FIRST EPSS model v2026.06.15; exploitation probability over 30 days, percentile 0.3667. Missing scores are unknown.","source_id":"sr-12310533d7f1cd5c26883238b7b0de32"}],"why_it_matters":"Published affected context helps an owner decide what evidence to gather. This report has not examined your application.","related_sources":[{"id":"sr-d82db250774ab062f0d20c4a931ab563","url":"https://github.com/advisories/GHSA-83vg-56qc-22m7","basis":"vendor_advisory","notes":"GitHub Advisory Database; CC-BY-4.0. Each advisory links its original attribution. Null normalizes fields.","title":"GHSA-83vg-56qc-22m7","publisher":"GitHub Advisory Database","observed_at":"2026-10-31T22:07:30.906Z"},{"id":"sr-12310533d7f1cd5c26883238b7b0de32","url":"https://www.first.org/epss/data.html","basis":"official_catalog","notes":"FIRST EPSS; probability of exploitation in the next 30 days, not local compromise. Dataset date/model retained; FIRST services terms apply.","title":"CVE-2026-114145","publisher":"FIRST EPSS","observed_at":"2026-11-01T14:28:32.266Z"}],"affected_context":[{"certainty":"source_listed","source_ids":["sr-d82db250774ab062f0d20c4a931ab563"],"technology":"Gitpython","known_exclusions":[],"conditions_summary":"### Summary\n\n\n`create_submodule(name, path, url)` clones a submodule into the repo's own `.git`\ndirectory before it rejects the path. A `path` of \".git/hooks\" is accepted by the\npre-clone check, so the submodule is cloned straight into the live hooks directory,\nand a file named `post-checkout` in the submodule becomes an executable\n`.git/hooks/post-checkout`. On 3.2.0+ the later index check does raise `ValueError`,\nbut only after the clone already wrote to disk, and it does not remove the planted\nhook; on 3.1.x there is no such check and the call succeeds silently. Either way the\nhook runs on the next git operation (e.g. checkout), giving code execution.\n\n### Details\n\n\nThe checkout path is validated too late, after the clone has already mutated disk.\nThis breaks the \"validate before mutation\" invariant that commit 43a43cd8 (\"Validate\nsubmodule checkout and metadata paths before mutation\") set out to enforce.\n\nSubmodule.add() calls the permissive path check before cloning, and the strict check\nonly reaches the \".git\" alias at index time, after _clone_repo has written to disk:\n\ngit/objects/submodule/base.py (Submodule.add)\n  599: path = cls._to_relative_path(repo, path)           # a","public_affected_ranges":["<= 3.2.0"]}],"null_published_at":"2026-11-03T17:49:18.475Z","source_updated_at":"2026-10-22T16:41:15.000Z","source_disclosed_at":"2026-10-22T16:41:14.000Z","is_synthetic_fixture":false,"null_last_reviewed_at":null,"public_change_summary":"Dated EPSS estimate updated; this is not a new disclosure or proof of exploitation.","null_first_observed_at":"2026-10-31T22:07:30.906Z"},{"id":"NVI-00010735","kind":"vulnerability","title":"GitPython validates a submodule's \".git\" path only after cloning into it (RCE)","revision":2,"unknowns":["Customer inventory, deployment, reachability and exploitation have not been inspected."],"lifecycle":"active","identifiers":["GHSA-83vg-56qc-22m7","CVE-2026-114145"],"plain_summary":"GitHub lists this reviewed advisory for Gitpython. Published version ranges and source prerequisites are shown below; this is not an inspection of a visitor’s application.","review_status":"source_listed","control_topics":[],"public_actions":[{"summary":"Identify the exact component and deployed version, examine the linked publisher’s conditions, and retain evidence of any mitigation.","source_ids":["sr-2c58962127e39660891ba7d842bba172"],"action_type":"investigate","limitations":"Confirm current vendor support, compatibility and deployment evidence. This report has not tested a fix in your system.","current_supported_target":null}],"schema_version":"1.1.0","source_metrics":[{"kind":"CVSS","as_of":"2026-10-22T16:41:15.000Z","value":"7.5 high","meaning":"GitHub source severity; exploitability and local consequence require separate evidence.","source_id":"sr-d82db250774ab062f0d20c4a931ab563"},{"kind":"EPSS","as_of":"2026-10-31T12:00:27.000Z","value":"0.423%","meaning":"FIRST EPSS model v2026.06.15; exploitation probability over 30 days, percentile 0.36678. Missing scores are unknown.","source_id":"sr-2c58962127e39660891ba7d842bba172"}],"why_it_matters":"Published affected context helps an owner decide what evidence to gather. This report has not examined your application.","related_sources":[{"id":"sr-d82db250774ab062f0d20c4a931ab563","url":"https://github.com/advisories/GHSA-83vg-56qc-22m7","basis":"vendor_advisory","notes":"GitHub Advisory Database; CC-BY-4.0. Each advisory links its original attribution. Null normalizes fields.","title":"GHSA-83vg-56qc-22m7","publisher":"GitHub Advisory Database","observed_at":"2026-10-31T22:07:30.906Z"},{"id":"sr-2c58962127e39660891ba7d842bba172","url":"https://www.first.org/epss/data.html","basis":"official_catalog","notes":"FIRST EPSS; probability of exploitation in the next 30 days, not local compromise. Dataset date/model retained; FIRST services terms apply.","title":"CVE-2026-114145","publisher":"FIRST EPSS","observed_at":"2026-10-31T23:13:27.688Z"}],"affected_context":[{"certainty":"source_listed","source_ids":["sr-d82db250774ab062f0d20c4a931ab563"],"technology":"Gitpython","known_exclusions":[],"conditions_summary":"### Summary\n\n\n`create_submodule(name, path, url)` clones a submodule into the repo's own `.git`\ndirectory before it rejects the path. A `path` of \".git/hooks\" is accepted by the\npre-clone check, so the submodule is cloned straight into the live hooks directory,\nand a file named `post-checkout` in the submodule becomes an executable\n`.git/hooks/post-checkout`. On 3.2.0+ the later index check does raise `ValueError`,\nbut only after the clone already wrote to disk, and it does not remove the planted\nhook; on 3.1.x there is no such check and the call succeeds silently. Either way the\nhook runs on the next git operation (e.g. checkout), giving code execution.\n\n### Details\n\n\nThe checkout path is validated too late, after the clone has already mutated disk.\nThis breaks the \"validate before mutation\" invariant that commit 43a43cd8 (\"Validate\nsubmodule checkout and metadata paths before mutation\") set out to enforce.\n\nSubmodule.add() calls the permissive path check before cloning, and the strict check\nonly reaches the \".git\" alias at index time, after _clone_repo has written to disk:\n\ngit/objects/submodule/base.py (Submodule.add)\n  599: path = cls._to_relative_path(repo, path)           # a","public_affected_ranges":["<= 3.2.0"]}],"null_published_at":"2026-10-31T23:18:22.443Z","source_updated_at":"2026-10-22T16:41:15.000Z","source_disclosed_at":"2026-10-22T16:41:14.000Z","is_synthetic_fixture":false,"null_last_reviewed_at":null,"public_change_summary":"Dated EPSS estimate updated; this is not a new disclosure or proof of exploitation.","null_first_observed_at":"2026-10-31T22:07:30.906Z"},{"id":"NVI-00010735","kind":"vulnerability","title":"GitPython validates a submodule's \".git\" path only after cloning into it (RCE)","revision":1,"unknowns":["Customer inventory, deployment, reachability and exploitation have not been inspected."],"lifecycle":"active","identifiers":["GHSA-83vg-56qc-22m7","CVE-2026-114145"],"plain_summary":"GitHub lists this reviewed advisory for Gitpython. Published version ranges and source prerequisites are shown below; this is not an inspection of a visitor’s application.","review_status":"source_listed","control_topics":[],"public_actions":[{"summary":"Identify the exact component and deployed version, examine the linked publisher’s conditions, and retain evidence of any mitigation.","source_ids":["sr-d82db250774ab062f0d20c4a931ab563"],"action_type":"investigate","limitations":"Confirm current vendor support, compatibility and deployment evidence. This report has not tested a fix in your system.","current_supported_target":null}],"schema_version":"1.1.0","source_metrics":[{"kind":"CVSS","as_of":"2026-10-22T16:41:15.000Z","value":"7.5 high","meaning":"GitHub source severity; exploitability and local consequence require separate evidence.","source_id":"sr-d82db250774ab062f0d20c4a931ab563"}],"why_it_matters":"Published affected context helps an owner decide what evidence to gather. This report has not examined your application.","related_sources":[{"id":"sr-d82db250774ab062f0d20c4a931ab563","url":"https://github.com/advisories/GHSA-83vg-56qc-22m7","basis":"vendor_advisory","notes":"GitHub Advisory Database; CC-BY-4.0. Each advisory links its original attribution. Null normalizes fields.","title":"GHSA-83vg-56qc-22m7","publisher":"GitHub Advisory Database","observed_at":"2026-10-31T22:07:30.906Z"}],"affected_context":[{"certainty":"source_listed","source_ids":["sr-d82db250774ab062f0d20c4a931ab563"],"technology":"Gitpython","known_exclusions":[],"conditions_summary":"### Summary\n\n\n`create_submodule(name, path, url)` clones a submodule into the repo's own `.git`\ndirectory before it rejects the path. A `path` of \".git/hooks\" is accepted by the\npre-clone check, so the submodule is cloned straight into the live hooks directory,\nand a file named `post-checkout` in the submodule becomes an executable\n`.git/hooks/post-checkout`. On 3.2.0+ the later index check does raise `ValueError`,\nbut only after the clone already wrote to disk, and it does not remove the planted\nhook; on 3.1.x there is no such check and the call succeeds silently. Either way the\nhook runs on the next git operation (e.g. checkout), giving code execution.\n\n### Details\n\n\nThe checkout path is validated too late, after the clone has already mutated disk.\nThis breaks the \"validate before mutation\" invariant that commit 43a43cd8 (\"Validate\nsubmodule checkout and metadata paths before mutation\") set out to enforce.\n\nSubmodule.add() calls the permissive path check before cloning, and the strict check\nonly reaches the \".git\" alias at index time, after _clone_repo has written to disk:\n\ngit/objects/submodule/base.py (Submodule.add)\n  599: path = cls._to_relative_path(repo, path)           # a","public_affected_ranges":["<= 3.2.0"]}],"null_published_at":"2026-10-31T22:27:12.379Z","source_updated_at":"2026-10-22T16:41:15.000Z","source_disclosed_at":"2026-10-22T16:41:14.000Z","is_synthetic_fixture":false,"null_last_reviewed_at":null,"public_change_summary":"First indexed by Null; source disclosure date is shown separately.","null_first_observed_at":"2026-10-31T22:07:30.906Z"}],"next_cursor":null,"snapshot_revision":"42594"}