
# Laboratório de pesquisa em segurança: reprodução do CVE-2025-61584 (GHSA-9g7x-737f-5xpc) — injeção de comandos via github.head_ref no fluxo de trabalho pull_request_target (.github/workflows/pr.yml)
Artefacto de pesquisa automatizado — não é o projeto original.
Este repositório é um laboratório descartável criado por um harness automatizado para uma tese de mestrado na Université Laval sobre a reprodução de vulnerabilidades publicadas em workflows do GitHub Actions. É um snapshot verbatim de
serverless-dns/serverless-dnsno commitb0b1a1538aeb1991b5bc13dfe4e18e686913b12e(2025-04-26), redistribuído sob a licença do próprio projeto, cujo ficheiro está incluído inalterado neste snapshot.O projeto original não está envolvido, nunca é alvo, e a vulnerabilidade aqui estudada já é pública. Todos os segredos e variáveis neste repositório são valores fictícios gerados aleatoriamente — nenhuma credencial real está presente. Referências a ações e imagens de runners estão fixadas no que resolveram em 2025-04-26; consulte
pinning.mdna saída do harness para todas as alterações feitas ao snapshot.Perguntas ou objeções: [email protected]
serverless-dns é um resolvedor de DNS-over-HTTPS (DoH) e DNS-over-TLS (DoT) stub, serverless e de bloqueio de conteúdo, estilo Pi-Hole. Funciona imediatamente em Cloudflare Workers, Deno Deploy, Fastly Compute@Edge e Fly.io. Os níveis gratuitos de todos estes serviços devem ser suficientes para cobrir o tráfego de DNS de 10 a 20 dispositivos por mês.
O RethinkDNS executa serverless-dns em produção nestes endpoints:
| Plataforma cloud | Localizações dos servidores | Protocolo | Domínio | Utilização |
|---|---|---|---|---|
| ⛅ Cloudflare Workers | 280+ (ping) | DoH | sky.rethinkdns.com | configurar |
| 🦕 Deno Deploy | 30+ (ping) | DoH | beta privado | |
| ⏱️ Fastly Compute@Edge | 80+ (ping) | DoH | beta privado | |
| 🪂 Fly.io | 30+ (ping) | DoH e DoT | max.rethinkdns.com | configurar |
O processamento no servidor leva de 0 milissegundos (ms) a 2ms (mediana), e a latência de ponta a ponta (varia entre regiões e redes) é entre 10ms e 30ms (mediana).
O resolvedor Rethink DNS no Fly.io é patrocinado pela FOSS United.
O Cloudflare Workers é a plataforma mais fácil para configurar serverless-dns:
Para instruções passo a passo, consulte:
| Plataforma | Dificuldade | Runtime | Documentação |
|---|---|---|---|
| ⛅ Cloudflare | Fácil | v8 Isolates | Hospedagem no Cloudflare Workers |
| 🦕 Deno.com | Moderada | Deno Isolates | Hospedagem no Deno.com |
| ⏱️ Fastly Compute@Edge | Fácil | Fastly JS | Hospedagem no Fastly Compute@Edge |
| 🪂 Fly.io | Difícil | Node MicroVM | Hospedagem no Fly.io |
Para configurar listas de bloqueio, visite https://<my-domain>.tld/configure no seu navegador (deve carregar algo semelhante à página de configuração do RethinkDNS).
Para ajuda ou assistência, sinta-se à vontade para abrir uma issue ou submeter um patch.
Código:
# navigate to work dir
cd /my/work/dir
# clone this repository
git clone https://github.com/serverless-dns/serverless-dns.git
# navigate to serverless-dns
cd ./serverless-dns
Node:
# install node v22+ via nvm, if required
# https://github.com/nvm-sh/nvm#installing-and-updating
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
nvm install --lts
# download dependencies
npm i
# (optional) update dependencies
npm update
# run serverless-dns on node
./run n
# run a clinicjs.org profiler
./run n [cpu|fn|mem]
Deno:
# install deno.land v2+
# https://github.com/denoland/deno/#install
curl -fsSL https://deno.land/install.sh | sh
# run serverless-dns on deno
./run d
Fastly:
# install node v22+ via nvm, if required
# install the Fastly CLI
# https://developer.fastly.com/learning/tools/cli
# run serverless-dns on Fastly Compute@Edge
./run f
Wrangler:
# install Cloudflare Workers (cli) aka Wrangler
# https://developers.cloudflare.com/workers/cli-wrangler/install-update
npm i wrangler --save-dev
# run serverless-dns on Cloudflare Workers (cli)
# Make sure to setup Wrangler first:
# https://developers.cloudflare.com/workers/cli-wrangler/authentication
./run w
# profile wrangler with Chrome DevTools
# blog.cloudflare.com/profiling-your-workers-with-wrangler
Os commits neste repositório aplicam o guia de estilo JavaScript do Google (ref: .eslintrc.cjs).
Um hook git pre-commit executa o linter (eslint) e o formatador (prettier) em ficheiros .js. Use git commit --no-verify
para contornar este hook.
Os pull requests também são verificados quanto a violações de estilo de código e corrigidos automaticamente quando possível.
Configure env.js se precisar de ajustar os padrões.
Para Cloudflare Workers, configure as variáveis de ambiente em wrangler.toml, em vez disso.
Para Fastly Compute@Edge, configure as variáveis de ambiente em fastly.toml, em vez disso.