build(deps): update dependency h11 to v0.16.0 [security]
Metadata
Current evaluation
Merged automated dependency update upgrading h11 from v0.14.0 to v0.16.0 to resolve CVE-2025-43859, a request smuggling vulnerability in chunked-coding parsing. Approved by two reviewers and passed all CI checks.
Suggested action: —
No scores available.
Issue body
This PR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [h11](https://redirect.github.com/python-hyper/h11) | `==0.14.0` -> `==0.16.0` | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) |
---
> [!WARNING]
> Some dependencies could not be looked up. Check the Dependency Dashboard for more information.
### GitHub Vulnerability Alerts
#### [CVE-2025-43859](https://redirect.github.com/python-hyper/h11/security/advisories/GHSA-vqfr-h8mv-ghfj)
### Impact
A leniency in h11's parsing of line terminators in chunked-coding message bodies can lead to request smuggling vulnerabilities under certain conditions.
### Details
HTTP/1.1 Chunked-Encoding bodies are formatted as a sequence of "chunks", each of which consists of:
- chunk length
- `\r\n`
- `length` bytes of content
- `\r\n`
In versions of h11 up to 0.14.0, h11 instead parsed them as:
- chunk length
- `\r\n`
- `length` bytes of content
- any two bytes
i.e. it did not validate that the trailing `\r\n` bytes were correct, and if you put 2 bytes of garbage there it would be accepted, instead of correctly rejecting the body as malformed.
By itself this is harmless. However, suppose you have a proxy or reverse-proxy that tries to analyze HTTP requests, and your proxy has a _different_ bug in parsing Chunked-Encoding, acting as if the format is:
- chunk length
- `\r\n`
- `length` bytes of content
- more bytes of content, as many as it takes until you find a `\r\n`
For example, [pound](https://redirect.github.com/graygnuorg/pound/pull/43) had this bug -- it can happen if an implementer uses a generic "read until end of line" helper to consumes the trailing `\r\n`.
In this case, h11 and your proxy may both accept the same stream of bytes, but interpret them differently. For example, consider the following HTTP request(s) (assume all line breaks are `\r\n`):
```
GET /one HTTP/1.1
Host: localhost
Transfer-Encoding: chunked
5
AAAAAXX2
45
0
GET /two HTTP/1.1
Host: localhost
Transfer-Encoding: chunked
0
```
Here h11 will interpret it as two requests, one with body `AAAAA45` and one with an empty body, while our hypothetical buggy proxy will interpret it as a single request, with body `AAAAXX20\r\n\r\nGET /two ...`. And any time two HTTP processors both accept the same string of bytes but interpret them differently, you have the conditions for a "request smuggling" attack. For example, if `/two` is a dangerous endpoint and the job of the reverse proxy is to stop requests from getting there, then an attacker could use a bytestream like the above to circumvent this protection.
Even worse, if our buggy reverse proxy receives two requests from different users:
```
GET /one HTTP/1.1
Host: localhost
Transfer-Encoding: chunked
5
AAAAAXX999
0
```
```
GET /two HTTP/1.1
Host: localhost
Cookie: SESSION_KEY=abcdef...
```
...it will consider the first request to be complete and valid, and send both on to the h11-based web server over the same socket. The server will then see the two concatenated requests, and interpret them as _one_ request to `/one` whose body includes `/two`'s session key, potentially allowing one user to steal another's credentials.
### Patches
Fixed in h11 0.15.0.
### Workarounds
Since exploitation requires the combination of buggy h11 with a buggy (reverse) proxy, fixing either component is sufficient to mitigate this issue.
### Credits
Reported by Jeppe Bonde Weikop on 2025-01-09.
---
### Release Notes
<details>
<summary>python-hyper/h11 (h11)</summary>
### [`v0.16.0`](https://redirect.github.com/python-hyper/h11/compare/v0.15.0...v0.16.0)
[Compare Source](https://redirect.github.com/python-hyper/h11/compare/v0.15.0...v0.16.0)
### [`v0.15.0`](https://redirect.github.com/python-hyper/h11/compare/v0.14.0...v0.15.0)
[Compare Source](https://redirect.github.com/python-hyper/h11/compare/v0.14.0...v0.15.0)
</details>
---
### Configuration
📅 **Schedule**: Branch creation - "" in timezone Etc/UTC, Automerge - At any time (no schedule defined).
🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.
♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 **Ignore**: Close this PR and you won't be reminded about this update again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box
---
This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/canonical/craft-parts).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4yNTcuMyIsInVwZGF0ZWRJblZlciI6IjM5LjI1Ny4zIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=-->
Evaluation history
| Date | Model | Scores | Action | Summary |
|---|---|---|---|---|
| qwen/qwen3.6-35b-a3b | — | — | Merged automated dependency update upgrading h11 from v0.14.0 to v0.16.0 to resolve CVE-2025-43859, a request smuggling vulnerability in chunked-coding parsing. Approved by two reviewers and passed all CI checks. | |
| qwen3.6-35b-a3b-mtp-q6 | — | — | Merged a Renovate-driven update upgrading h11 from 0.14.0 to 0.16.0 to resolve CVE-2025-43859, a security vulnerability where lenient chunked-coding parsing could enable HTTP request smuggling attacks. |
Update history
No update history recorded yet.
Related issues
| Issue | Project | State | Summary | Similarity |
|---|---|---|---|---|
| #2268 build(deps): update dependency h11 to v0.16.0 [security] (main) | charmcraft | merged | Merged automated dependency update raising h11 from 0.14.0 to 0.16.0 to resolve CVE-2025-43859, a chunked encoding vulnerability enabling HTTP request smuggling. Approved by reviewers and merged to main. | |
| #1081 build(deps): update dependency h11 to v0.16.0 [security] (hotfix/2.4.3) | craft-parts | closed | Merged to update h11 from v0.14.0 to v0.16.0, addressing CVE-2025-43859 request smuggling vulnerability in chunked-encoding parsing. | |
| #1080 build(deps): update dependency h11 to v0.16.0 [security] (hotfix/2.4) | craft-parts | closed | Closed without merge. The security update for CVE-2025-43859 by upgrading h11 to v0.16.0 was abandoned after mixed CI results. | |
| #1078 build(deps): update dependency h11 to v0.16.0 [security] (main) - autoclosed | craft-parts | closed | Dependency update for h11 to v0.16.0 to fix CVE-2025-43859 was autoclosed, indicating it was superseded by a newer update or merged automatically. | |
| #2269 build(deps): update dependency h11 to v0.16.0 [security] (hotfix/3.3) | charmcraft | closed | The dependency update to h11 v0.16.0 was closed without merging. Multiple CI checks, including security scans and snap builds, failed, preventing the security patch from being applied. | |
| #2270 build(deps): update dependency h11 to v0.16.0 [security] (hotfix/3.4) - autoclosed | charmcraft | closed | Autoclosed and abandoned. The h11 security update to v0.16.0 addressing CVE-2025-43859 was not merged because httpcore also requires an update, necessitating a broader dependency refresh. | |
| #1079 build(deps): update dependency h11 to v0.16.0 [security] (hotfix/2.3) | craft-parts | closed | Abandoned without merging. The h11 v0.16.0 security update for CVE-2025-43859 was closed after 453 days due to inactivity and failing CI checks. It was superseded by a newer Renovate update, leaving the branch unpatched. | |
| #1516 build(deps): update dependency requests to v2.33.0 [security] (main) | craft-parts | merged | Merged automated dependency update upgrading requests from 2.32.5 to 2.33.0 to patch CVE-2026-25645. Approved by two reviewers, passed CI validation, and merged into main. | |
| #348 build(deps): update dependency requests to v2.33.0 [security] (main) | craft-store | merged | Merged automated dependency update upgrading requests from 2.32.4 to 2.33.0 to resolve CVE-2026-25645. Approved by reviewers, passed CI checks, and merged into main. | |
| #5065 build(deps): update dependency requests to v2.32.2 [security] (hotfix/7.5) | snapcraft | merged | Merged an automated security update upgrading the requests dependency from v2.28.1 to v2.32.2 to fix CVE-2024-35195. Approved by two reviewers, passed CI, and merged into the hotfix/7.5 branch. |