Skip to content

Commit 486915a

Browse files
committed
Raise hackney 1.x floor to 1.24 with security rationale
hackney 1.24.0 is the least-vulnerable 1.x release (SSRF fixed in 1.21.0, pool leak in 1.24.0), but four advisories affecting everything before 4.0.1 (CVE-2026-47071 high; CVE-2026-47075/47076 medium; CVE-2026-47069 low) were never patched on the 1.x line. Document that in the changelog and the StripityStripeHackney moduledoc; prefer 4.x when the dep tree allows.
1 parent 4213332 commit 486915a

5 files changed

Lines changed: 27 additions & 5 deletions

File tree

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ jobs:
8282
otp-version: '27.3.4.14'
8383
elixir-version: '1.20.2'
8484

85-
# The main suite can never exercise the hackney ~> 1.17 branch because
85+
# The main suite can never exercise the hackney ~> 1.24 branch because
8686
# the test-only stripity_stripe dep forces hackney 4.x resolution. This
8787
# standalone project pins hackney 1.x and smoke-tests the adapter.
8888
- name: Install dependencies

CHANGELOG.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
99

1010
## [1.2.2] - 2026-07-08
1111

12+
### Security
13+
14+
- Hackney floor raised from `~> 1.17` to `~> 1.24` (constraint is now
15+
`~> 1.24 or ~> 4.0`). hackney 1.24.0 is the least-vulnerable 1.x release — it includes
16+
the SSRF fix (1.21.0) and the connection-pool fix (1.24.0) — but four advisories
17+
affecting every release before 4.0.1 (CVE-2026-47071 high; CVE-2026-47075 and
18+
CVE-2026-47076 medium; CVE-2026-47069 low) were never patched on the 1.x line. The 1.x
19+
branch exists only so PaperTiger can coexist with dependency trees pinned to hackney 1.x
20+
by other packages; prefer hackney 4.x whenever your tree allows it.
21+
1222
### Fixed
1323

1424
- Corrected the 1.2.1 release notes: the `PaperTiger.StripityStripeHackney` adapter does

integration/hackney_1x_smoke/mix.exs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,13 @@ defmodule Hackney1xSmoke.MixProject do
1515
[extra_applications: [:logger]]
1616
end
1717

18-
# Pinning hackney to the 1.x line forces resolution down the `~> 1.17`
18+
# Pinning hackney to the 1.x line forces resolution down the `~> 1.24`
1919
# branch of paper_tiger's constraint — the branch the main repo can never
2020
# exercise because its test-only stripity_stripe dep requires hackney 4.x.
2121
defp deps do
2222
[
2323
{:paper_tiger, path: "../.."},
24-
{:hackney, "~> 1.17"}
24+
{:hackney, "~> 1.24"}
2525
]
2626
end
2727
end

lib/paper_tiger/stripity_stripe_hackney.ex

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,15 @@ defmodule PaperTiger.StripityStripeHackney do
4848
# LiveView's Stripe calls use the same sandbox!
4949
end
5050
end
51+
52+
## Security Note
53+
54+
This adapter is a thin passthrough over `:hackney.request/5` and works on both the
55+
hackney 1.x and 4.x lines. PaperTiger accepts `~> 1.24 or ~> 4.0` so it can coexist
56+
with dependency trees pinned to hackney 1.x by other packages, but be aware that four
57+
security advisories affecting every hackney release before 4.0.1 (including
58+
CVE-2026-47071, high severity) were never patched on the 1.x line. Prefer hackney 4.x
59+
whenever your dependency tree allows it.
5160
"""
5261

5362
@compile {:no_warn_undefined, :hackney}

mix.exs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,11 @@ defmodule PaperTiger.MixProject do
7272
{:jason, "~> 1.4"},
7373

7474
# Optional: hackney for stripity_stripe sandbox integration
75-
# Users of PaperTiger.StripityStripeHackney must have hackney available
76-
{:hackney, "~> 1.17 or ~> 4.0", optional: true},
75+
# Users of PaperTiger.StripityStripeHackney must have hackney available.
76+
# Floor is 1.24: the least-vulnerable 1.x release (SSRF fixed in 1.21.0,
77+
# pool leak in 1.24.0). Four advisories affecting all of 1.x were only
78+
# ever fixed in 4.0.1 — prefer hackney 4.x when your dep tree allows it.
79+
{:hackney, "~> 1.24 or ~> 4.0", optional: true},
7780

7881
# Testing/dev
7982
{:bypass, "~> 2.1", only: :test},

0 commit comments

Comments
 (0)