← Back to issue list

build(deps): update dependency h11 to v0.16.0 [security] (hotfix/2.4.3)

View original Github issue

Metadata

Project
craft-parts
Number
#1081
Type
pull request
State
closed
Author
renovate[bot]
Labels
—
Created
Updated
Closed

Current evaluation

Superseded by canonical/craft-parts#1083, which merged the same h11 0.16.0 security update in commit 0ef423df.

Resolution: closed superseded

Reason: The hotfix/2.4.3 PR was closed without merging after the equivalent update landed through canonical/craft-parts#1083. Commit 0ef423df upgraded h11 from 0.14.0 to 0.16.0 to address CVE-2025-43859.

Evaluated by: mr-cal-bot

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` | [![age](https://developer.mend.io/api/mc/badges/age/pypi/h11/0.16.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/h11/0.16.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/h11/0.14.0/0.16.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/h11/0.14.0/0.16.0?slim=true)](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:eyJjcmVhdGVkSW5WZXIiOiIzOS4yNTcuMyIsInVwZGF0ZWRJblZlciI6IjM5LjI1Ny4zIiwidGFyZ2V0QnJhbmNoIjoiaG90Zml4LzIuNC4zIiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyJdfQ==-->

Evaluation history

Date Model Scores Action Summary
stealth/space-bunny-alpha — closed superseded Superseded by canonical/craft-parts#1083, which merged the same h11 0.16.0 security update in commit 0ef423df.
stealth/space-bunny-alpha — closed superseded Superseded by canonical/craft-parts#1081, which updated h11 to v0.16.0 to address CVE-2025-43859; the replacement was ultimately merged as #1083.
qwen/qwen3.6-35b-a3b — — Merged to update h11 from v0.14.0 to v0.16.0, addressing CVE-2025-43859 request smuggling vulnerability in chunked-encoding parsing.
qwen3.6-35b-a3b-mtp-q6 — — Merged to hotfix/2.4.3 to upgrade h11 from 0.14.0 to 0.16.0, resolving CVE-2025-43859 request smuggling vulnerability in chunked encoding parsing.

Update history

No update history recorded yet.

Related work

Related issues

Issue Project State Summary Similarity
#1079 build(deps): update dependency h11 to v0.16.0 [security] (hotfix/2.3) craft-parts closed Closed unmerged; the h11 0.16.0 security update was superseded by canonical/craft-parts#1083 and merged in commit 0ef423df to address CVE-2025-43859.
97%
#1080 build(deps): update dependency h11 to v0.16.0 [security] (hotfix/2.4) craft-parts closed Closed unmerged; the equivalent h11 0.16.0 security update was carried forward by #1081 and merged through #1083 (commit 0ef423df).
88%
#2269 build(deps): update dependency h11 to v0.16.0 [security] (hotfix/3.3) charmcraft closed Closed unmerged after CI failures; the identical h11 0.16.0 security update merged to main via #2268 (35e8fbe0), superseding this hotfix/3.3 PR.
87%
#2270 build(deps): update dependency h11 to v0.16.0 [security] (hotfix/3.4) - autoclosed charmcraft closed Autoclosed unmerged; the hotfix h11 0.16.0 update was replaced by commit 0c9e5348, which updated both httpcore and h11.
84%
#1083 build(deps): update dependency h11 to v0.16.0 [security] craft-parts merged Merged PR #1083 in commit 0ef423df, updating h11 from 0.14.0 to 0.16.0 to remediate CVE-2025-43859 and HTTP request-smuggling risk.
84%
#2268 build(deps): update dependency h11 to v0.16.0 [security] (main) charmcraft merged Merged PR #2268 via commit 35e8fbe0, upgrading h11 from 0.14.0 to 0.16.0 to address CVE-2025-43859 and HTTP request-smuggling risk.
84%
#1078 build(deps): update dependency h11 to v0.16.0 [security] (main) - autoclosed craft-parts closed Renovate PR #1078 updating h11 0.14.0 -> 0.16.0 (CVE-2025-43859) was autoclosed; the identical change landed via merged PR #1083 in commit 0ef423df.
84%
#2267 build(deps-dev): bump h11 from 0.14.0 to 0.16.0 charmcraft closed Dependabot's h11 0.14.0→0.16.0 bump was closed unmerged as redundant; h11 v0.16.0 was already present. The equivalent security update merged via PR #2268 (commit 35e8fbe0).
83%
#1119 build(deps): update dependency requests to v2.32.4 [security] (hotfix/2.7) - autoclosed craft-parts closed Autoclosed unmerged; canonical/craft-parts#1121 replaced the requests update and landed as commit 53f7d360, using a version that passed OSV scanning.
75%
#1118 build(deps): update dependency requests to v2.32.4 [security] (hotfix/2.4) - autoclosed craft-parts closed Autoclosed unmerged after the requests 2.32.4 hotfix was replaced by merged PR canonical/craft-parts#1121 (53f7d360).
73%