یک آسیبپذیری از نوع تزریق دستورات SQL (SQL Injection) با شناسه CWE-89 در نسخه ۱.۰ سیستم سفارش غذای (Food Ordering System) محصول SourceCodester شناسایی شده است. این نقص امنیتی به مهاجمان اجازه میدهد تا از طریق پارامترهای مختلف، کوئریهای پایگاه داده را دستکاری کنند.
جزئیات فنی و نحوه حمله
این آسیبپذیری در فایل admin/add_category.php و در بخشی که به عنوان ‘Admin Write Handler’ شناخته میشود، قرار دارد. مهاجم میتواند با ارسال درخواستهای دستکاریشده به پارامترهایی نظیر title، description، price، current_image، featured، active و id، دستورات مخرب SQL را به پایگاه داده تزریق کند.
اگرچه بر اساس بردار CVSS 4.0، این حمله بدون نیاز به احراز هویت (PR:N) و با پیچیدگی کم (Low Complexity) توصیف شده است، اما از آنجایی که مسیر مورد نظر در پوشه /admin/ قرار دارد، در بسیاری از پیادهسازیها، داشتن دسترسی مدیریتی پیشنیاز اصلی برای بهرهبرداری خواهد بود. با این حال، در صورت عدم پیکربندی صحیح لایههای امنیتی، امکان حمله از راه دور وجود دارد.
میزان تأثیر و اهمیت
این آسیبپذیری دارای امتیاز شدت ۵.۵ (Medium) است. بر اساس ارزیابیها، تأثیر این حمله بر محرمانگی (Confidentiality)، یکپارچگی (Integrity) و در دسترس بودن (Availability) در سطح پایین (Low) برآورد شده است. اگرچه یک PoC (اثبات مفهوم) عمومی برای این آسیبپذیری وجود دارد، اما هنوز شواهدی مبنی بر بهرهبرداری گسترده یا خودکار از آن در محیطهای واقعی منتشر نشده است.
راهکارهای مقابله و رفع مشکل
در حال حاضر پَچ (Patch) رسمی از سوی سازنده منتشر نشده است، لذا استفاده از کنترلهای جبرانی توصیه میشود:
- اعمال احراز هویت سختگیرانه: دسترسی به مسیر
/admin/باید در سطح وبسرور یا Reverse Proxy با استفاده از پروتکلهای احراز هویت یا لیستهای سفید (Allowlist) محدود شود. - استفاده از WAF: پیادهسازی پچ مجازی (Virtual Patch) در سطح Web Application Firewall برای شناسایی و مسدود کردن کاراکترهای خاص SQL در پارامترهای مذکور.
- اصل حداقل دسترسی (Least Privilege): اطمینان حاصل شود که حساب کاربری پایگاه داده که اپلیکیشن از آن استفاده میکند، دارای کمترین سطح دسترسی ممکن باشد و اجازه تغییر در ساختار جداول (Schema) را نداشته باشد.
- غیرفعالسازی ماژولهای غیرضروری: اگر مدیریت دستهبندیها در حال حاضر مورد استفاده نیست، فایل
add_category.phpرا حذف یا غیرفعال کنید.