Skip to content

Commit ee42e8a

Browse files
melgarafaelclaude
andcommitted
fix(lint): o guard de SSRF nomeava o provider em comentário
`pnpm lint:channels` reprovou o commit anterior: a doutrina restricao-de-canal (invariante 1) proíbe nomear provider fora de lib/channels/, e o gate lê o arquivo inteiro — comentário incluído. Eu citei o gateway pelo nome ao explicar o que o rebinding alcança na rede do compose. O gate está certo e a doutrina também: o exemplo fica igualmente claro com o papel do serviço ("o cache e o gateway de mensageria") em vez do nome, e é o nome que apodrece quando o provider muda. Não peguei localmente porque `pnpm lint` não inclui `lint:channels` — o job verify roda CINCO passos (typecheck, lint, lint:channels, test:unit, test:shell), e eu tinha rodado três. Os cinco estão verdes agora. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JraYDTGEECNBH7Wu8U7a5m
1 parent 556ee74 commit ee42e8a

2 files changed

Lines changed: 2 additions & 2 deletions

File tree

‎lib/automation/actions/call-webhook.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ export async function executeCallWebhook(
6969
try {
7070
assertSafeOutboundUrl(url);
7171
// Guard textual não resolve nome: um hostname público apontando para
72-
// 169.254.169.254 (metadata da nuvem) ou para `redis`/`waha` da rede do
72+
// 169.254.169.254 (metadata da nuvem) ou para os serviços internos da rede do
7373
// compose passava por ele. Este segundo resolve e julga o IP.
7474
await assertDestinoResolvidoSeguro(new URL(url).hostname);
7575
} catch (err) {

‎lib/automation/outbound-ip.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
* O guard textual (`assertSafeOutboundUrl`) declarava a própria dívida: um
66
* hostname público que resolve para IP privado no momento do fetch passava
77
* batido. Numa VPS de self-host isso alcança o que mora na rede do compose —
8-
* `redis` e `waha` sem autenticação de rede, o Postgres, e o serviço de
8+
* o cache e o gateway de mensageria sem autenticação de rede, o Postgres, e o serviço de
99
* metadados da nuvem em 169.254.169.254, que entrega credencial de instância.
1010
*
1111
* Quem cadastra a URL precisa ser `manager+`, então o atacante já é alguém de

0 commit comments

Comments
 (0)