{"id":"GHSA-rxhg-vcww-2mpw","revision":"47d46da3af684bd8a94a22eae5c67623","records":[{"revision":"47d46da3af684bd8a94a22eae5c67623","observedAt":"2026-10-24T13:19:41.952+00:00","statement":{"source":"osv","id":"GHSA-rxhg-vcww-2mpw","aliases":["CVE-2026-101046","GO-2026-6269"],"title":"Fleet: ORDER BY column injection on activity list endpoints","description":"### Summary\n\nAn authenticated user with read access to Activity could influence the `ORDER BY` clause of the activity list endpoints by supplying an arbitrary sort column:\n\n- `GET /api/v1/fleet/activities` (`ListActivities`)\n- `GET /api/v1/fleet/hosts/{id}/activities` (`ListHostPastActivities`)\n\nThis originated from the deprecated cursor-pagination helper (`appendListOptionsWithCursorToSQL`), which interpolated the caller-supplied order key into SQL without an allowlist. The original report's `node_key` extraction scenario (`/api/v1/fleet/labels/{id}/hosts`) was remediated separately in #44385; these two activity endpoints were the residual call sites, neither of which joins the `hosts` table, so `node_key` was never reachable through them.\n\n### Impact\n\nRead-only. Because the order key was interpolated, an authenticated user with Activity read could sort by columns not otherwise returned in these responses. The exposure was bounded to columns on `activity_past` (e.g. `details` on `/api/v1/fleet/activities`, which is not in that endpoint's SELECT; host-only activities are already excluded by `WHERE host_only = false`). There is no privilege escalation, write access, or reachability of `node_key` or other host-join columns through these endpoints.\n\n### Remediation\n\nThe deprecated helper was removed from the codebase. Both endpoints now pass the caller-supplied sort column through `SanitizeColumn`, which strips all characters except `[\\w-.]` and backtick-quotes each identifier segment. This closes the injection vector: separators, whitespace, parentheses, and quotes cannot survive sanitization, so an expression-based `ORDER BY` oracle is not constructable.\n\n### Affected versions\n\n`< fleet-v4.89.0`. Fixed in `fleet-v4.89.0`.\n\n### Credit\n\nThanks to @axel-corsiez for the report.","state":0,"publishedAt":"2026-08-20T18:44:36+00:00","modifiedAt":"2026-09-28T03:55:39.1193891+00:00","affected":[{"ecosystem":"Go","name":"github.com/fleetdm/fleet/v4","ranges":[{"type":"SEMVER","events":[{"kind":"introduced","version":"0"},{"kind":"fixed","version":"4.89.0"}]}],"versions":[],"rawVersionEvidence":null}],"metrics":[{"system":"CVSS_V3","vector":"CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:N/A:N","score":null,"severity":null},{"system":"Publisher rating","vector":null,"score":null,"severity":"LOW"}],"references":["https://github.com/fleetdm/fleet/security/advisories/GHSA-rxhg-vcww-2mpw","https://github.com/fleetdm/fleet","https://github.com/fleetdm/fleet/releases/tag/fleet-v4.89.0"],"sourceUrl":"https://github.com/advisories/GHSA-rxhg-vcww-2mpw","license":"GitHub Advisory Database · CC-BY-4.0","key":"osv:GHSA-rxhg-vcww-2mpw","identifiers":["GHSA-rxhg-vcww-2mpw","CVE-2026-101046","GO-2026-6269"]},"retained":false,"historicalAffected":[]}],"coverage":[]}