URL-backed media fetch handling allocated the entire response payload in memory (arrayBuffer) before enforcing maxBytes, allowing oversized responses to cause memory exhaustion.
openclaw (npm): < 2026.2.14clawdbot (npm): <= 2026.1.24-3openclaw (npm): 2026.2.14openclaw/openclaw main: 00a08908892d1743d1fc52e5cbd9499dd5da2fe0Affected component:
- src/media/input-files.ts (fetchWithGuard)
When content-length is missing or incorrect, reading the body via response.arrayBuffer() buffers the full payload before a size check can run.
maxBytes (chunked transfer / no content-length).fetchWithGuard URL fetch path.Example local server (large response):
node -e 'require("http").createServer((_,res)=>{res.writeHead(200,{"content-type":"application/octet-stream"});for(let i=0;i<1024;i++)res.write(Buffer.alloc(1024*64));res.end();}).listen(18888)'
Availability loss via memory pressure from attacker-controlled remote media responses.
Until a patched release is available, disable URL-backed media inputs (or restrict to a tight hostname allowlist) and use conservative maxBytes limits.
Reported by @vincentkoc.
{
"github_reviewed": true,
"github_reviewed_at": "2026-02-18T00:51:37Z",
"cwe_ids": [
"CWE-400"
],
"severity": "HIGH",
"nvd_published_at": null
}