Nuclei چیست؟
Nuclei ابزاری متنباز با مجوز MIT از مجموعهی ProjectDiscovery است که یک ایدهی ساده را در مقیاس بزرگ اجرا میکند: هر بررسی امنیتی را در یک فایل YAML توصیف کن، بعد آن فایل را روی هزاران هدف اجرا کن. خود Nuclei موتور اجراست و دانش امنیتی در قالبها زندگی میکند.
در زمان نگارش این مطلب نسخهی جاری v3.9.0 (۱۰ ژوئن ۲۰۲۶) است و اجرای آن به Go نسخهی ۱٫۲۴٫۲ یا بالاتر نیاز دارد. این نسخه پشتیبانی از redirect در سطح پروتکل، یکپارچگی با impacket و ماژولهای کمکی جاوااسکریپت برای WMI/TSCH/SCMR/DCOM را اضافه کرد.
مخزن رسمی قالبها (nuclei-templates) نیز با مجوز MIT منتشر میشود. در اوت ۲۰۲۶ این مخزن حدود ۱۱٬۹۹۷ فایل قالب در ۸۷۳ دایرکتوری داشت که از میان آنها ۱٬۴۹۶ قالب بهطور اختصاصی به آسیبپذیریهای شناختهشدهی در حال بهرهبرداری (KEV) از منابع CISA و VulnCheck اختصاص دارد و بزرگترین برچسب، vuln با ۶٬۴۶۸ قالب است. این اعداد هفتگی تغییر میکنند و هر بار باید با تاریخ ذکر شوند.
جایگاه Nuclei در فرایند تست نفوذ
Nuclei یک اسکنر مسائل شناختهشده است، نه یک اسکنر کشف. تفاوت بنیادی است و باید در گزارش و پیشنهاد فنی هم منعکس شود:
- در چه چیزی عالی است: تشخیص CVEهای شناختهشده، پنلها و فایلهای افشاشده، پیکربندیهای نادرست، اعتبارنامههای پیشفرض، و بررسی takeover زیردامنه — آن هم روی فهرستهای بسیار بزرگ هدف.
- در چه چیزی ناتوان است: IDOR، نقصهای منطق کسبوکار، و هر تزریق تازهای که هنوز قالبی برایش نوشته نشده.
در یک engagement واقعی، Nuclei بعد از شناسایی و پیش از کار دستی اجرا میشود: subfinder فهرست زیردامنهها را میسازد، httpx میزبانهای زنده را جدا میکند و Nuclei آن فهرست را برای مسائل شناختهشده جارو میکند. یافتههای Nuclei سپس ورودی مرحلهی دستی با Burp Suite میشوند. این همان الگویی است که در ابزارهای بررسی امنیت وبسایت شرح داده شده است.
نکتهی مدیریتی: چون Nuclei روی مسائل شناختهشده تمرکز دارد، بهترین استفادهی سازمانی از آن اجرای دورهای روی کل سطح حمله برای گرفتن رگرسیون است — نه بهعنوان جایگزین تست نفوذ.
مدل قالب: قالب YAML چطور کار میکند؟
هر قالب سه بخش دارد: یک شناسه، بخش info (نام، شدت، برچسبها، توضیح، ارجاع)، و بخش پروتکل که تعریف میکند چه درخواستی فرستاده شود و چه چیزی در پاسخ نشانهی مثبت است.
تشخیص با matcherها انجام میشود: تطبیق بر اساس کد وضعیت، وجود یک کلمه، عبارت منظم، اندازه، یا عبارت DSL. با matchers-condition: and میتوان چند شرط را ترکیب کرد که مهمترین ابزار کاهش هشدار کاذب است. extractorها هم برای بیرون کشیدن مقداری از پاسخ (مثلاً شمارهی نسخه) به کار میروند.
یک قالب سفارشی کوتاه برای تشخیص فایل .env افشاشده:
id: exposed-env-file
info:
name: Exposed .env file
severity: high
tags: exposure,config
http:
- method: GET
path: ["{{BaseURL}}/.env"]
matchers-condition: and
matchers:
- type: status
status: [200]
- type: word
words: ["DB_PASSWORD"]توجه کنید که چرا هر دو شرط لازم است: بسیاری از برنامهها برای مسیر ناموجود هم 200 برمیگردانند، پس تطبیق کد وضعیت بهتنهایی هشدار کاذب تولید میکند. کیفیت یک قالب دقیقاً در همین جزئیات تعیین میشود.
اجرای قالب سفارشی روی یک هدف:
nuclei -u https://app.example.com -t custom/exposed-env.yaml
کارگاه عملی: اجرا و فیلتر شدت
اجرای کل مجموعهی قالبها بدون فیلتر روی یک هدف عملیاتی، کند و پرسروصداست و ارزش عملی کمی دارد. فیلتر کردن، مهارت اصلی کار با Nuclei است.
فیلتر بر اساس شدت — تمرکز روی آنچه واقعاً باید امشب رفع شود:
nuclei -l live-hosts.txt -severity critical,high -o findings.txtفیلتر بر اساس برچسب — مثلاً فقط بررسیهای مرتبط با CVE یا فقط پیکربندی نادرست:
nuclei -l live-hosts.txt -tags cve,exposure -rate-limit 50اجرای مجموعهی مشخصی از قالبها با -t روی یک مسیر یا دایرکتوری.
سه فلگ دیگر که در کار حرفهای اهمیت دارند: -rate-limit برای مهار نرخ روی سامانههای شکننده، -severity برای تمرکز، و بهروزرسانی مرتب مخزن قالبها. ProjectDiscovery یک ردهی ابری رایگان هم برای ذخیره و مصورسازی یافتهها ارائه میکند که با فلگ -dashboard در دسترس است.
زمینهای که ارزش دانستن دارد: ProjectDiscovery یک شرکت سرمایهگذاریشده (سری A به ارزش ۲۵ میلیون دلار) است که در کنار ابزارهای متنباز خود، یک پلتفرم ابری تجاری هم اجرا میکند. ابزارها آزادند، اما بخشی از منابع داده و قابلیتها به کلید API یا حساب ابری گره خوردهاند.
محدودیتها و امنیت خود Nuclei
«Nuclei یک اسکنر آسیبپذیری کامل است و میتواند جای تست نفوذ را بگیرد.» — نادرست. Nuclei یک تطبیقدهندهی امضا مبتنی بر قالب است و منطق برنامه را نمیفهمد. هیچ قالبی نمیتواند بگوید کاربر شمارهی ۵ مجاز به دیدن رکورد شمارهی ۷ هست یا نه. نرخ هشدار کاذب آن هم کاملاً تابع کیفیت قالبهاست.
باور غلط دوم: «Nuclei فلان تعداد هزار قالب دارد.» — این عدد هفتگی تغییر میکند و بدون تاریخ نقل کردنش بیمعناست.
نسخهی v3.8.0 (۱۸ آوریل ۲۰۲۶) اصلاحیههای امنیتی برای CVE-2026-41645 و CVE-2026-41646 را منتشر کرد. یعنی خود ابزار اسکن، آسیبپذیری داشته است. اگر نسخهای قدیمیتر از v3.8.0 در خط لولهی CI یا روی ماشین آزمون شما نصب است، آن را ارتقا دهید. این یادآوری خوبی است که ابزارهای امنیتی هم بخشی از سطح حمله شما هستند.
سایر محدودیتها:
- اجرای کل مجموعهی قالبها روی هدف عملیاتی سنگین و پرسروصداست و بهسادگی توسط WAF و سامانههای تشخیص نفوذ دیده میشود.
- قالبهای ضعیف، هشدار کاذب تولید میکنند؛ هر یافته باید پیش از ورود به گزارش دستی تأیید شود.
- Nuclei جایگزین اسکنر DAST تعاملی نیست؛ برنامههای تکصفحهای و جریانهای احراز هویتشده را بهخوبی پوشش نمیدهد.
پرسشهای متداول
Nuclei چه تفاوتی با Burp Scanner دارد؟
Burp Scanner یک موتور DAST است که با تحلیل رفتار برنامه، ورودیها را دستکاری میکند و آسیبپذیریهای عمومی مثل تزریق و XSS را کشف میکند. Nuclei امضاهای از پیش نوشتهشده را تطبیق میدهد. Nuclei برای پوشش گسترده و سریع مسائل شناختهشده روی هزاران میزبان بهتر است؛ Burp برای عمق روی یک برنامه.
آیا Nuclei میتواند IDOR یا نقص منطق کسبوکار پیدا کند؟
خیر. این دسته از آسیبپذیریها نیازمند دانستن «چه چیزی باید مجاز باشد» است و هیچ قالب امضایی این را نمیداند. کشف IDOR و منطق کسبوکار فقط با آزمون دستی و مقایسهی رفتار میان کاربران با سطوح دسترسی مختلف ممکن است.
آیا اجرای Nuclei روی سایت خودم خطرناک است؟
اجرای کل مجموعهی قالبها بدون فیلتر میتواند حجم زیادی درخواست تولید کند و روی سامانههای شکننده باعث افت کارایی شود. با -severity، -tags و -rate-limit دامنه و نرخ را محدود کنید و ترجیحاً نخستین اجرا را در محیط staging انجام دهید.
چطور برای سازمان خودم قالب سفارشی بنویسم؟
یک فایل YAML با id، بخش info (نام و شدت) و بخش http شامل متد، مسیر و matcherها بسازید و آن را با -t اجرا کنید. برای کاهش هشدار کاذب حتماً چند شرط را با matchers-condition: and ترکیب کنید — مثلاً کد وضعیت بهعلاوهی وجود یک رشتهی مشخص در بدنه.
