CVE-2023-23931

Cipher.update_into can corrupt memory if passed an immutable python object as the outbuf

Verified by Precogs Threat Research
Last Updated: Feb 22, 2026
Base Score
9.8CRITICAL

Executive Summary

CVE-2023-23931 is a critical severity vulnerability affecting binary-analysis. It is classified as an undisclosed flaw. Ensure your systems and dependencies are patched immediately to mitigate exposure risks.

Precogs AI Insight

"Precogs Binary SAST/DAST engine performs deep structural analysis of compiled binaries, detecting memory corruption, control-flow hijacking, and privilege escalation vulnerabilities without requiring source code access."

Exploit Probability
High (84%)
Public POC
Available
Exploit Probability
High (84%)
Public POC
Available
Affected Assets
binary analysisNVD Database

What is this vulnerability?

CVE-2023-23931 is categorized as a critical Buffer Overflow flaw. Based on our vulnerability intelligence, this issue occurs when the application fails to securely handle untrusted data boundaries.

Previously, Cipher.update_into would accept Python objects which implement the buffer protocol, but provide only immutable buffers:


This architectural defect enables adversaries to bypass intended security controls, directly manipulating the application's execution state or data layer. Immediate strategic intervention is required.

## Risk Assessment

| Metric | Value |
|---|---|
| **CVSS Base Score** | 9.8 (CRITICAL) |
| **Vector String** | `N/A` |
| **Published** | February 7, 2023 |
| **Last Modified** | February 22, 2026 |
| **Related CWEs** | N/A |

## Impact on Systems

✅ **Remote Code Execution:** Attackers can overwrite the instruction pointer (EIP/RIP) to redirect execution to malicious shellcode.

✅ **Memory Corruption:** Overwriting adjacent memory regions can corrupt critical application state, leading to unpredictable privilege escalation.

✅ **Denial of Service:** Triggering segmentation faults and kernel panics results in immediate disruption of critical systems.

## How to fix this issue?
Implement the following strategic mitigations immediately to eliminate the attack surface.

**1. Memory-Safe Languages**
Where possible, migrate critical parsing logic to memory-safe languages like Rust or Go.

**2. Safe Standard Libraries**
Replace unbounded C functions (strcpy, sprintf) with boundary-checking equivalents (strncpy, snprintf).

**3. Compiler Defenses**
Ensure software is compiled with modern defensive flags: ASLR, DEP/NX, Stack Canaries (SSP), and Position Independent Executables (PIE).

## Vulnerability Signature

```javascript
// Vulnerable C Function
void parse_network_packet(char *untrusted_data) \{
    char local_buffer[128];
    // VULNERABLE: strcpy does not verify the length of the source data
    strcpy(local_buffer, untrusted_data);
    printf("Packet Processed.");
\}

// EXPLOIT PAYLOAD: 128 bytes of padding + [Overwrite EIP Address]

References and Sources