یک آسیبپذیری امنیتی در لایه ORM فریمورک C++ موسوم به Drogon شناسایی شده است که امکان اجرای حملات SQL Injection را فراهم میکند. این نقص امنیتی در تابع Mapper::orderBy در فایل Mapper.h و در نسخههای تا 1.9.13 مشاهده شده است.
تحلیل فنی آسیبپذیری
این مشکل زمانی رخ میدهد که برنامه ورودیهای غیرمعتبر (Untrusted Input) را بدون اعتبارسنجی مناسب به متد orderBy ارسال کند. مهاجم میتواند از طریق دستکاری آرگومان sort در نقاط انتهایی (Endpoints) مربوط به لیست یا جستجو، دستورات SQL دلخواه خود را تزریق نماید. با توجه به اینکه این نقص در سطح کتابخانه (Library Defect) است، تنها برنامههایی در معرض خطر هستند که ورودی کاربر را مستقیماً به این تابع پاس میدهند.
جزئیات دسترسی و اثرات
- نوع حمله: از راه دور و بدون نیاز به احراز هویت (Remote Unauthenticated).
- تأثیرات: استخراج دادههای حساس از پایگاه داده (Data Exfiltration).
- وضعیت اکسپلویت: کد اکسپلویت (Exploit) به صورت عمومی منتشر شده است.
راهکارهای پیشگیرانه
برای مقابله با این تهدید، توسعهدهندگانی که از این فریمورک استفاده میکنند باید از ارسال مستقیم ورودیهای کاربر به توابع ORM خودداری کرده و از روشهای Hardcoding یا Whitelisting برای ستونهای مورد نیاز در عملیات مرتبسازی (Sort) استفاده کنند.