[php-src] Issue #22003: Remote DoS via overflowed Content-Length

[email protected] (dapickle)
Newsgroups php.bugs
Message-ID <MusKO4qnUHFzuSfU1O5G6ny67rRKBiEpYtmqSJKNyj4@main.internal.php.net>
Issue: https://github.com/php/php-src/issues/22003
Author: dapickle

### Description

### Summary
An integer overflow vulnerability in PHP's built-in web server CLI SAPI allows remote attackers to trigger a DoS by sending a malicious HTTP request with an overflowed Content-Length header value. The vulnerability exists in the HTTP parser that processes Content-Length headers without proper overflow checks.

### Details
The vulnerability is located in `sapi/cli/php_http_parser.c`:

```c
case h_content_length:
  if (ch == ' ') break;
  if (ch < '0' || ch > '9') goto error;
  parser->content_length *= 10;  // <-- NO OVERFLOW CHECK
  parser->content_length += ch - '0';  // <-- NO OVERFLOW CHECK
  break;
```

The parser accumulates the Content-Length value digit by digit without checking for integer overflow. When an attacker sends a Content-Length header with a very large value (e.g., 50+ digits), the value wraps around due to integer overflow.


**Affected Component:** PHP CLI built-in web server (`php -S`)
**Affected Versions:** All versions with CLI server (PHP 5.4+)
**Attack Vector:** Network (remote)
**Authentication:** None required

### PoC
1. Start PHP built-in server:
   ```bash
   php -S localhost:8891 -t /
   ```

2. Manually with curl (limited by curl's header validation):
   ```bash
   curl -X POST -H "Content-Length: 999999999999999999999999999999" \
        -d "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" \
        http://localhost:8891/
   ```

**Expected Behavior:**
- Server may crash due to OOM crash or process abort due to oversized memory allocation
- Server may hang or become unresponsive

### Impact
This vulnerability affects any webs using PHP application running on the built-in CLI web server.
- Development environments
- Testing and staging servers
- Docker containers and microservices

**Who is impacted:**
- Developers using `php -S` for local development
- Applications deployed with PHP built-in server in production
- Any service exposing PHP CLI server to untrusted networks

**Potential Impact:**
- Denial of Service (crash or hang)


### PHP Version

```plain
**Affected Versions:** All versions with CLI server (PHP 5.4+)
```

### Operating System

_No response_
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.