CVE-2022-39304 json
ghinstallation returns app JWT in error responses
published 2022-12-19 3 y ago modified 2026-06-17 4 mo ago also GHSA-h4q8-96p6-jcgr , GO-2022-1178 , EUVD-2022-7643
- cvss
- 5.0
- version 3.1, CNA
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.4%
- EPSS 0.4% chance of exploitation in 30 days, percentile 33%
- public exploits
- 0
- none known
Summary
ghinstallation provides transport, which implements http.RoundTripper to provide authentication as an installation for GitHub Apps. In ghinstallation version 1, when the request to refresh an installation token failed, the HTTP request and response would be returned for debugging. The request contained the bearer JWT for the App, and was returned back to clients. This token is short lived (10 minute maximum). This issue has been patched and is available in version 2.0.0.
Patch / fix
- go github.com/bradleyfalzon/ghinstallation 1.1.2-0.20210308182858-d24f14f8be70, 2.0.0
- ghinstallation_project ghinstallation 2.0.0
Vendor advisories
What the vendors themselves say about their products: affected, fixed or not affected, and what to do.
red hat product security vex CVE-2022-39304 updated cvss 5.0
ghinstallation: Leak of bearer JWT from http.RoundTripper response
-
Red Hat OpenShift GitOps openshift-gitops-1/argocd-rhel8, openshift-gitops-1/applicationset-rhel8affected: no fix available
-
Red Hat Advanced Cluster Management for Kubernetes 2 rhacm2/multicluster-operators-subscription-rhel8 Red Hat Advanced Cluster Security 3 advanced-cluster-security/rhacs-main-rhel8, advanced-cluster-security/rhacs-scanner-rhel8 Red Hat OpenShift GitOps openshift-gitops-1/gitops-rhel8, openshift-gitops-1/gitops-rhel8-operatornot affected: vulnerable code not present
Red Hat CSAF VEX © Red Hat, Inc., from https://security.access.redhat.com/data/csaf/v2/vex/; changed: reduced to product statuses and remediations. CC BY 4.0 · csaf
CISA SSVC
- Exploitation
- none
- Automatable
- no
- Technical impact
- partial
- Assessed
- 18 mo ago
Exploit prediction
0.39% chance of exploitation in the next 30 days, higher than 33% of all scored CVEs (FIRST EPSS, 2026-11-08).
Exploits and checks
- github.com https://github.com/bradleyfalzon/ghinstallation/blob/24e56b3fb7669f209134a01eff731d7e2ef72a5c/transport.go#L172-L174 referenced PoC, tagged "exploit" by a source, unverified
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 3.1 | 5.0 | CVSS:3.1/AV:L/AC:H/PR:L/UI:R/S:U/C:H/I:N/A:L |
| NVD | 3.1 | 4.7 | CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:N/A:N |
| GitHub | 3.1 | 5.0 | CVSS:3.1/AV:L/AC:H/PR:L/UI:R/S:U/C:H/I:N/A:L |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| go | github.com/bradleyfalzon/ghinstallation | <2.0.0 <1.1.2-0.20210308182858-d24f14f8be70 |
2.0.0 1.1.2-0.20210308182858-d24f14f8be70 |
Affected products
- bradleyfalzon ghinstallation
Classification
- Weakness
-
- CWE-209 Generation of Error Message Containing Sensitive Information
References
-
github.com
/bradleyfalzon/ghinstallation/commit/d24f14f8be70d94129d76026e8b0f4f9170c8c3e
web, patch, third-party-advisory
-
github.com
/bradleyfalzon/ghinstallation/security/advisories/GHSA-h4q8-96p6-jcgr
web, patch, third-party-advisory, advisory
-
github.com
/bradleyfalzon/ghinstallation/blob/24e56b3fb7669f209134a01eff731d7e2ef72a5c/transport.go#L172-L174
web, exploit, third-party-advisory
-
docs.github.com
/en/developers/apps/building-github-apps/authenticating-with-github-apps#authenticating-as-an-installation
web, technical-description, third-party-advisory
-
nvd.nist.gov
/vuln/detail/CVE-2022-39304
advisory
-
github.com
/bradleyfalzon/ghinstallation
package
-
pkg.go.dev
/vuln/GO-2022-1178
web
-
securitylab.github.com
/advisories/GHSL-2022-061_ghinstallation
advisory
Sources
- CVE List CVE-2022-39304
- GitHub Advisory GHSA-h4q8-96p6-jcgr
- NVD CVE-2022-39304
- OSV GO-2022-1178
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.