Bump transitive proxy-addr to 2.0.8 (CVE-2026-90711)
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 2/5
- Thời gian dự kiến
- 1-3 giờ
- Mức phù hợp với người mới
- 72/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Đặc tả rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- express, nodejs, typescript
Hướng nghiên cứu
Bắt đầu từ package.json, nơi khối overrides của pnpm hiện có đã ghim serialize-javascript; thêm một mục cho proxy-addr vào đó, rồi chạy pnpm install để làm mới pnpm-lock.yaml. Chỉ xem các bộ đọc IP của request tại src/controllers/admin/post-settings-restore-controller.ts:21 và patch-settings-controller.ts:73 để tham khảo ngữ cảnh, vì bản vá không thay đổi chúng. Hoàn thành khi pnpm why proxy-addr phân giải về 2.0.8 và lệnh cài đặt frozen thành công.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Summary
[email protected] resolves into this tree via [email protected] — see pnpm-lock.yaml, [email protected] at the dependency edge under express. That version is affected by CVE-2026-90711 (GHSA-jqcg-44mw-7w3h, Aikido AIKIDO-2026-101201, scored critical), fixed in 2.0.8.
The defect
proxy-addr accepts an IPv4-mapped IPv6 trust subnet with an IPv4-sized prefix — ::ffff:10.0.0.0/8 instead of ::ffff:10.0.0.0/104 — and treats that as trusting every IPv4 address. The socket peer is then counted as hop 0, so any unauthenticated client can set X-Forwarded-For to an arbitrary address. Everything built on the resolved client IP — IP allow-lists, rate limiting, geolocation, audit logging — becomes spoofable.
Exposure here: low, but not zero
createWebApp()insrc/factories/web-app-factory.tscallsexpress()and never setstrust proxy, so Express keeps its default offalseandreq.ipis the socket peer. The relay's own client-IP logic does not go through Express at all: it usesgetRemoteAddress()/isTrustedProxy()insrc/utils/http.ts, which trust a forwarded header only against configured proxies — the hardening from #493.- But
request.ipis read directly insrc/controllers/admin/post-settings-restore-controller.ts:21andsrc/controllers/admin/patch-settings-controller.ts:73. In any deployment that setstrust proxyto a proxy subnet — the common pattern behind Cloudflare or nginx, and frequently written in IPv4-mapped IPv6 notation —proxy-addrbecomes load-bearing for those paths, and that is precisely the configuration this CVE turns into an authentication bypass.
Fix
[email protected] declares ~2.0.7 and [email protected] declares ^2.0.7; both already accept 2.0.8, so no framework change is needed. This repo already carries a pnpm overrides block (serialize-javascript), so it is one line:
"pnpm": { "overrides": { "proxy-addr": "^2.0.8" } }
then pnpm install to refresh the lockfile and pnpm why proxy-addr to confirm 2.0.8 resolves.
Not urgent for a default deployment, but it is a zero-risk bump that closes the class outright, and cheaper now than reasoning about each operator's proxy configuration later.
Advisory: https://intel.aikido.dev/cve/AIKIDO-2026-101201 · Upstream: https://github.com/jshttp/proxy-addr/security/advisories/GHSA-jqcg-44mw-7w3h
One pnpm note, from doing this on
cameri/akkadian-agentminutes after filing. At the[email protected]this repo pins, thepackage.jsonpnpm.overridesfield above works — the existingserialize-javascriptoverride proves it (declared>=7.0.3 <8, resolved 7.0.5 in the lockfile). But pnpm 11 no longer reads that field at all; it warnsThe "pnpm" field in package.json is no longer read by pnpm ... "pnpm.overrides"and ignores the setting. My first attempt there failed that way, and what caught it waspnpm installrefusing withERR_PNPM_LOCKFILE_CONFIG_MISMATCH— a frozen install compares the override config against the lockfile, so a silently-ignored override cannot reach a commit. When this repo moves to pnpm 11, the overrides block has to move topnpm-workspace.yaml(akkadian-agent got one that way, entry written in the samepkg@range: '>=version'style as its existing list).
- Ngôn ngữ chính
- TypeScript
- Star
- 829
- Fork
- 234
- Merge trung bình
- 2 ngày 10 giờ
- Pull request đã merge (30 ngày)
- 24
Chuẩn bị môi trường
- Có Dockerfile hoặc tệp Docker Compose
- Có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của cameri/nostream
-
enhancement
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 45/100
Maintainer thường phản hồi trong vòng 1 ngày
-
feat(nip77): advertise NIP-77 in NIP-11 and expose its settings in the admin consoleCó thể đã có người làm @Priyanshubhartistm đã nhận hôm nay. Đang mởenhancement
cameri/nostream#819 · 1 người được giao ·
Maintainer thường phản hồi trong vòng 1 ngày
-
feat(nip77): NEG-OPEN/NEG-MSG/NEG-CLOSE wire protocol for the PostgreSQL backendCó thể đã có người làm @Priyanshubhartistm đã nhận hôm nay. Đang mởenhancement
cameri/nostream#817 · 1 người được giao ·
Maintainer thường phản hồi trong vòng 1 ngày
-
[Admin Console] Ops visibility panels (mirror, workers, NIP-05, storage)Có thể đã có người làm @Ferryx349 đã nhận 1 ngày trước. Đang mởAdmin Console enhancement
cameri/nostream#816 · 1 người được giao ·
Maintainer thường phản hồi trong vòng 1 ngày
-
feat(admin): bounded NIP-66 probe history and Network Health timelineCó thể đã có người làm @Ferryx349 đã nhận 4 ngày trước. Đang mởAdmin Console enhancement
cameri/nostream#800 · 1 người được giao ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của cameri/nostream
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
better-auth/better-auth#11723 · 1 reaction ·
Maintainer thường phản hồi trong vòng 1 ngày
-
area: docs difficulty: easy documentation good first issue
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Worker-Erstellung bricht langsame Git-Worktree-Checkouts nach 20 Sekunden abCó thể đã có người làm @KajoVanBuyten đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 69/100
AgentSystemLabs/agent-office#367 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
pierrecomputer/pierre#1187 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
area: frontend bug
Độ khó 1/5 1-3 giờ Mức phù hợp với người mới 85/100
snapotter-hq/SnapOtter#2425 ·
Maintainer thường phản hồi trong vòng 1 ngày