
Лаборатория исследований безопасности: воспроизведение CVE-2025-61584 (GHSA-9g7x-737f-5xpc) — внедрение команд через github.head_ref в рабочем процессе pull_request_target (.github/workflows/pr.yml)
Автоматически созданный исследовательский артефакт — не вышестоящий проект.
Этот репозиторий — одноразовая лаборатория, созданная автоматизированной системой для магистерской диссертации в Университете Лаваля по воспроизведению опубликованных уязвимостей в рабочих процессах GitHub Actions. Это точный снимок
serverless-dns/serverless-dnsна коммитеb0b1a1538aeb1991b5bc13dfe4e18e686913b12e(2025-04-26), распространённый под собственной лицензией этого проекта, файл которой включён без изменений в этот снимок.Вышестоящий проект не участвует, никогда не является целью, а изучаемая здесь уязвимость уже публична. Каждый секрет и переменная в этом репозитории — случайно сгенерированное фиктивное значение — никаких реальных учётных данных здесь нет. Ссылки на действия и образы раннеров закреплены на те значения, которые они имели на 2025-04-26; см.
pinning.mdв выводе системы для каждого изменения, внесённого в снимок.Вопросы или возражения: [email protected]
serverless-dns — это блокировщик контента в духе Pi-Hole, бессерверный резолвер DNS-over-HTTPS (DoH) и DNS-over-TLS (DoT). Работает из коробки на Cloudflare Workers, Deno Deploy, Fastly Compute@Edge и Fly.io. Бесплатных тарифов всех этих сервисов должно хватить на 10–20 устройств DNS-трафика в месяц.
RethinkDNS запускает serverless-dns в продакшене на следующих конечных точках:
| Облачная платформа | Расположение серверов | Протокол | Домен | Использование |
|---|---|---|---|---|
| ⛅ Cloudflare Workers | 280+ (ping) | DoH | sky.rethinkdns.com | настроить |
| 🦕 Deno Deploy | 30+ (ping) | DoH | закрытая бета | |
| ⏱️ Fastly Compute@Edge | 80+ (ping) | DoH | закрытая бета | |
| 🪂 Fly.io | 30+ (ping) | DoH и DoT | max.rethinkdns.com | настроить |
Обработка на стороне сервера занимает от 0 миллисекунд (мс) до 2 мс (медиана), а сквозная задержка (варьируется в зависимости от региона и сети) составляет от 10 мс до 30 мс (медиана).
Резолвер Rethink DNS на Fly.io спонсируется FOSS United.
Cloudflare Workers — самая простая платформа для настройки serverless-dns:
Пошаговые инструкции см. в документации:
| Платформа | Сложность | Среда выполнения | Документация |
|---|---|---|---|
| ⛅ Cloudflare | Лёгкая | v8 Isolates | Хостинг на Cloudflare Workers |
| 🦕 Deno.com | Средняя | Deno Isolates | Хостинг на Deno.com |
| ⏱️ Fastly Compute@Edge | Лёгкая | Fastly JS | Хостинг на Fastly Compute@Edge |
| 🪂 Fly.io | Сложная | Node MicroVM | Хостинг на Fly.io |
Чтобы настроить списки блокировки, откройте https://<my-domain>.tld/configure в браузере (должна загрузиться страница, похожая на страницу configure RethinkDNS).
За помощью или поддержкой обращайтесь: откройте issue или отправьте патч.
Код:
# перейдите в рабочую директорию
cd /my/work/dir
# клонируйте этот репозиторий
git clone https://github.com/serverless-dns/serverless-dns.git
# перейдите в serverless-dns
cd ./serverless-dns
Node:
# установите node v22+ через nvm, если требуется
# 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
# загрузите зависимости
npm i
# (необязательно) обновите зависимости
npm update
# запустите serverless-dns на node
./run n
# запустите профилировщик clinicjs.org
./run n [cpu|fn|mem]
Deno:
# установите deno.land v2+
# https://github.com/denoland/deno/#install
curl -fsSL https://deno.land/install.sh | sh
# запустите serverless-dns на deno
./run d
Fastly:
# установите node v22+ через nvm, если требуется
# установите Fastly CLI
# https://developer.fastly.com/learning/tools/cli
# запустите serverless-dns на Fastly Compute@Edge
./run f
Wrangler:
# установите Cloudflare Workers (cli), также известный как Wrangler
# https://developers.cloudflare.com/workers/cli-wrangler/install-update
npm i wrangler --save-dev
# запустите serverless-dns на Cloudflare Workers (cli)
# Убедитесь, что Wrangler настроен:
# https://developers.cloudflare.com/workers/cli-wrangler/authentication
./run w
# профилируйте wrangler с помощью Chrome DevTools
# blog.cloudflare.com/profiling-your-workers-with-wrangler
Коммиты в этом репозитории соблюдают Google JavaScript style guide (см. .eslintrc.cjs).
Git pre-commit хук запускает линтер (eslint) и форматтер (prettier) для .js файлов. Используйте git commit --no-verify,
чтобы обойти этот хук.
Pull request'ы также проверяются на нарушения стиля кода и автоматически исправляются, где это возможно.
Настройте env.js, если нужно изменить значения по умолчанию.
Для Cloudflare Workers настраивайте переменные окружения в wrangler.toml.
Для Fastly Compute@Edge настраивайте переменные окружения в fastly.toml.