
# Sicherheitsforschungs-Labor: Reproduktion von CVE-2025-61584 (GHSA-9g7x-737f-5xpc) — Befehlsinjektion über github.head_ref im pull_request_target-Workflow (.github/workflows/pr.yml)
Automatisiertes Forschungsobjekt – nicht das Upstream-Projekt.
Dieses Repository ist ein Wegwerf-Labor, das von einer automatisierten Testumgebung für eine Masterarbeit an der Université Laval zur Reproduktion veröffentlichter GitHub-Actions-Workflow-Schwachstellen erstellt wurde. Es ist ein wörtlicher Schnappschuss von
serverless-dns/serverless-dnsbeim Commitb0b1a1538aeb1991b5bc13dfe4e18e686913b12e(2025-04-26), weiterverbreitet unter der eigenen Lizenz dieses Projekts, deren Datei unverändert in diesem Schnappschuss enthalten ist.Das Upstream-Projekt ist nicht beteiligt, wird niemals angegriffen, und die hier untersuchte Schwachstelle ist bereits öffentlich bekannt. Jedes Secret und jede Variable in diesem Repository ist ein zufällig generierter Dummy-Wert – es sind keine echten Anmeldedaten vorhanden. Aktionsreferenzen und Runner-Images sind auf den Stand vom 2025-04-26 fixiert; siehe
pinning.mdin der Testumgebungs-Ausgabe für jede am Schnappschuss vorgenommene Änderung.Fragen oder Einwände: [email protected]
serverless-dns ist ein Pi-Hole-artiger Inhaltsblocker, serverloser, Stub-DNS-over-HTTPS- (DoH) und DNS-over-TLS- (DoT) Resolver. Läuft sofort einsatzbereit auf Cloudflare Workers, Deno Deploy, Fastly Compute@Edge und Fly.io. Die kostenlosen Stufen all dieser Dienste sollten ausreichen, um den DNS-Verkehr von 10 bis 20 Geräten pro Monat abzudecken.
RethinkDNS betreibt serverless-dns in Produktion an diesen Endpunkten:
| Cloud-Plattform | Serverstandorte | Protokoll | Domain | Nutzung |
|---|---|---|---|---|
| ⛅ Cloudflare Workers | 280+ (ping) | DoH | sky.rethinkdns.com | konfigurieren |
| 🦕 Deno Deploy | 30+ (ping) | DoH | private Beta | |
| ⏱️ Fastly Compute@Edge | 80+ (ping) | DoH | private Beta | |
| 🪂 Fly.io | 30+ (ping) | DoH und DoT | max.rethinkdns.com | konfigurieren |
Die serverseitige Verarbeitung dauert zwischen 0 Millisekunden (ms) und 2 ms (Median), und die Ende-zu-Ende-Latenz (variiert je nach Region und Netzwerk) liegt zwischen 10 ms und 30 ms (Median).
Der Rethink DNS-Resolver auf Fly.io wird von FOSS United gesponsert.
Cloudflare Workers ist die einfachste Plattform, um serverless-dns einzurichten:
Für Schritt-für-Schritt-Anleitungen siehe:
| Plattform | Schwierigkeit | Laufzeit | Dokumentation |
|---|---|---|---|
| ⛅ Cloudflare | Einfach | v8 Isolates | Hosting auf Cloudflare Workers |
| 🦕 Deno.com | Mittel | Deno Isolates | Hosting auf Deno.com |
| ⏱️ Fastly Compute@Edge | Einfach | Fastly JS | Hosting auf Fastly Compute@Edge |
| 🪂 Fly.io | Schwer | Node MicroVM | Hosting auf Fly.io |
Um Blocklisten einzurichten, besuche https://<meine-domain>.tld/configure in deinem Browser (es sollte etwas Ähnliches wie die Konfigurationsseite von RethinkDNS geladen werden).
Für Hilfe oder Unterstützung kannst du gerne ein Issue eröffnen oder einen Patch einreichen.
Node:
# in das Arbeitsverzeichnis wechseln
cd /my/work/dir
# dieses Repository klonen
git clone https://github.com/serverless-dns/serverless-dns.git
# in serverless-dns wechseln
cd ./serverless-dns
Node:
# node v22+ über nvm installieren, falls erforderlich
# 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
# Abhängigkeiten herunterladen
npm i
# (optional) Abhängigkeiten aktualisieren
npm update
# serverless-dns auf node ausführen
./run n
# einen clinicjs.org-Profiler ausführen
./run n [cpu|fn|mem]
Deno:
# deno.land v2+ installieren
# https://github.com/denoland/deno/#install
curl -fsSL https://deno.land/install.sh | sh
# serverless-dns auf deno ausführen
./run d
Fastly:
# node v22+ über nvm installieren, falls erforderlich
# die Fastly-CLI installieren
# https://developer.fastly.com/learning/tools/cli
# serverless-dns auf Fastly Compute@Edge ausführen
./run f
Wrangler:
# Cloudflare Workers (cli) aka Wrangler installieren
# https://developers.cloudflare.com/workers/cli-wrangler/install-update
npm i wrangler --save-dev
# serverless-dns auf Cloudflare Workers (cli) ausführen
# Stelle sicher, dass Wrangler zuerst eingerichtet ist:
# https://developers.cloudflare.com/workers/cli-wrangler/authentication
./run w
# wrangler mit Chrome DevTools profilieren
# blog.cloudflare.com/profiling-your-workers-with-wrangler
Commits in diesem Repository erzwingen den Google-JavaScript-Styleguide (ref: .eslintrc.cjs).
Ein Git-pre-commit-Hook führt Linter (eslint) und Formatierer (prettier) auf .js-Dateien aus. Verwende git commit --no-verify,
um diesen Hook zu umgehen.
Pull-Requests werden ebenfalls auf Verstöße gegen den Codestil überprüft und wo möglich automatisch korrigiert.