
Laboratorio di ricerca sulla sicurezza: riproduzione di CVE-2025-61584 (GHSA-9g7x-737f-5xpc) — iniezione di comandi tramite github.head_ref nel workflow pull_request_target (.github/workflows/pr.yml)
Artefatto di ricerca automatizzato — non il progetto upstream.
Questo repository è un laboratorio usa e getta costruito da un sistema automatizzato per una tesi magistrale presso l'Université Laval sulla riproduzione di vulnerabilità pubblicate nei workflow di GitHub Actions. È uno snapshot integrale di
serverless-dns/serverless-dnsal commitb0b1a1538aeb1991b5bc13dfe4e18e686913b12e(2025-04-26), ridistribuito sotto la licenza di quel progetto, il cui file è incluso invariato in questo snapshot.Il progetto upstream non è coinvolto, non è mai preso di mira, e la vulnerabilità studiata qui è già pubblica. Ogni segreto e variabile in questo repository è un valore fittizio generato casualmente — nessuna credenziale reale è presente. I riferimenti alle action e le immagini dei runner sono bloccati a ciò a cui risolvevano il 2025-04-26; vedi
pinning.mdnell'output del sistema per ogni modifica apportata allo snapshot.Domande o obiezioni: [email protected]
serverless-dns è un resolver DNS-over-HTTPS (DoH) e DNS-over-TLS (DoT) stub, serverless, con blocco dei contenuti stile Pi-Hole. Funziona out-of-the-box su Cloudflare Workers, Deno Deploy, Fastly Compute@Edge e Fly.io. I piani gratuiti di tutti questi servizi dovrebbero essere sufficienti a coprire il traffico DNS di 10-20 dispositivi al mese.
RethinkDNS esegue serverless-dns in produzione su questi endpoint:
| Piattaforma cloud | Posizioni dei server | Protocollo | Dominio | Utilizzo |
|---|---|---|---|---|
| ⛅ Cloudflare Workers | 280+ (ping) | DoH | sky.rethinkdns.com | configura |
| 🦕 Deno Deploy | 30+ (ping) | DoH | beta privata | |
| ⏱️ Fastly Compute@Edge | 80+ (ping) | DoH | beta privata | |
| 🪂 Fly.io | 30+ (ping) | DoH e DoT | max.rethinkdns.com | configura |
L'elaborazione lato server richiede da 0 millisecondi (ms) a 2ms (mediana), e la latenza end-to-end (varia in base a regioni e reti) è tra 10ms e 30ms (mediana).
Il resolver Rethink DNS su Fly.io è sponsorizzato da FOSS United.
Cloudflare Workers è la piattaforma più semplice su cui configurare serverless-dns:
Per istruzioni passo-passo, fai riferimento a:
| Piattaforma | Difficoltà | Runtime | Documentazione |
|---|---|---|---|
| ⛅ Cloudflare | Facile | v8 Isolates | Hosting su Cloudflare Workers |
| 🦕 Deno.com | Moderata | Deno Isolates | Hosting su Deno.com |
| ⏱️ Fastly Compute@Edge | Facile | Fastly JS | Hosting su Fastly Compute@Edge |
| 🪂 Fly.io | Difficile | Node MicroVM | Hosting su Fly.io |
Per configurare le blocklist, visita https://<my-domain>.tld/configure dal tuo browser (dovrebbe caricare qualcosa di simile alla pagina configure di RethinkDNS).
Per aiuto o assistenza, sentiti libero di aprire un issue o inviare una patch.
Codice:
# 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
I commit su questo repository applicano la guida allo stile JavaScript di Google (rif: .eslintrc.cjs).
Un hook git pre-commit esegue il linter (eslint) e il formatter (prettier) sui file .js. Usa git commit --no-verify
per bypassare questo hook.
Le pull request vengono anche controllate per violazioni dello stile del codice e corrette automaticamente dove possibile.
Configura env.js se devi modificare le impostazioni predefinite.
Per Cloudflare Workers, configura le variabili d'ambiente in wrangler.toml, invece.
Per Fastly Compute@Edge, configura le variabili d'ambiente in fastly.toml, invece.