
مختبر أبحاث أمنية: إعادة إنتاج 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 هو محلل DNS بدون خوادم (serverless) بأسلوب Pi-hole لحظر المحتوى، ويدعم DNS عبر HTTPS (DoH) وDNS عبر TLS (DoT). يعمل مباشرة على Cloudflare Workers، وDeno Deploy، وFastly Compute@Edge، وFly.io. الخطط المجانية لجميع هذه الخدمات يجب أن تكون كافية لتغطية حركة 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 من متصفحك (يجب أن يُحمّل شيئًا مشابهًا لـصفحة الإعداد الخاصة بـ RethinkDNS).
للحصول على المساعدة أو الدعم، لا تتردد في فتح مشكلة أو إرسال تصحيح.
Node:
# 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
تفرض الالتزامات في هذا المستودع دليل أسلوب JavaScript من Google (المرجع: .eslintrc.cjs).
يوجد خطاف pre-commit في git يشغّل المدقق (eslint) والمنسق (prettier) على ملفات .js. استخدم git commit --no-verify
لتجاوز هذا الخطاف.
تُفحص طلبات السحب أيضًا بحثًا عن مخالفات أسلوب الكود وتُصحح تلقائيًا حيثما أمكن.
قم بإعداد env.js إذا كنت بحاجة إلى تعديل الإعدادات الافتراضية.
بالنسبة لـ Cloudflare Workers، قم بإعداد متغيرات البيئة في wrangler.toml بدلاً من ذلك.
بالنسبة لـ Fastly Compute@Edge، قم بإعداد متغيرات البيئة في fastly.toml بدلاً من ذلك.
src/server-[node|workers|deno] <-> doh.js <-> plugin.jsplugin.js: user-op.js -> cache-resolver.js -> cc.js -> resolver.js