یک آسیبپذیری از نوع SQL Injection با شناسه CVE-2026-109607 در سیستم آزمون آنلاین (Online Exam System) نسخه 1.0 محصول SourceCodester شناسایی شده است. این نقص امنیتی به مهاجمان اجازه میدهد بدون نیاز به احراز هویت، دسترسی غیرمجاز به پایگاه داده به دست آورند.
جزئیات فنی و بردار حمله
این آسیبپذیری در هندلر ورود (Login Handler) پیش از احراز هویت، در مسیر adminpanel/admin/query/loginExe.php رخ میدهد. ریشه این مشکل (Root Cause) در عدم پاکسازی ورودیها (Improper Neutralization) است که باعث میشود مقادیر ارسالی در پارامترهای username و pass مستقیماً در کوئریهای SQL ادغام شوند.
- بردار حمله: از طریق شبکه (Network) و بدون نیاز به تعامل کاربر (UI:N).
- سطح دسترسی: بدون نیاز به احراز هویت (PR:N).
- پیامد: امکان دور زدن فرآیند ورود (Authentication Bypass) و استخراج دادههای حساس از دیتابیس.
ارزیابی ریسک
با وجود اینکه نمره CVSS 4.0 این آسیبپذیری 6.9 (Medium) تعیین شده است، اما وجود کد اکسپلویت (PoC) در منابعی مانند VulDB و tracexlabs ریسک عملیاتی را افزایش داده است. با این حال، تا این لحظه شواهدی مبنی بر بهرهبرداری گسترده در محیطهای واقعی (In the wild) یا ثبت آن در لیست CISA KEV مشاهده نشده است.
راهکارهای مقابله و اصلاح
با توجه به اینکه وصله (Patch) رسمی از سوی سازنده منتشر نشده است، توصیههای زیر برای مدیران SOC و مهندسان امنیت پیشنهاد میشود:
- اصلاح کد: بازنویسی کوئریهای مربوط به ورود با استفاده از Parameterized Queries یا Prepared Statements (مانند PDO در PHP).
- کنترلهای جبرانی: قرار دادن پنل مدیریت در پشت یک VPN یا محدود کردن دسترسی به IPهای مجاز (Allowlist).
- استفاده از WAF: پیادهسازی قوانینی در Web Application Firewall برای شناسایی و مسدود کردن کاراکترهای خاص SQL (مانند UNION یا SELECT) در درخواستهای POST به مسیر مذکور.
- محدود کردن سطح دسترسی دیتابیس: اجرای اپلیکیشن با کاربری دیتابیس که دارای حداقل دسترسیهای لازم است تا اثرات احتمالی حمله (Blast Radius) کاهش یابد.
بهروزرسانی (اکتبر 13, 2026 — Vuln Today)
بهروزرسانی: جزئیات فنی جدیدی در رابطه با یک آسیبپذیری SQL Injection در نرمافزار SourceCodester Art Gallery Management System (نسخه 1.0) منتشر شده است که با شناسه CVE-2026-109606 ثبت شده است. این نقص امنیتی در تابع `Action::save_user` و در فایل `admin/admin_class.php` رخ میدهد و به مهاجم اجازه میدهد از طریق پارامتر `Name` در بخش ایجاد حساب کاربری، دستورات SQL دلخواه را تزریق کند.
با توجه به اینکه این آسیبپذیری به صورت Pre-authentication است، مهاجمان بدون نیاز به نام کاربری یا رمز عبور میتوانند به این نقطه دسترسی پیدا کنند. در حال حاضر یک Proof-of-Concept (PoC) عمومی برای این مورد منتشر شده است که امکان ایجاد حساب مدیریت (Admin) را بدون احراز هویت فراهم میکند. با این حال، به دلیل ماهیت آموزشی و محدود بودن کاربرد این نرمافزار، احتمال بهرهبرداری گسترده در محیطهای سازمانی پایین ارزیابی میشود.
برای رفع این مشکل، توصیه میشود توسعهدهندگان از Parameterized Queries (مانند استفاده از PDO یا mysqli با bound parameters) برای مدیریت ورودیها استفاده کنند. به عنوان اقدامات جبرانی فوری، محدود کردن دسترسی به دایرکتوری `/admin/` از طریق WAF یا VPN و اعمال پالیسیهای سختگیرانه برای فیلتر کردن کاراکترهای خاص SQL در پارامترهای ورودی توصیه میگردد.