
Laboratoire de recherche en sécurité : reproduction de CVE-2025-61584 (GHSA-9g7x-737f-5xpc) — injection de commande via github.head_ref dans le workflow pull_request_target (.github/workflows/pr.yml)
Artéfact de recherche automatisé — pas le projet en amont.
Ce dépôt est un laboratoire jetable construit par un harnais automatisé pour un mémoire de maîtrise à l'Université Laval sur la reproduction de vulnérabilités publiées dans les workflows GitHub Actions. Il s'agit d'un instantané verbatim de
serverless-dns/serverless-dnsau commitb0b1a1538aeb1991b5bc13dfe4e18e686913b12e(2025-04-26), redistribué sous la licence propre de ce projet, dont le fichier est inclus inchangé dans cet instantané.Le projet en amont n'est pas impliqué, n'est jamais ciblé, et la vulnérabilité étudiée ici est déjà publique. Chaque secret et variable dans ce dépôt est une valeur factice générée aléatoirement — aucune information d'identification réelle n'est présente. Les références d'actions et les images d'exécuteurs sont épinglées à ce qu'elles résolvaient au 2025-04-26 ; voir
pinning.mddans la sortie du harnais pour chaque modification apportée à l'instantané.Questions ou objections : [email protected]
serverless-dns est un résolveur DNS-over-HTTPS (DoH) et DNS-over-TLS (DoT) stub, sans serveur, de type Pi-Hole, avec blocage de contenu. Fonctionne prêt à l'emploi sur Cloudflare Workers, Deno Deploy, Fastly Compute@Edge, et Fly.io. Les niveaux gratuits de tous ces services devraient suffire à couvrir le trafic DNS de 10 à 20 appareils par mois.
RethinkDNS exécute serverless-dns en production à ces points de terminaison :
| Plateforme cloud | Emplacements des serveurs | Protocole | Domaine | Utilisation |
|---|---|---|---|---|
| ⛅ Cloudflare Workers | 280+ (ping) | DoH | sky.rethinkdns.com | configurer |
| 🦕 Deno Deploy | 30+ (ping) | DoH | bêta privée | |
| ⏱️ Fastly Compute@Edge | 80+ (ping) | DoH | bêta privée | |
| 🪂 Fly.io | 30+ (ping) | DoH et DoT | max.rethinkdns.com | configurer |
Le traitement côté serveur prend de 0 milliseconde (ms) à 2 ms (médiane), et la latence de bout en bout (varie selon les régions et les réseaux) est entre 10 ms et 30 ms (médiane).
Le résolveur Rethink DNS sur Fly.io est sponsorisé par FOSS United.
Cloudflare Workers est la plateforme la plus simple pour configurer serverless-dns :
Pour des instructions étape par étape, référez-vous à :
| Plateforme | Difficulté | Runtime | Doc |
|---|---|---|---|
| ⛅ Cloudflare | Facile | v8 Isolates | Hébergement sur Cloudflare Workers |
| 🦕 Deno.com | Modérée | Deno Isolates | Hébergement sur Deno.com |
| ⏱️ Fastly Compute@Edge | Facile | Fastly JS | Hébergement sur Fastly Compute@Edge |
| 🪂 Fly.io | Difficile | Node MicroVM | Hébergement sur Fly.io |
Pour configurer les listes de blocage, visitez https://<mon-domaine>.tld/configure depuis votre navigateur (cela devrait charger quelque chose de similaire à la page configure de RethinkDNS).
Pour de l'aide ou de l'assistance, n'hésitez pas à ouvrir un problème ou à soumettre un correctif.
Code :
# naviguer vers le répertoire de travail
cd /my/work/dir
# cloner ce dépôt
git clone https://github.com/serverless-dns/serverless-dns.git
# naviguer vers serverless-dns
cd ./serverless-dns
Node :
# installer node v22+ via nvm, si nécessaire
# 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
# télécharger les dépendances
npm i
# (facultatif) mettre à jour les dépendances
npm update
# exécuter serverless-dns sur node
./run n
# exécuter un profileur clinicjs.org
./run n [cpu|fn|mem]
Deno :
# installer deno.land v2+
# https://github.com/denoland/deno/#install
curl -fsSL https://deno.land/install.sh | sh
# exécuter serverless-dns sur deno
./run d
Fastly :
# installer node v22+ via nvm, si nécessaire
# installer la CLI Fastly
# https://developer.fastly.com/learning/tools/cli
# exécuter serverless-dns sur Fastly Compute@Edge
./run f
Wrangler :
# installer Cloudflare Workers (cli) alias Wrangler
# https://developers.cloudflare.com/workers/cli-wrangler/install-update
npm i wrangler --save-dev
# exécuter serverless-dns sur Cloudflare Workers (cli)
# Assurez-vous de configurer Wrangler d'abord :
# https://developers.cloudflare.com/workers/cli-wrangler/authentication
./run w
# profiler wrangler avec Chrome DevTools
# blog.cloudflare.com/profiling-your-workers-with-wrangler
Les commits sur ce dépôt appliquent le guide de style JavaScript de Google (réf : .eslintrc.cjs).
Un hook git pre-commit exécute le linter (eslint) et le formateur (prettier) sur les fichiers .js. Utilisez git commit --no-verify
pour contourner ce hook.
Les demandes de tirage (pull requests) sont également vérifiées pour les violations de style de code et corrigées automatiquement lorsque c'est possible.