{"id":"CVE-2026-128036","kind":"vulnerability","aliases":["CVE-2026-128036"],"related":[],"title":"gittuf: policy update skips signature checks on rule files","description":"In gittuf 0.4.0 through 0.16.0, when a policy update appears within the range of reference state log entries being verified, verification checks only the root of trust signatures of the new policy and not the signatures of its other metadata (rule files). A user trusted to push to the repository who bypasses gittuf policy apply and writes the policy reference and reference state log directly can make an invalid policy apply during verification, weakening or strengthening the rules for later changes. The update is still recorded in the reference state log.","summary":"gittuf, a Git security tool, verifies only the root-of-trust signatures on a new policy and not the signatures on its rule files. A user already trusted to push to the repository can craft an invalid policy that verification accepts, which changes the rules for later changes.","severity":"low","cvss":2.3,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["git","gittuf","package","supply-chain"],"not_affected_if":["gittuf-not-used","version-outside-range"],"how_to_check":"- Check the installed gittuf version with `gittuf --version` and see whether it falls in 0.4.0 through 0.16.0.\n- Look for a policy update in the reference state log of repositories that use gittuf verification.","fix":"- Move to a gittuf release newer than 0.16.0 (the fixed version is not named in the sources given; see the release notes).","status":"open","published_at":"2026-11-13T16:18:58+00:00","first_seen_at":"2026-11-13T16:47:33+00:00","triaged_at":"2026-11-13T16:49:00+00:00","updated_at":"2026-11-13T16:49:00+00:00","category":"package","confidence":0.6,"triage":{"at":"2026-11-13T16:49:00Z","model":"claude-haiku-5-5","output":{"fix":"- Move to a gittuf release newer than 0.16.0 (the fixed version is not named in the sources given; see the release notes).","reach":"network","title":"gittuf: policy update skips signature checks on rule files","impact":"medium","summary":"gittuf, a Git security tool, verifies only the root-of-trust signatures on a new policy and not the signatures on its rule files. A user already trusted to push to the repository can craft an invalid policy that verification accepts, which changes the rules for later changes.","audience":"developers","category":"package","nicknames":[],"who_cares":["gittuf","git","supply-chain"],"confidence":0.6,"fix_status":"unknown","needs_auth":"yes","worst_case":"A trusted pusher weakens or strengthens repository policy rules","analyst_note":"Confirm the fixed version from the release notes linked in the sources (fix page), since the sources do not name it.","how_to_check":"- Check the installed gittuf version with `gittuf --version` and see whether it falls in 0.4.0 through 0.16.0.\n- Look for a policy update in the reference state log of repositories that use gittuf verification.","plain_action":"","product_name":"","needs_analyst":true,"not_affected_if":["version-outside-range","gittuf-not-used"],"who_is_affected":"Teams that use gittuf to enforce policy on Git repositories in versions 0.4.0 through 0.16.0. The risk requires a user who is already trusted to push to the repository and who bypasses gittuf policy apply to write the policy reference directly. Teams on other versions, or who do not use gittuf, can skip it.","user_interaction":"no","product_ecosystem":"","needs_special_setup":"yes","severity_if_unknown":"low"},"cost_usd":0.000763,"input_tokens":4642,"output_tokens":598,"severity_before":"low"},"analyst_status":null,"analyst_note":null,"search":"'-128036':12A,15A '-2026':11A,14A '0.16.0':75C '0.4.0':73C 'accept':63B 'alreadi':49B 'appear':80C 'appli':125C,141C 'bypass':122C 'chain':21B 'chang':65B,70B,151C 'check':6A,92C 'craft':57B 'cve':10A,13A 'direct':135C 'entri':88C 'file':9A,46B,112C 'git':16B,24B 'gittuf':1A,17B,22B,72C,123C 'invalid':59B,139C 'later':69B,150C 'log':87C,134C,161C 'make':137C 'metadata':110C 'new':37B,101C 'packag':18B 'polici':2A,38B,60B,78C,102C,124C,129C,140C 'push':52B,117C 'rang':83C 'record':156C 'refer':85C,130C,132C,159C 'repositori':55B,120C 'root':31B,95C 'root-of-trust':30B 'rule':8A,45B,67B,111C,148C 'secur':25B 'signatur':5A,34B,42B,98C,106C 'skip':4A 'state':86C,133C,160C 'still':155C 'strengthen':146C 'suppli':20B 'supply-chain':19B 'tool':26B 'trust':33B,50B,97C,115C 'updat':3A,79C,153C 'user':48B,114C 'verif':62B,91C,143C 'verifi':27B,90C 'weaken':144C 'within':81C 'write':127C","nicknames":[],"mitigations":[],"who_affected":"Teams that use gittuf to enforce policy on Git repositories in versions 0.4.0 through 0.16.0. The risk requires a user who is already trusted to push to the repository and who bypasses gittuf policy apply to write the policy reference directly. Teams on other versions, or who do not use gittuf, can skip it.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"unknown","audience":"developers","plain_action":null,"pkeys":[],"ptokens":[],"labels":["git","gittuf","low","package","supplychain"],"campaign_type":null,"search_a":"'-128036':12A,15A '-2026':11A,14A 'check':6A 'cve':10A,13A 'file':9A 'gittuf':1A 'polici':2A 'rule':8A 'signatur':5A 'skip':4A 'updat':3A","search_b":"'accept':63B 'alreadi':49B 'chain':21B 'chang':65B,70B 'craft':57B 'file':46B 'git':16B,24B 'gittuf':17B,22B 'invalid':59B 'later':69B 'new':37B 'packag':18B 'polici':38B,60B 'push':52B 'repositori':55B 'root':31B 'root-of-trust':30B 'rule':45B,67B 'secur':25B 'signatur':34B,42B 'suppli':20B 'supply-chain':19B 'tool':26B 'trust':33B,50B 'user':48B 'verif':62B 'verifi':27B","search_c":"'0.16.0':75C '0.4.0':73C 'appear':80C 'appli':125C,141C 'bypass':122C 'chang':151C 'check':92C 'direct':135C 'entri':88C 'file':112C 'gittuf':72C,123C 'invalid':139C 'later':150C 'log':87C,134C,161C 'make':137C 'metadata':110C 'new':101C 'polici':78C,102C,124C,129C,140C 'push':117C 'rang':83C 'record':156C 'refer':85C,130C,132C,159C 'repositori':120C 'root':95C 'rule':111C,148C 'signatur':98C,106C 'state':86C,133C,160C 'still':155C 'strengthen':146C 'trust':97C,115C 'updat':79C,153C 'user':114C 'verif':91C,143C 'verifi':90C 'weaken':144C 'within':81C 'write':127C","cause_entry":null,"cause_path":null,"disclosures_checked_at":null,"first_public_at":"2026-10-19T18:16:47+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:U/C:N/I:L/A:N","cvss_by":"7fefd608-56a6-419f-a002-fd8543c0710a","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-128036","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-128036","severity":null,"published_at":"2026-11-13T16:18:58+00:00","modified_at":"2026-11-13T16:18:59+00:00","first_seen_at":"2026-11-13T16:47:33+00:00","fetched_at":"2026-11-13T16:47:33+00:00","note":null}],"documents":[{"id":147651,"url":"https://github.com/gittuf/gittuf/releases/tag/v0.17.0","title":"Release notes: github.com","kind":"release","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Release notes: github.com"},{"id":147652,"url":"https://github.com/gittuf/gittuf/security/advisories/GHSA-774m-m728-236h","title":"Vendor advisory: github.com","kind":"vendor","source":"nvd","publisher":"vendor","text":null,"published_at":"2026-10-19T18:16:47+00:00","relation":"advisory","confidence":null,"note":"Vendor advisory: github.com"}],"disclosures":[],"exploit_sources":[],"notice":"Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai"}