Bump transitive proxy-addr to 2.0.8 (CVE-2026-90711)
Mantenedores costumam responder em até 1 dia
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 2/5
- Tempo estimado
- 1-3 horas
- Facilidade para iniciantes
- 72/100
- Tipo de issue
- Bug
- Clareza
- Claramente especificada
- Status de atividade
- Ativa
- Stack de tecnologia
- express, nodejs, typescript
Direção de pesquisa
Comece em package.json, onde o bloco de overrides do pnpm já fixa serialize-javascript; adicione ali uma entrada para proxy-addr e depois execute pnpm install para atualizar o pnpm-lock.yaml. Verifique os leitores de IP da requisição em src/controllers/admin/post-settings-restore-controller.ts:21 e patch-settings-controller.ts:73 apenas como contexto, pois a correção não altera esses trechos. Está concluído quando pnpm why proxy-addr resolve para 2.0.8 e uma instalação frozen passa.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
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).
- Linguagem predominante
- TypeScript
- Estrelas
- 829
- Forks
- 234
- Merge médio
- 2d 10h
- PRs com merge (30d)
- 24
Preparar o ambiente
- Inclui um Dockerfile ou arquivo Docker Compose
- Tem um modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de cameri/nostream
-
feat(admin): bounded NIP-66 probe history and Network Health timelineTalvez já em andamento @Ferryx349 assumiu há 3 dias. AbertaAdmin Console enhancement
cameri/nostream#800 · 1 responsável ·
Mantenedores costumam responder em até 1 dia
-
Store relay settings overrides in PostgreSQL (SETTINGS_BACKEND=db)Talvez já em andamento @Ferryx349 assumiu há 37 dias. Abertaenhancement
cameri/nostream#757 · 1 responsável ·
Mantenedores costumam responder em até 1 dia
-
feat(nip85): Web-of-Trust spam mitigation engineTalvez livre de novo @Ferryx349 assumiu há 67 dias e não há nenhum pull request aberto. Abertaenhancement
cameri/nostream#720 · 1 responsável ·
Mantenedores costumam responder em até 1 dia
-
feat(nip96): native HTTP media storage pipelineTalvez livre de novo @Ferryx349 assumiu há 67 dias e não há nenhum pull request aberto. Abertaenhancement
cameri/nostream#719 · 1 responsável ·
Mantenedores costumam responder em até 1 dia
-
feat(nip67): support EOSE completeness hintsTalvez livre de novo @Ferryx349 assumiu há 67 dias e não há nenhum pull request aberto. Abertaenhancement
cameri/nostream#718 · 1 responsável ·
Mantenedores costumam responder em até 1 dia
Todas as issues de cameri/nostream
Issues semelhantes
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
Agenta-AI/agenta#7542 · 1 comentário · 1 reação ·
Mantenedores costumam responder em até 1 dia
-
code quality security
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
Mantenedores costumam responder em até 1 dia
-
enhancement good first issue
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 90/100
-
feat(icons): add [solidping]Aberta
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 82/100
homarr-labs/dashboard-icons#2939 ·
Mantenedores costumam responder em até 1 dia