| id: GO-2023-1623 |
| modules: |
| - module: github.com/crossplane/crossplane-runtime |
| versions: |
| - introduced: 0.6.0 |
| fixed: 0.16.1 |
| - introduced: 0.17.0 |
| fixed: 0.19.2 |
| vulnerable_at: 0.19.1 |
| packages: |
| - package: github.com/crossplane/crossplane-runtime/pkg/fieldpath |
| symbols: |
| - Paved.SetValue |
| derived_symbols: |
| - Paved.MergeValue |
| - Paved.SetBool |
| - Paved.SetNumber |
| - Paved.SetString |
| summary: Out-of-memory panic in Paved.SetValue. |
| description: | |
| An out of memory panic vulnerability exists in the crossplane-runtime |
| libraries. |
| |
| Applications that use the Paved type's SetValue method with user-provided |
| input that is not properly validated might use excessive amounts of memory |
| and cause an out of memory panic. |
| |
| In the fieldpath package, the Paved.SetValue method sets a value on the |
| Paved object according to the provided path, without any validation. This |
| allows setting values in slices at any provided index, which grows the |
| target array up to the requested index. The index is currently capped at max |
| uint32 (4294967295), a large value. If callers do not validate paths' |
| indexes on their own, this could allow users to consume arbitrary amounts of |
| memory. |
| |
| Applications that do not use the Paved type's SetValue method are not affected. |
| |
| Users unable to upgrade can work around this issue by parsing and validating |
| the path before passing it to the SetValue method of the Paved type, |
| constraining the index size as deemed appropriate. |
| cves: |
| - CVE-2023-27483 |
| ghsas: |
| - GHSA-vfvj-3m3g-m532 |
| credits: |
| - Disclosed by Ada Logics in a fuzzing audit sponsored by CNCF. |
| references: |
| - advisory: https://github.com/crossplane/crossplane-runtime/security/advisories/GHSA-vfvj-3m3g-m532 |
| - fix: https://github.com/crossplane/crossplane-runtime/commit/53508a9f4374604db140dd8ab2fa52276441e738 |