Poodle Attack in Django with Dynamodb
Poodle Attack in Django with Dynamodb — how this specific combination creates or exposes the vulnerability
The Poodle attack (CVE-2014-3566) exploits weak legacy SSLv3 cipher suites to decrypt secure HTTP cookies via the CBC padding oracle. In a Django application using Amazon DynamoDB as the session store, the risk arises when session data is serialized and persisted to DynamoDB and later retrieved over an SSLv3-terminated connection (e.g., a legacy load balancer or misconfigured endpoint). If an attacker can inject or observe ciphertext and make requests that cause errors revealing padding validity, they can iteratively decrypt session cookies. DynamoDB itself does not introduce the weakness; the exposure comes from serving API or web traffic over SSLv3 and handling sensitive session identifiers without additional integrity protections.
In this setup, Django’s session framework may store session keys and data in a DynamoDB table. If the transport between Django and DynamoDB (or between client and Django) uses SSLv3, an attacker positioned on the network can perform adaptive chosen-ciphertext attacks. They manipulate the encrypted session cookie, submit crafted requests, and observe whether padding errors differ, gradually revealing plaintext. DynamoDB usage becomes relevant because session identifiers and metadata stored in the database can be linked to decrypted session content once the cookie is recovered. The attack does not target DynamoDB’s storage encryption at rest but targets the in-transit confidentiality and integrity of session cookies that ultimately reference data in DynamoDB.
An example scenario: a Django view relies on default cookie-based sessions, and the application is fronted by an SSLv3-enabled endpoint. An attacker intercepts the HTTPS traffic and uses a tool to force SSLv3 negotiation. By sending modified ciphertexts and analyzing error responses (e.g., padding errors vs. bad record mac), the attacker decrypts the session ID. Since the session data is stored in DynamoDB, the attacker can then assume the privileges encoded in that session. This illustrates how an outdated protocol choice, combined with session handling that ties authorization to identifiers stored in DynamoDB, creates a concrete path for compromise.