Description
oapi-codegen 2.0.0 before 2.8.1 contains a code injection vulnerability that allows attackers to inject Go code by supplying non-literal enum entries in integer, number, or boolean schemas. Attackers controlling an OpenAPI document can craft an enum entry that closes the const block in constants.tmpl and injects a func init(), executing code when the generated package is built and imported.
Affected products
| Vendor | Product | Affected | Fixed |
|---|---|---|---|
| oapi-codegen | oapi-codegen | 2.0.0 – < 2.8.1 | 2.8.1 |
References
- GitHub Security Advisory (GHSA-g2vv-83pm-v2hc) vendor-advisory
- Pull Request #2626 patch issue-tracking
- Patch Commit patch
- https://github.com/oapi-codegen/oapi-codegen/blob/v2.8.0/pkg/codegen/templates/constants.tmpl#L16 technical-description
- https://github.com/oapi-codegen/oapi-codegen/blob/v2.0.0/pkg/codegen/templates/constants.tmpl#L12 technical-description
- oapi-codegen v2.8.1 Release Notes release-notes
- GitHub Security Advisory (GHSA-xrqw-w576-xgj2) related vendor-advisory
- VulnCheck Advisory: oapi-codegen 2.0.0 before 2.8.1 Code Injection via Non-String Enum Values third-party-advisory