{"id":"CVE-2025-25204","aliases":["AZL-56885","EUVD-2025-4090","GHSA-fgw4-v983-mgp8","GO-2025-3467","UBUNTU-CVE-2025-25204","openSUSE-SU-2025:14889-1"],"status":"published","title":"`gh attestation verify` returns incorrect exit code during verification if no attestations are present","description":"`gh` is GitHub’s official command line tool. Starting in version 2.49.0 and prior to version 2.67.0, under certain conditions, a bug in GitHub's Artifact Attestation cli tool `gh attestation verify` causes it to return a zero exit status when no attestations are present. This behavior is incorrect: When no attestations are present, `gh attestation verify` should return a non-zero exit status code, thereby signaling verification failure. An attacker can abuse this flaw to, for example, deploy malicious artifacts in any system that uses `gh attestation verify`'s exit codes to gatekeep deployments. Users are advised to update `gh` to patched version `v2.67.0` as soon as possible.","severity":{"version":"3.1","score":6.3,"vector":"CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:C/C:N/I:H/A:N","level":"medium","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-11","score":0.00406,"percentile":0.35366,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-390"],"published":"2025-02-14T16:38:29Z","modified":"2026-10-28T02:31:09Z","fixes":[{"ecosystem":"Go","package":"github.com/cli/cli/v2","fixed_in":["2.67.0"],"sources":["ghsa","osv"]},{"ecosystem":"Azure Linux:3","package":"gh","fixed_in":["2.62.0-6"],"sources":["osv"]}],"affected":[{"source":"ghsa","ecosystem":"Go","package":"github.com/cli/cli/v2","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"2.49.0"},{"fixed":"2.67.0"}]}]},{"source":"osv","ecosystem":"Azure Linux:3","package":"gh","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.62.0-6"}]}]},{"source":"osv","ecosystem":"Go","package":"github.com/cli/cli/v2","ranges":[{"type":"SEMVER","events":[{"introduced":"2.49.0"},{"fixed":"2.67.0"}]}]},{"source":"osv","ecosystem":"Go","package":"github.com/cli/cli","ranges":[{"type":"SEMVER","events":[{"introduced":"0"}]}]},{"source":"osv","ecosystem":"Go","package":"github.com/cli/cli/v2","ranges":[{"type":"SEMVER","events":[{"introduced":"2.49.0"},{"fixed":"2.67.0"}]}]},{"source":"osv","ecosystem":"openSUSE:Tumbleweed","package":"govulncheck-vulndb","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.0.20250312T181707-1.1"}]}],"bundled":31}],"products":[{"vendor":"cli","product":"cli"}],"references":[{"url":"https://github.com/cli/cli/security/advisories/GHSA-fgw4-v983-mgp8","tags":["x_refsource_CONFIRM","advisory","web","report"]},{"url":"https://github.com/cli/cli/issues/10418","tags":["x_refsource_MISC","report","web"]},{"url":"https://github.com/cli/cli/pull/10421","tags":["x_refsource_MISC","fix","web","report"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2025-25204","tags":["web","advisory"]},{"url":"https://github.com/advisories/GHSA-fgw4-v983-mgp8"},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2025/25xxx/CVE-2025-25204.json","tags":["advisory"]},{"url":"https://github.com/cli/cli","tags":["package"]},{"url":"https://ubuntu.com/security/CVE-2025-25204","tags":["report"]},{"url":"https://www.cve.org/CVERecord?id=CVE-2025-25204","tags":["report"]},{"url":"","tags":["advisory"]},{"url":"https://www.suse.com/security/cve/CVE-2024-57603","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2024-57604","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-0426","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-1243","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-1293","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-1412","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-20051","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-22870","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-22952","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-23387","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-23388","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-23389","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-24016","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-24526","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-24806","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-24976","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-25196","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-25199","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-25204","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-25279","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-25294","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-27088","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-27090","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-27100","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-27112","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-27144","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-27155","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-27414","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-27421","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-27507","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-27509","tags":["web"]}],"sources":{"cve":[{"id":"CVE-2025-25204","title":"`gh attestation verify` returns incorrect exit code during verification if no attestations are present","description":"`gh` is GitHub’s official command line tool. Starting in version 2.49.0 and prior to version 2.67.0, under certain conditions, a bug in GitHub's Artifact Attestation cli tool `gh attestation verify` causes it to return a zero exit status when no attestations are present. This behavior is incorrect: When no attestations are present, `gh attestation verify` should return a non-zero exit status code, thereby signaling verification failure. An attacker can abuse this flaw to, for example, deploy malicious artifacts in any system that uses `gh attestation verify`'s exit codes to gatekeep deployments. Users are advised to update `gh` to patched version `v2.67.0` as soon as possible.","status":"published","published":"2025-02-14T16:38:29.038Z","modified":"2025-03-03T19:13:28.888Z","cvss":[{"version":"3.1","score":6.3,"vector":"CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:C/C:N/I:H/A:N","level":"medium","assessor":"cna"}],"cwes":["CWE-390"],"updated_at":"2026-11-02T14:32:31.971896Z"}],"euvd":[{"id":"EUVD-2025-4090","description":"`gh` is GitHub’s official command line tool. Starting in version 2.49.0 and prior to version 2.67.0, under certain conditions, a bug in GitHub's Artifact Attestation cli tool `gh attestation verify` causes it to return a zero exit status when no attestations are present. This behavior is incorrect: When no attestations are present, `gh attestation verify` should return a non-zero exit status code, thereby signaling verification failure. An attacker can abuse this flaw to, for example, deploy malicious artifacts in any system that uses `gh attestation verify`'s exit codes to gatekeep deployments. Users are advised to update `gh` to patched version `v2.67.0` as soon as possible.","status":"published","published":"2025-02-14T16:38:29Z","modified":"2025-03-03T19:13:28Z","cvss":[{"version":"3.1","score":6.3,"vector":"CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:C/C:N/I:H/A:N","level":"medium"}],"updated_at":"2026-11-02T20:53:18.061162Z"}],"ghsa":[{"id":"GHSA-fgw4-v983-mgp8","title":"`gh attestation verify` returns incorrect exit code during verification if no attestations are present","description":"### Summary\n\nA bug in GitHub's Artifact Attestation CLI tool, `gh attestation verify`, may return an incorrect zero exit status when no matching attestations are found for the specified `--predicate-type \u003cvalue\u003e` or the default `https://slsa.dev/provenance/v1` if not specified. This issue only arises if an artifact has an attestation with a predicate type different from the one provided in the command. As a result, users relying solely on these exit codes may mistakenly believe the attestation has been verified, despite the absence of an attestation with the specified predicate type and the tool printing a verification failure.\n\nUsers are advised to update `gh` to version `v2.67.0` as soon as possible.\n\nInitial report: https://github.com/cli/cli/issues/10418\nFix: https://github.com/cli/cli/pull/10421\n\n### Details\n\nThe gh attestation verify command fetches, loads, and attempts to verify attestations associated with a given artifact for a specified predicate type. If an attestation is found, but the predicate type does not match the one specified in the `gh attestation verify` command, the verification fails, but the program exits early.\n\nDue to a re-used uninitialized error variable, when no matching attestations are found, the relevant function returns `nil` instead of an error, causing the program to exit with a status code of `0`, which incorrectly suggests successful verification.\n\n### PoC\n\nRun `gh attestation verify` with local attestations using the `--bundle` flag and specify a predicate type with `--predicate-type` that you know will not match any of the attestations the command will attempt to verify. Confirm that the command exits with a zero status code.\n\n### Impact\n\nUsers who rely exclusively on the exit status code of `gh attestation verify` may incorrectly verify an attestation when the attestation's predicate type does not match the specified predicate type in the command.","status":"published","published":"2025-02-14T17:19:14Z","modified":"2025-02-17T07:28:55Z","cvss":[{"version":"3.1","score":6.3,"vector":"CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:C/C:N/I:H/A:N","level":"medium"}],"cwes":["CWE-390"],"updated_at":"2026-11-02T14:38:32.275316Z"}],"nvd":[{"id":"CVE-2025-25204","description":"`gh` is GitHub’s official command line tool. Starting in version 2.49.0 and prior to version 2.67.0, under certain conditions, a bug in GitHub's Artifact Attestation cli tool `gh attestation verify` causes it to return a zero exit status when no attestations are present. This behavior is incorrect: When no attestations are present, `gh attestation verify` should return a non-zero exit status code, thereby signaling verification failure. An attacker can abuse this flaw to, for example, deploy malicious artifacts in any system that uses `gh attestation verify`'s exit codes to gatekeep deployments. Users are advised to update `gh` to patched version `v2.67.0` as soon as possible.","status":"published","published":"2025-02-14T17:15:19.14Z","modified":"2026-06-17T09:00:28.767Z","cvss":[{"version":"3.1","score":6.3,"vector":"CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:C/C:N/I:H/A:N","level":"medium","assessor":"secondary"}],"cwes":["CWE-390"],"updated_at":"2026-11-02T14:10:51.445921Z"}],"osv":[{"id":"CVE-2025-25204","title":"`gh attestation verify` returns incorrect exit code during verification if no attestations are present","description":"`gh` is GitHub’s official command line tool. Starting in version 2.49.0 and prior to version 2.67.0, under certain conditions, a bug in GitHub's Artifact Attestation cli tool `gh attestation verify` causes it to return a zero exit status when no attestations are present. This behavior is incorrect: When no attestations are present, `gh attestation verify` should return a non-zero exit status code, thereby signaling verification failure. An attacker can abuse this flaw to, for example, deploy malicious artifacts in any system that uses `gh attestation verify`'s exit codes to gatekeep deployments. Users are advised to update `gh` to patched version `v2.67.0` as soon as possible.","status":"published","published":"2025-02-14T16:38:29.038Z","modified":"2026-10-28T02:31:09.068222598Z","cvss":[{"version":"3.1","score":6.3,"vector":"CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:C/C:N/I:H/A:N","level":"medium"}],"cwes":["CWE-390"],"updated_at":"2026-11-02T15:44:47.386092Z"},{"id":"GHSA-fgw4-v983-mgp8","title":"`gh attestation verify` returns incorrect exit code during verification if no attestations are present","description":"### Summary\n\nA bug in GitHub's Artifact Attestation CLI tool, `gh attestation verify`, may return an incorrect zero exit status when no matching attestations are found for the specified `--predicate-type \u003cvalue\u003e` or the default `https://slsa.dev/provenance/v1` if not specified. This issue only arises if an artifact has an attestation with a predicate type different from the one provided in the command. As a result, users relying solely on these exit codes may mistakenly believe the attestation has been verified, despite the absence of an attestation with the specified predicate type and the tool printing a verification failure.\n\nUsers are advised to update `gh` to version `v2.67.0` as soon as possible.\n\nInitial report: https://github.com/cli/cli/issues/10418\nFix: https://github.com/cli/cli/pull/10421\n\n### Details\n\nThe gh attestation verify command fetches, loads, and attempts to verify attestations associated with a given artifact for a specified predicate type. If an attestation is found, but the predicate type does not match the one specified in the `gh attestation verify` command, the verification fails, but the program exits early.\n\nDue to a re-used uninitialized error variable, when no matching attestations are found, the relevant function returns `nil` instead of an error, causing the program to exit with a status code of `0`, which incorrectly suggests successful verification.\n\n### PoC\n\nRun `gh attestation verify` with local attestations using the `--bundle` flag and specify a predicate type with `--predicate-type` that you know will not match any of the attestations the command will attempt to verify. Confirm that the command exits with a zero status code.\n\n### Impact\n\nUsers who rely exclusively on the exit status code of `gh attestation verify` may incorrectly verify an attestation when the attestation's predicate type does not match the specified predicate type in the command.","status":"published","published":"2025-02-14T17:19:14Z","modified":"2026-09-10T03:50:22.712855427Z","cvss":[{"version":"3.1","score":6.3,"vector":"CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:C/C:N/I:H/A:N","level":"medium"}],"cwes":["CWE-390"],"updated_at":"2026-11-02T15:46:46.39441Z"},{"id":"UBUNTU-CVE-2025-25204","description":"`gh` is GitHub’s official command line tool. Starting in version 2.49.0 and prior to version 2.67.0, under certain conditions, a bug in GitHub's Artifact Attestation cli tool `gh attestation verify` causes it to return a zero exit status when no attestations are present. This behavior is incorrect: When no attestations are present, `gh attestation verify` should return a non-zero exit status code, thereby signaling verification failure. An attacker can abuse this flaw to, for example, deploy malicious artifacts in any system that uses `gh attestation verify`'s exit codes to gatekeep deployments. Users are advised to update `gh` to patched version `v2.67.0` as soon as possible.","status":"withdrawn","published":"2025-02-14T17:15:00Z","modified":"2026-02-04T06:19:03.127068Z","cvss":[{"version":"3.1","score":6.3,"vector":"CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:C/C:N/I:H/A:N","level":"medium"}],"updated_at":"2026-11-02T16:55:26.330196Z"},{"id":"AZL-56885","title":"CVE-2025-25204 affecting package gh for versions less than 2.62.0-6","description":"`gh` is GitHub’s official command line tool. Starting in version 2.49.0 and prior to version 2.67.0, under certain conditions, a bug in GitHub's Artifact Attestation cli tool `gh attestation verify` causes it to return a zero exit status when no attestations are present. This behavior is incorrect: When no attestations are present, `gh attestation verify` should return a non-zero exit status code, thereby signaling verification failure. An attacker can abuse this flaw to, for example, deploy malicious artifacts in any system that uses `gh attestation verify`'s exit codes to gatekeep deployments. Users are advised to update `gh` to patched version `v2.67.0` as soon as possible.","status":"published","published":"2025-02-14T17:15:19Z","modified":"2026-09-08T17:33:11Z","updated_at":"2026-11-02T15:28:07.209678Z"},{"id":"GO-2025-3467","title":"`gh attestation verify` returns incorrect exit code during verification if no attestations are present in github.com/cli/cli","description":"`gh attestation verify` returns incorrect exit code during verification if no attestations are present in github.com/cli/cli","status":"published","published":"2025-03-03T19:22:09Z","modified":"2026-02-04T03:05:41.198441Z","updated_at":"2026-11-02T15:47:01.728182Z"},{"id":"openSUSE-SU-2025:14889-1","title":"govulncheck-vulndb-0.0.20250312T181707-1.1 on GA media","description":"These are all security issues fixed in the govulncheck-vulndb-0.0.20250312T181707-1.1 package on the GA media of openSUSE Tumbleweed.","status":"published","published":"2025-03-13T00:00:00Z","modified":"2026-02-04T04:02:14.938926Z","updated_at":"2026-11-02T16:58:37.399567Z"}]}}
