PoC چیست و در گزارش چه نقشی دارد؟
PoC مخفف Proof of Concept است: نمایشی کمینه، مستند و قابل تکرار که نشان میدهد یک آسیبپذیری واقعاً وجود دارد و اثری که در گزارش ادعا شده را ایجاد میکند. کارکردش تبدیل یک ادعا به یک واقعیت قابل راستیآزمایی است.
سه کاربرد عملی که PoC را از یک ضمیمهی تشریفاتی به هستهی گزارش تبدیل میکند:
- حذف بحث مثبت کاذب. بیشتر اختلاف تیم امنیت و توسعه از این پرسش شروع میشود که «این یافته واقعی است یا خروجی اسکنر؟»؛ یک PoC قابل تکرار بحث را تمام میکند.
- امکان بازتولید برای توسعهدهنده، که باید مشکل را ببیند تا رفعش کند.
- امکان آزمون مجدد. بدون PoC دقیق، تأیید رفع ممکن نیست. در PCI DSS نسخهی
4.0.1نیز آزمون مجدد پس از رفع یافتههای قابل بهرهبرداری الزامی است (بند ۱۱٫۴٫۴)، و اجرای این الزام بدون PoC ثبتشده عملاً غیرممکن است.
به همین دلیل در یک گزارش تست نفوذ حرفهای، هر یافته چهار عنصر دارد: شناسهی CWE، دستهی OWASP، امتیاز CVSS با ذکر نسخه، و یک PoC.
ویژگیهای یک PoC خوب
| ویژگی | یعنی چه |
|---|---|
| قابل تکرار | درخواست کامل، پیششرطها، حساب استفادهشده، زمان دقیق و نسخهی ابزار ثبت شده باشد تا شخص دیگری همان نتیجه را بگیرد |
| کمینه | فقط همان چیزی که برای اثبات لازم است؛ یک متغیر در هر گام، بدون گامهای اضافه |
| غیرتخریبی | بدون حذف یا تغییر داده، بدون ایجاد پایداری، بدون از کار انداختن سرویس |
| در دامنه | فقط روی داراییها و حسابهایی که در قرارداد مشخص شدهاند |
| مستند با شاهد | جفت درخواست/پاسخ، تصویر صفحه با زمان، و ارجاع به لاگ متناظر |
| قابل بازگشت | هر مصنوعی که ساخته شده — فایل، حساب، رکورد آزمایشی — پاک و پاکسازی آن مستند شود |
نکتهی مهم دربارهی دادهی حساس: اثبات دسترسی نباید به استخراج دادهی واقعی تبدیل شود. اگر یک نقص IDOR اجازهی خواندن رکورد کاربران دیگر را میدهد، اثبات با یک رکورد ماسکشده یا با تعداد رکوردهای قابل دسترسی انجام میشود، نه با دانلود کل جدول. این تفکیک هم اخلاقی است و هم حقوقی.
نمونه: یک PoC کمینه
سادهترین شکل یک PoC خوب، جفت درخواست و پاسخ بههمراه یک جملهی تفسیر است. مثال برای یک نقص کنترل دسترسی:
POST /api/v1/orders/1042/cancel HTTP/1.1
Host: app.example.com
Cookie: session=<session-of-user-B>
HTTP/1.1 200 OK
{"status":"cancelled"}تفسیر: سفارش 1042 به کاربر A تعلق دارد، اما نشست کاربر B توانست آن را لغو کند. سرور هیچ بررسی مالکیتی روی شیء انجام نمیدهد. پیششرط: هر دو حساب آزمایشی توسط مشتری ارائه شدهاند و سفارش، سفارش آزمایشی است.
این PoC همهی ویژگیهای لازم را دارد: کمینه (یک درخواست)، غیرتخریبی (سفارش آزمایشی و نه واقعی)، قابل تکرار، و بدون ابهام. مقایسه کنید با اسکریپتی که همهی شناسهها را پیمایش و دادهی مشتریان واقعی را ذخیره میکند — آن اثبات بهتری نیست، فقط ریسک حقوقی بیشتری دارد.
PoC در برابر اکسپلویت تسلیحاتی
| PoC | اکسپلویت تسلیحاتی | |
|---|---|---|
| هدف | اثبات وجود و اثر | بهرهبرداری قابل اتکا و تکرارشدنی در مقیاس |
| پایداری و خودکارسازی | لازم نیست | ویژگی اصلی |
| اثر تخریبی | عمداً حذف میشود | معمولاً بخشی از هدف |
| جای درست آن | گزارش تست نفوذ | خارج از دامنهی یک engagement مجاز |
«گزارش خوب باید اکسپلویت آماده و کارآمد داشته باشد.» نه. وظیفهی یک گزارش تست نفوذ اثبات ریسک و راهنمایی برای رفع است، نه تحویل ابزار حمله. تحویل اکسپلویت تسلیحاتی به مشتری، خودش یک ریسک تازه ایجاد میکند — آن فایل میتواند از سازمان خارج شود. باور غلط دوم هم برعکس آن است: «یافتهای که PoC ندارد هم میشود گزارش کرد». چنین موردی مشاهده است، نه یافتهی تأییدشده، و باید با همین برچسب و با شدت محافظهکارانه ثبت شود.
مرزهای قراردادی و قانونی
PoC نقطهای است که آزمون از «مشاهده» به «تعامل با اثر واقعی» میرود، و به همین دلیل بیشترین حساسیت حقوقی را دارد. چارچوبی که این کار را حرفهای میکند:
- مجوز کتبی و دامنهی مکتوب — داراییهای در دامنه، حسابهای آزمایشی، پنجرهی زمانی، و فهرست صریح اقدامات ممنوع. اینها در قرارداد تست نفوذ و قواعد اجرای آزمون ثبت میشوند.
- سقف اثر — تا کجا مجاز به اثبات هستید؟ مثلاً «اثبات دسترسی مجاز است، استخراج داده مجاز نیست» یا «اثبات اجرای کد با یک دستور بیاثر مجاز است، ایجاد پایداری ممنوع».
- مدیریت داده — هر شاهد حاوی دادهی واقعی باید ماسک، رمزنگاری و در پایان قرارداد حذف شود؛ نگهداری بیضابطهی شواهد، بدهی امنیتی شرکت آزمونگر است.
- مسیر تماس اضطراری — اگر PoC بهطور غیرمنتظره سرویس را تحت تأثیر قرار داد، تماس فوری و مستندسازی، بخشی از تعهد حرفهای است.
- پاکسازی — حذف فایلهای آپلودشده، حسابهای ساختهشده و رکوردهای آزمایشی، بههمراه فهرست آنها در گزارش.
در ادبیات استاندارد هم همین ساختار دیده میشود: راهنمای NIST SP 800-115 مرحلهی برنامهریزی، ملاحظات حقوقی، قواعد اجرا و مدیریت داده را بخشی از فرایند ارزیابی میداند، نه یک تشریفات اداری.
PoC و افشای مسئولانه
اگر آسیبپذیری کشفشده در محصول یک تأمینکنندهی ثالث باشد — یک افزونه، یک کتابخانه، یک محصول تجاری — قواعد تغییر میکند. آنجا موضوع دیگر یک قرارداد دوطرفه نیست و چارچوب درست افشای مسئولانه است:
- گزارش به تأمینکننده از مسیر رسمی امنیتی او، با جزئیات فنی کافی برای بازتولید.
- توافق بر یک بازهی زمانی معقول برای انتشار وصله.
- دریافت شناسهی CVE از CNA مربوطه، در صورت لزوم.
- عدم انتشار عمومی PoC پیش از دسترسپذیری وصله. و پس از آن هم، انتشار توضیح فنی مسئولانهتر از انتشار اکسپلویت آماده است.
در سمت مشتری هم همین منطق برقرار است: PoC داخل گزارش میماند، گزارش دادهی محرمانه است، و گردش آن باید محدود و قابل ردیابی باشد. این انتظام همان چیزی است که یک تست نفوذ وب حرفهای را از یک اسکن و ارسال خروجی خام متمایز میکند؛ اگر دربارهی دامنه و سطح اثبات مورد نیاز برای سازمان خود سؤالی دارید، مشاورهی امنیت نقطهی شروع درستی است.
پرسشهای متداول
تفاوت PoC و اکسپلویت چیست؟
PoC کمینهترین نمایش برای اثبات وجود آسیبپذیری و اثر آن است. اکسپلویت تسلیحاتی ابزاری است که برای بهرهبرداری قابل اتکا و در مقیاس ساخته شده و معمولاً پایداری و خودکارسازی دارد. گزارش تست نفوذ حرفهای اولی را دارد و دومی را تحویل نمیدهد.
آیا در تست نفوذ اجازهی استخراج داده برای اثبات وجود دارد؟
فقط در حدی که در قرارداد مشخص شده و معمولاً نه. رویهی درست این است که دسترسی با یک نمونهی ماسکشده یا با تعداد رکوردهای قابل دسترسی اثبات شود، نه با دانلود انبوه دادهی واقعی. استخراج انبوه، نه اثبات قویتری است و نه ریسک حقوقی کمتری دارد.
اگر یافتهای PoC نداشته باشد چه کنیم؟
آن را بهعنوان مشاهده ثبت کنید، نه یافتهی تأییدشده: مثلاً پیکربندی مشکوک یا نسخهی قدیمی کامپوننت که تأیید بهرهبرداری آن در دامنه یا زمان آزمون ممکن نبوده. شدت را محافظهکارانه بگذارید و صریح بنویسید چه چیزی تأیید شده و چه چیزی نشده.
آیا PoC را میتوان عمومی منتشر کرد؟
برای آسیبپذیری کد اختصاصی مشتری، خیر — گزارش دادهی محرمانه است. برای آسیبپذیری در محصول یک تأمینکننده، انتشار باید در چارچوب افشای مسئولانه و پس از دسترسپذیری وصله انجام شود؛ و حتی در آن حالت، انتشار توضیح فنی مسئولانهتر از انتشار اکسپلویت آماده است.