{"id":"CVE-2026-128037","kind":"vulnerability","aliases":["CVE-2026-128037"],"related":[],"title":"gittuf: global threshold rule lets unauthorized users pass verification","description":"In gittuf 0.10.0 through 0.15.0, when a minimum threshold global rule and a policy rule protect the same namespace, verification gives the global rule's check over all trusted users in the policy precedence over the policy rule's own authorized users. A user listed in the policy file but not authorized by the policy rule, or fewer users than the rule's threshold, can make changes to the protected namespace that pass verification.","summary":"In gittuf 0.10.0 through 0.15.0, when a global minimum-threshold rule and a policy rule cover the same namespace, verification applies the global rule's check over all trusted users instead of the policy rule's authorized users. A user who is trusted but not authorized by the policy rule, or fewer approvers than the threshold, can make changes to the protected namespace that still pass verification.","severity":"medium","cvss":6.5,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["git","gittuf","package","supply-chain"],"not_affected_if":["no-overlapping-global-and-policy-rules","not-using-gittuf"],"how_to_check":"- Run `gittuf version` and check whether it reports a version from `0.10.0` through `0.15.0`.\n- Look for a global minimum-threshold rule and a policy rule that protect the same namespace in the gittuf policy.","fix":"- gittuf: unknown (the sources list a fix link, but the fixed version was not stated in the text provided)","status":"open","published_at":"2026-11-13T16:18:59+00:00","first_seen_at":"2026-11-13T16:47:33+00:00","triaged_at":"2026-11-13T16:48:51+00:00","updated_at":"2026-11-13T16:48:51+00:00","category":"package","confidence":0.6,"triage":{"at":"2026-11-13T16:48:51Z","model":"claude-haiku-5-5","output":{"fix":"- gittuf: unknown (the sources list a fix link, but the fixed version was not stated in the text provided)","reach":"unknown","title":"gittuf: global threshold rule lets unauthorized users pass verification","impact":"medium","summary":"In gittuf 0.10.0 through 0.15.0, when a global minimum-threshold rule and a policy rule cover the same namespace, verification applies the global rule's check over all trusted users instead of the policy rule's authorized users. A user who is trusted but not authorized by the policy rule, or fewer approvers than the threshold, can make changes to the protected namespace that still pass verification.","audience":"developers","category":"package","nicknames":[],"who_cares":["gittuf","git","supply-chain"],"confidence":0.6,"fix_status":"unknown","needs_auth":"unknown","worst_case":"unauthorized users can alter protected namespace changes that pass verification","analyst_note":"Confirm the fixed gittuf version and the vendor advisory text at the linked GitHub release notes and advisory pages.","how_to_check":"- Run `gittuf version` and check whether it reports a version from `0.10.0` through `0.15.0`.\n- Look for a global minimum-threshold rule and a policy rule that protect the same namespace in the gittuf policy.","plain_action":"","product_name":"","needs_analyst":true,"not_affected_if":["not-using-gittuf","no-overlapping-global-and-policy-rules"],"who_is_affected":"Teams that use gittuf to verify Git changes and have both a global minimum-threshold rule and a policy rule covering the same namespace are exposed. Repositories without that overlap, or not using gittuf verification, can skip it. The description does not say whether the flaw needs any account access beyond being listed in the policy file.","user_interaction":"no","product_ecosystem":"","needs_special_setup":"yes","severity_if_unknown":"medium"},"cost_usd":0.000785,"input_tokens":4624,"output_tokens":645,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-128037':12A,15A '-2026':11A,14A '0.10.0':24B,92C '0.15.0':26B,94C 'appli':43B 'approv':75B 'author':59B,68B,130C,141C 'chain':21B 'chang':81B,156C 'check':48B,115C 'cover':38B 'cve':10A,13A 'fewer':74B,147C 'file':138C 'git':16B 'gittuf':1A,17B,23B,91C 'give':110C 'global':2A,29B,45B,99C,112C 'instead':53B 'let':5A 'list':134C 'make':80B,155C 'minimum':31B,97C 'minimum-threshold':30B 'namespac':41B,85B,108C,160C 'packag':18B 'pass':8A,88B,162C 'polici':36B,56B,71B,103C,122C,126C,137C,144C 'preced':123C 'protect':84B,105C,159C 'rule':4A,33B,37B,46B,57B,72B,100C,104C,113C,127C,145C,151C 'still':87B 'suppli':20B 'supply-chain':19B 'threshold':3A,32B,78B,98C,153C 'trust':51B,65B,118C 'unauthor':6A 'user':7A,52B,60B,62B,119C,131C,133C,148C 'verif':9A,42B,89B,109C,163C","nicknames":[],"mitigations":[],"who_affected":"Teams that use gittuf to verify Git changes and have both a global minimum-threshold rule and a policy rule covering the same namespace are exposed. Repositories without that overlap, or not using gittuf verification, can skip it. The description does not say whether the flaw needs any account access beyond being listed in the policy file.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"unknown","audience":"developers","plain_action":null,"pkeys":[],"ptokens":[],"labels":["git","gittuf","medium","package","supplychain"],"campaign_type":null,"search_a":"'-128037':12A,15A '-2026':11A,14A 'cve':10A,13A 'gittuf':1A 'global':2A 'let':5A 'pass':8A 'rule':4A 'threshold':3A 'unauthor':6A 'user':7A 'verif':9A","search_b":"'0.10.0':24B '0.15.0':26B 'appli':43B 'approv':75B 'author':59B,68B 'chain':21B 'chang':81B 'check':48B 'cover':38B 'fewer':74B 'git':16B 'gittuf':17B,23B 'global':29B,45B 'instead':53B 'make':80B 'minimum':31B 'minimum-threshold':30B 'namespac':41B,85B 'packag':18B 'pass':88B 'polici':36B,56B,71B 'protect':84B 'rule':33B,37B,46B,57B,72B 'still':87B 'suppli':20B 'supply-chain':19B 'threshold':32B,78B 'trust':51B,65B 'user':52B,60B,62B 'verif':42B,89B","search_c":"'0.10.0':92C '0.15.0':94C 'author':130C,141C 'chang':156C 'check':115C 'fewer':147C 'file':138C 'gittuf':91C 'give':110C 'global':99C,112C 'list':134C 'make':155C 'minimum':97C 'namespac':108C,160C 'pass':162C 'polici':103C,122C,126C,137C,144C 'preced':123C 'protect':105C,159C 'rule':100C,104C,113C,127C,145C,151C 'threshold':98C,153C 'trust':118C 'user':119C,131C,133C,148C 'verif':109C,163C","cause_entry":null,"cause_path":null,"disclosures_checked_at":null,"first_public_at":"2026-09-04T22:19:45+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N","cvss_by":"7fefd608-56a6-419f-a002-fd8543c0710a","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-128037","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-128037","severity":null,"published_at":"2026-11-13T16:18:59+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":147653,"url":"https://github.com/gittuf/gittuf/releases/tag/v0.16.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":147654,"url":"https://github.com/gittuf/gittuf/security/advisories/GHSA-qc8j-pcph-6q9x","title":"Vendor advisory: github.com","kind":"vendor","source":"nvd","publisher":"vendor","text":null,"published_at":"2026-09-04T22:19:45+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"}