اصطلاح "Defensive Bug" (باگ دفاعی) در زمینه امنیت نرمافزار معمولاً به مفهومی به نام «Chaff Bugs» (باگهای فریبنده یا کاه) اشاره دارد. این یک تکنیک دفاعی غیرمتعارف است که در آن بهجای حذف باگها، تعداد زیادی باگ غیرقابلبهرهبرداری (non-exploitable) بهصورت عمدی در کد برنامه تزریق میشود تا مهاجمان را گیج و منابعشان را هدر دهد.
منطق این تکنیک بر اساس عدم تقارن بین مهاجم و مدافع است:
* مهاجم فقط باید یک آسیبپذیری واقعی و قابلبهرهبرداری را پیدا کند تا به سیستم نفوذ کند.
* مدافع باید همه آسیبپذیریها را مسدود کند.
با تزریق هزاران باگ بیضرر، مهاجم یا ابزارهای خودکار او با احتمال بسیار بالا به این باگهای تلهای برخورد میکنند و زمان و منابع خود را صرف تحلیل و ساخت اکسپلویت برای آنها میکنند، در حالی که این باگها هیچ ارزش واقعی برای نفوذ ندارند.
پژوهشگران دانشگاه نیویورک این روش را روی نرمافزارهای واقعی مانند NGINX و LIBFLAC آزمایش کردهاند. آنها با موفقیت هزاران باگ غیرقابلبهرهبرداری را در این برنامهها تزریق کردند، بدون اینکه عملکرد عادی نرمافزار مختل شود. نکته جالب این است که این باگهای تلهای حتی برای ابزارهای تحلیل امنیتی خودکار نیز قابلبهرهبرداری به نظر میرسند، بنابراین هم مهاجمان انسانی و هم رباتهای جستجوی باگ را فریب میدهند.
نباید Defensive Bug را با Defensive Programming (برنامهنویسی تدافعی) اشتباه گرفت. برنامهنویسی تدافعی یک رویکرد پیشگیرانه است که در آن کد بهگونهای نوشته میشود که در برابر ورودیهای نامعتبر و شرایط غیرمنتظره مقاوم باشد (مثلاً با اعتبارسنجی ورودیها و بررسی شرایط مرزی). در مقابل، Chaff Bugs یک تکنیک واکنشی و فریبنده در لایه امنیت است که فرض را بر وجود باگ میگذارد و سعی میکند هزینه حمله را برای مهاجم افزایش دهد.
اگر منتا دقیقتر راهنمایی کنم.