{"id":"CVE-2026-65059","kind":"vulnerability","aliases":["CVE-2026-65059"],"related":[],"title":"Furl: unbounded HTTP response decompression lets a server exhaust client memory","description":"Furl versions through 3.15 for Perl allow memory exhaustion via unbounded decompression of HTTP responses.\n\nFurl inflates a response body sent with a gzip, x-gzip or deflate Content-Encoding and appends the output to the response string with no size limit. It does this whether or not the request asked for compression, and no option caps the decompressed size. Responses read with write_file or write_code are streamed rather than held in memory.\n\nA malicious server, or an attacker on a plain HTTP connection, can send a small compressed response that expands to exhaust the client's memory and end the process.","summary":"Furl, a Perl HTTP client, inflates gzip and deflate response bodies with no size limit, so the output is held entirely in memory. A malicious server or an on-path attacker on plain HTTP can send a small compressed response that expands enough to exhaust memory and crash the process.","severity":"medium","cvss":null,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["furl","http-client","package","perl"],"not_affected_if":["streaming-to-file","trusted-endpoints-only"],"how_to_check":"- `cpanm --info Furl` or `perl -MFurl -e 'print $Furl::VERSION'` to read the installed Furl version\n- Search code for `Furl` usage that fetches responses without `write_file` or `write_code`, since those stream the body\n- Check whether Furl fetches from untrusted or plain HTTP hosts","fix":"- Furl versions through `3.15` are affected; the sources do not name a fixed version","status":"open","published_at":"2026-11-02T17:17:44+00:00","first_seen_at":"2026-11-02T17:24:12+00:00","triaged_at":"2026-11-02T17:26:19+00:00","updated_at":"2026-11-02T17:26:19+00:00","category":"package","confidence":0.6,"triage":{"at":"2026-11-02T17:26:19Z","model":"claude-haiku-5-5","output":{"fix":"- Furl versions through `3.15` are affected; the sources do not name a fixed version","reach":"network","title":"Furl: unbounded HTTP response decompression lets a server exhaust client memory","impact":"medium","summary":"Furl, a Perl HTTP client, inflates gzip and deflate response bodies with no size limit, so the output is held entirely in memory. A malicious server or an on-path attacker on plain HTTP can send a small compressed response that expands enough to exhaust memory and crash the process.","audience":"developers","category":"package","nicknames":[],"who_cares":["perl","furl","http-client"],"confidence":0.6,"fix_status":"unknown","needs_auth":"no","worst_case":"Attacker crashes the client process by exhausting its memory","analyst_note":"Confirm the fixed Furl version and whether a patched release exists; NVD page is the only source given.","how_to_check":"- `cpanm --info Furl` or `perl -MFurl -e 'print $Furl::VERSION'` to read the installed Furl version\n- Search code for `Furl` usage that fetches responses without `write_file` or `write_code`, since those stream the body\n- Check whether Furl fetches from untrusted or plain HTTP hosts","plain_action":"","needs_analyst":true,"not_affected_if":["streaming-to-file","trusted-endpoints-only"],"who_is_affected":"Any Perl application that uses Furl to fetch responses from servers it does not fully trust, or over plain HTTP, and reads the body into memory rather than streaming it with write_file or write_code. Applications that only talk to trusted HTTPS endpoints, or that stream responses to disk, are less exposed. The sources do not state a fixed release.","user_interaction":"no","needs_special_setup":"no","severity_if_unknown":"medium"},"cost_usd":0.000735,"input_tokens":4208,"output_tokens":628,"severity_before":"unknown"},"analyst_status":null,"analyst_note":null,"search":"'-2026':13A,16A '-65059':14A,17A '3.15':78C 'allow':81C 'append':108C 'ask':127C 'attack':55B,157C 'bodi':34B,94C 'cap':133C 'client':10A,21B,28B,174C 'code':144C 'compress':63B,129C,167C 'connect':162C 'content':105C 'content-encod':104C 'crash':72B 'cve':12A,15A 'decompress':5A,86C,135C 'deflat':32B,103C 'encod':106C 'end':178C 'enough':67B 'entir':44B 'exhaust':9A,69B,83C,172C 'expand':66B,170C 'file':141C 'furl':1A,18B,24B,75C,90C 'gzip':30B,98C,101C 'held':43B,149C 'http':3A,20B,27B,58B,88C,161C 'http-client':19B 'inflat':29B,91C 'let':6A 'limit':38B,118C 'malici':48B,153C 'memori':11A,46B,70B,82C,151C,176C 'on-path':52B 'option':132C 'output':41B,110C 'packag':22B 'path':54B 'perl':23B,26B,80C 'plain':57B,160C 'process':74B,180C 'rather':147C 'read':138C 'request':126C 'respons':4A,33B,64B,89C,93C,113C,137C,168C 'send':60B,164C 'sent':95C 'server':8A,49B,154C 'size':37B,117C,136C 'small':62B,166C 'stream':146C 'string':114C 'unbound':2A,85C 'version':76C 'via':84C 'whether':122C 'write':140C,143C 'x':100C 'x-gzip':99C","nicknames":[],"mitigations":[],"who_affected":"Any Perl application that uses Furl to fetch responses from servers it does not fully trust, or over plain HTTP, and reads the body into memory rather than streaming it with write_file or write_code. Applications that only talk to trusted HTTPS endpoints, or that stream responses to disk, are less exposed. The sources do not state a fixed release.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"unknown","audience":"developers","plain_action":null,"pkeys":[],"ptokens":[],"labels":["furl","httpclient","medium","package","perl"],"first_public_at":"2026-11-02T17:17:44+00:00","kev":null,"cvss_vector":null,"cvss_by":null,"poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-65059","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-65059","severity":null,"published_at":"2026-11-02T17:17:44+00:00","modified_at":"2026-11-02T17:17:44+00:00","first_seen_at":"2026-11-02T17:24:12+00:00","fetched_at":"2026-11-02T17:24:12+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}