{ "dataType": "CVE_RECORD", "dataVersion": "5.2", "cveMetadata": { "cveId": "CVE-2026-82439", "assignerOrgId": "f0158376-9dc2-43b6-827c-5f631a4d8d09", "state": "PUBLISHED", "assignerShortName": "apache", "dateReserved": "2026-08-29T10:40:16.365Z", "datePublished": "2026-09-14T14:00:09.318Z", "dateUpdated": "2026-09-14T19:51:25.795Z" }, "containers": { "cna": { "providerMetadata": { "orgId": "f0158376-9dc2-43b6-827c-5f631a4d8d09", "shortName": "apache", "dateUpdated": "2026-09-14T14:00:09.318Z" }, "title": "Apache Storm DRPC: Unauthenticated Unbounded Memory Growth in DRPC", "problemTypes": [ { "descriptions": [ { "description": "CWE-770 Allocation of resources without limits or throttling", "lang": "en", "cweId": "CWE-770", "type": "CWE" } ] } ], "source": { "discovery": "UNKNOWN" }, "affected": [ { "vendor": "Apache Software Foundation", "product": "Apache Storm DRPC", "collectionURL": "https://repo.maven.apache.org/maven2", "packageName": "org.apache.storm:storm-server", "versions": [ { "status": "affected", "version": "3.0.0", "lessThan": "3.1.0", "versionType": "semver" } ], "defaultStatus": "unaffected" } ], "descriptions": [ { "value": "Description\n\nThe DRPC server kept a map from function name to request queue and created an entry the first time a\nfunction name was seen. No code path ever removed an entry: request cleanup removed the request from its\nqueue, and the shutdown path drained queues, but the queue object and its map entry remained for the life of\nthe process.\n\nFunction names come from the client and are not constrained to functions any topology has registered, so the\nnumber of retained entries is bounded only by the number of distinct names an attacker chooses to send, and\neach retained entry holds the name itself. `drpc.authorizer` is unset by default, so no credentials are\nrequired to reach the endpoint.\n\nThe retained state is permanent rather than a transient load spike, so the effect accumulates until the DRPC\nserver exhausts its heap.\n\nMitigation\n\nUpgrade to 3.1.0, where a function's queue is removed once nothing is waiting in it.\n\nUsers who cannot upgrade immediately should configure `drpc.authorizer` so that only trusted principals can\nreach the DRPC endpoints, and should ensure the DRPC ports are not reachable from untrusted networks.\n\nCredit\n\nThe ASF -- found using Claude agents to study the security of open-source projects, validated and reported by Apache Storm.", "lang": "en", "supportingMedia": [ { "type": "text/html", "base64": false, "value": "Description

The DRPC server kept a map from function name to request queue and created an entry the first time a
function name was seen. No code path ever removed an entry: request cleanup removed the request from its
queue, and the shutdown path drained queues, but the queue object and its map entry remained for the life of
the process.

Function names come from the client and are not constrained to functions any topology has registered, so the
number of retained entries is bounded only by the number of distinct names an attacker chooses to send, and
each retained entry holds the name itself. `drpc.authorizer` is unset by default, so no credentials are
required to reach the endpoint.

The retained state is permanent rather than a transient load spike, so the effect accumulates until the DRPC
server exhausts its heap.

Mitigation

Upgrade to 3.1.0, where a function's queue is removed once nothing is waiting in it.

Users who cannot upgrade immediately should configure `drpc.authorizer` so that only trusted principals can
reach the DRPC endpoints, and should ensure the DRPC ports are not reachable from untrusted networks.

Credit

The ASF -- found using Claude agents to study the security of open-source projects, validated and reported by Apache Storm.
" } ] } ], "references": [ { "url": "https://lists.apache.org/thread/7sgzvv5lzz93jn6vy74qfk105bhmkrzs", "tags": [ "vendor-advisory" ] } ], "metrics": [ { "other": { "type": "Textual description of severity", "content": { "text": "important" } }, "scenarios": [ { "lang": "en", "value": "GENERAL" } ] } ], "credits": [ { "lang": "en", "value": "The ASF using Claude Agents", "type": "finder" } ], "x_generator": { "engine": "Vulnogram 1.0.3" } }, "adp": [ { "title": "CVE Program Container", "references": [ { "url": "http://www.openwall.com/lists/oss-security/2026/09/13/18" } ], "providerMetadata": { "orgId": "af854a3a-2127-422b-91ae-364da2661108", "shortName": "CVE", "dateUpdated": "2026-09-14T14:13:45.333Z" } }, { "metrics": [ { "cvssV3_1": { "scope": "UNCHANGED", "version": "3.1", "baseScore": 9.8, "attackVector": "NETWORK", "baseSeverity": "CRITICAL", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H", "integrityImpact": "HIGH", "userInteraction": "NONE", "attackComplexity": "LOW", "availabilityImpact": "HIGH", "privilegesRequired": "NONE", "confidentialityImpact": "HIGH" } }, { "other": { "type": "ssvc", "content": { "timestamp": "2026-09-14T19:51:03.619338Z", "id": "CVE-2026-82439", "options": [ { "Exploitation": "none" }, { "Automatable": "yes" }, { "Technical Impact": "total" } ], "role": "CISA Coordinator", "version": "2.0.3" } } } ], "title": "CISA ADP Vulnrichment", "providerMetadata": { "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "shortName": "CISA-ADP", "dateUpdated": "2026-09-14T19:51:25.795Z" } } ] } }