{"id":"CVE-2024-54151","aliases":["GHSA-849r-qrwj-8rv4"],"url":"https://o3.security/vulnerability/CVE-2024-54151","summary":"Directus allows unauthenticated access to WebSocket events and operations","details":"### Summary\nWhen setting `WEBSOCKETS_GRAPHQL_AUTH` or `WEBSOCKETS_REST_AUTH` to \"public\", an unauthenticated user is able to do any of the supported operations (CRUD, subscriptions) with full admin privileges.\n\n### Details\nAccountability for unauthenticated WebSocket requests is set to null, which used to be \"public permissions\" until the Permissions Policy update which now defaults that to system/admin level access. So instead of null we need to make use of `createDefaultAccountability()` to ensure public permissions are used for unauthenticated users.\n\n### PoC\n1. Start directus with\n```bash\nWEBSOCKETS_ENABLED=true\nWEBSOCKETS_GRAPHQL_AUTH=public\nWEBSOCKETS_REST_AUTH=public\n```\n\n2. Subscribe using GQL or REST or do any CRUD operation on a user created collection (system tables are not reachable with crud)\n```gql\nsubscription {\n    directus_users_mutated {\n        key\n        event\n        data {\n            id\n            email\n            first_name\n            last_name\n            password\n        }\n    }\n}\n```\nor\n```json\n{\n   \"type\": \"items\",\n   \"action\": \"read\",\n   \"collection\": \"your_collection_name\"\n}\n```\n3a. Open up the data studio as any user. Observe how the subscriber gets notified on each page navigation (because the users `last_page` gets updated, the `password` fields is properly redacted here)\n\n3b. Observe receiving all available items from the `your_collection_name` collection.\n\n### Impact\n\nThis impacts any Directus instance that has either `WEBSOCKETS_GRAPHQL_AUTH` or `WEBSOCKETS_REST_AUTH` set to `public` allowing unauthenticated users to subscribe for changes on any collection or do REST CRUD operations on user defined collections ignoring permissions.\n\n","published":"2024-12-09T20:57:28.365Z","modified":"2026-08-12T03:51:37.459075956Z","cvss":{"score":7.5,"severity":"HIGH","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N"},"epss":{"score":0.00597,"percentile":0.47008,"asOf":"2026-09-17"},"cisaKev":null,"exploitsKnown":0,"affectedPackages":[{"ecosystem":"npm","name":"directus","fixedVersion":"11.3.0"},{"ecosystem":"npm","name":"@directus/api","fixedVersion":"23.2.0"}],"fix":{"url":"https://github.com/directus/directus/commit/ce0397d16cf767b5293cd57f626c5349b5732a21","label":"directus/directus@ce0397d"},"references":[{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2024/54xxx/CVE-2024-54151.json"},{"type":"ADVISORY","url":"https://github.com/directus/directus/security/advisories/GHSA-849r-qrwj-8rv4"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2024-54151"},{"type":"FIX","url":"https://github.com/directus/directus/commit/ce0397d16cf767b5293cd57f626c5349b5732a21"},{"type":"PACKAGE","url":"https://github.com/directus/directus"}],"provenance":{"sources":["OSV.dev","FIRST.org (EPSS)"],"lastVerified":"2026-08-12T03:51:37.459075956Z"}}