{"description":"Trending threats, MITRE ATT\u0026CK coverage, and detection metadata. Fed continuously.","favicon":"https://feed.craftedsignal.io/favicon-32x32.png","feed_url":"https://feed.craftedsignal.io/vendors/predis/feed.json","home_page_url":"https://feed.craftedsignal.io/","icon":"https://feed.craftedsignal.io/apple-touch-icon.png","items":[{"_cs_actors":[],"_cs_cpes":["cpe:2.3:a:predis:predis:3.0.0:rc1:*:*:*:*:*:*","cpe:2.3:a:predis:predis:3.2.0:*:*:*:*:*:*:*"],"_cs_cves":[{"cvss":9.8,"id":"CVE-2026-84372"}],"_cs_exploited":false,"_cs_has_poc":false,"_cs_poc_references":[],"_cs_products":["Predis (3.0.0-RC1 to 3.2.0)"],"_cs_severities":["critical"],"_cs_tags":["redis","injection","php","predis"],"_cs_type":"advisory","_cs_vendors":["Predis"],"content_html":"\u003cp\u003ePredis versions 3.0.0-RC1 through 3.2.0 contain an improper CRLF neutralization vulnerability in the \u003ccode\u003eAbstractAggregateConnection::write()\u003c/code\u003e method. When executing pipeline operations on aggregate connections (cluster or replication), the library re-parses the serialized pipeline buffer using \u003ccode\u003eexplode(\u0026quot;\\r\\n\u0026quot;)\u003c/code\u003e instead of respecting RESP length prefixes. An attacker who can influence values or keys passed into pipelined commands can inject arbitrary Redis commands.\u003c/p\u003e\n\u003cp\u003eOn cluster configurations, this results in remote command injection, allowing attackers to execute commands like \u003ccode\u003eFLUSHDB\u003c/code\u003e, \u003ccode\u003eDEL\u003c/code\u003e, or \u003ccode\u003eSET\u003c/code\u003e on specific shards, potentially leading to cache poisoning, data theft, or service outages. On replication configurations, the same CRLF injection causes the \u003ccode\u003edeserializeCommand()\u003c/code\u003e method to throw an uncaught \u003ccode\u003eUnexpectedValueException\u003c/code\u003e, resulting in a repeatable, unauthenticated denial-of-service condition. This vulnerability was introduced in v3.0.0-RC1 and fixed in version 3.3.0.\u003c/p\u003e\n\u003ch2 id=\"attack-chain\"\u003eAttack Chain\u003c/h2\u003e\n\u003col\u003e\n\u003cli\u003eThe application accepts user-influenced input, such as a URL slug, used as a key for Redis cache operations.\u003c/li\u003e\n\u003cli\u003eThe application initiates a \u003ccode\u003epipeline()\u003c/code\u003e request containing the attacker-influenced key to a Redis cluster.\u003c/li\u003e\n\u003cli\u003eThe attacker crafts a request containing a smuggled command payload, such as \u003ccode\u003ePAD\\r\\n*1\\r\\n$7\\r\\nFLUSHDB\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eThe Predis library's vulnerable \u003ccode\u003eAbstractAggregateConnection\u003c/code\u003e logic splits the buffer based on \u003ccode\u003e\\r\\n\u003c/code\u003e characters, improperly identifying the smuggled payload as a new command.\u003c/li\u003e\n\u003cli\u003eThe library rebuilds the smuggled command and routes it to a specific Redis node based on the hardcoded \u003ccode\u003e'key'\u003c/code\u003e slot strategy.\u003c/li\u003e\n\u003cli\u003eThe Redis cluster node parses the smuggled command (e.g., \u003ccode\u003eFLUSHDB\u003c/code\u003e) as a legitimate request from the application.\u003c/li\u003e\n\u003cli\u003eThe target Redis shard executes the smuggled command, resulting in cache clearing, data modification, or unauthorized access.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch2 id=\"impact\"\u003eImpact\u003c/h2\u003e\n\u003cp\u003eSuccessful exploitation allows for unauthenticated remote command injection in cluster environments, leading to shard-wide data destruction via \u003ccode\u003eFLUSHDB\u003c/code\u003e, targeted \u003ccode\u003eDEL\u003c/code\u003e operations, or cache poisoning. In replication environments, the vulnerability acts as a reliable vector for denial-of-service, crashing request-handling threads and impacting application availability. This affects any application utilizing Predis v3.0.0-RC1 through 3.2.0 with aggregate connection types.\u003c/p\u003e\n\u003ch2 id=\"recommendation\"\u003eRecommendation\u003c/h2\u003e\n\u003col\u003e\n\u003cli\u003eImmediately upgrade to \u003cstrong\u003epredis/predis 3.3.0 or later\u003c/strong\u003e to resolve the CRLF neutralization flaw in the pipeline handler.\u003c/li\u003e\n\u003cli\u003eIf upgrading is not immediately possible, audit application code to ensure that no attacker-influenced data (values or keys) is used within \u003ccode\u003epipeline()\u003c/code\u003e calls on aggregate connections.\u003c/li\u003e\n\u003cli\u003eDeploy WAF or application-level input validation to sanitize input keys and values for \u003ccode\u003e\\r\\n\u003c/code\u003e sequences before they are processed by the Predis client library.\u003c/li\u003e\n\u003cli\u003eMonitor application logs for \u003ccode\u003eUnexpectedValueException\u003c/code\u003e errors in production environments, which may indicate attempted exploitation or active DoS attacks against replication-based setups.\u003c/li\u003e\n\u003c/ol\u003e\n","date_modified":"2026-09-08T21:48:57Z","date_published":"2026-09-08T21:48:57Z","id":"https://feed.craftedsignal.io/briefs/2026-09-predis-crlf-smuggling/","summary":"Predis versions 3.0.0-RC1 through 3.2.0 are vulnerable to CRLF smuggling in pipeline operations on aggregate connections, enabling remote command injection on cluster configurations or denial-of-service on replication setups.","title":"Remote Command Injection and DoS in Predis via CRLF Smuggling","url":"https://feed.craftedsignal.io/briefs/2026-09-predis-crlf-smuggling/"}],"language":"en","title":"CraftedSignal Threat Feed - Predis","version":"https://jsonfeed.org/version/1.1"}