آخرین اخبار
همهٔ اخبار
امنیت وب و نرم‌افزار گزارش بحرانیت ۵/۱۰

نقص امنیتی در مکانیزم تایید کد SMS در پروژه ruoyi-vue-pro (CWE-307)

آسیب‌پذیری بحرانی در Google ADK برای Java؛ امکان کنترل عامل‌های محلی (Local Agents) از طریق صفحات وب مخرب

یک آسیب‌پذیری با شدت بالا (High) در سرور توسعه وب (ADK Web) متعلق به مجموعه Google ADK for Java کشف شده است. این نقص امنیتی به مهاجمان اجازه می‌دهد تا از طریق یک صفحه وب مخرب، با عامل‌های (Agents) محلی که توسط توسعه‌دهندگان در حال اجرا هستند، تعامل برقرار کرده و آن‌ها را کنترل کنند.

جزئیات فنی و مکانیزم حمله

این آسیب‌پذیری ناشی از دو پیکربندی نادرست در سرور توسعه است: عدم اعتبارسنجی منشأ (Origin Validation) در پروتکل WebSocket (CWE-1385) و سیاست‌های بسیار باز CORS (CWE-942). در نسخه‌های آسیب‌پذیر، نقطه انتهایی /run_live در WebSocket به صورت پیش‌فرض تمامی منشأها را می‌پذیرد. همچنین، از نسخه 0.4.0 به بعد، REST API نیز پاسخ Access-Control-Allow-Origin: * را ارسال می‌کند.

نکته کلیدی این است که از آنجایی که این سرور فاقد مکانیزم احراز هویت (Authentication) است، محدود کردن آن به localhost مانع از حمله نمی‌شود؛ زیرا درخواست‌های مخرب از طریق مرورگر خودِ توسعه‌دهنده و با استفاده از قابلیت‌های Cross-Origin ارسال می‌شوند.

سناریوی حمله

  • توسعه‌دهنده سرور ADK Web را به صورت محلی اجرا می‌کند.
  • توسعه‌دهنده در حین روشن بودن سرور، از یک صفحه وب تحت کنترل مهاجم بازدید می‌کند.
  • کد JavaScript موجود در صفحه مخرب، یک اتصال Cross-Origin به WebSocket و REST API ایجاد کرده و از طریق مرورگر، دستوراتی را به عامل محلی ارسال می‌کند.

مهاجم می‌تواند از این طریق جلسات (Sessions) و مصنوعات (Artifacts) را مشاهده، ایجاد یا حذف کرده و ابزارهای ثبت‌شده در عامل را فعال کند.

راهکارهای مقابله و رفع مشکل

ارتقای فوری: بهترین راهکار، ارتقای تمامی وابستگی‌های مربوط به Google ADK برای Java به نسخه 1.13.0 است. این نسخه با اعمال سیاست Same-Origin به صورت پیش‌فرض و جلوگیری از حملات DNS-rebinding، مشکل را به طور کامل برطرف کرده است.

اقدامات میانی (برای نسخه‌های 1.6.0 تا 1.12.0): اگر ارتقا بلافاصله امکان‌پذیر نیست، باید ویژگی adk.web.cors.origins را تنظیم کرده و تنها به لیست سفید (Allowlist) از منشأهای مورد اعتماد (مانند http://localhost:8000) محدود کنید.

به‌روزرسانی (اکتبر 25, 2026 — Vuln Today)

پروژه ruoyi-vue-pro با یک نقص امنیتی در بخش تایید کد SMS (SMS Code Verification) مواجه است که به مهاجمان بدون احراز هویت (Unauthenticated) اجازه می‌دهد از طریق حملات Brute-force، کدهای تایید را حدس بزنند.

این آسیب‌پذیری که با شناسه CWE-307 (عدم محدودسازی تلاش‌های مکرر برای احراز هویت) شناخته می‌شود، در متد validateSmsCode0 در فایل SmsCodeServiceImpl.java قرار دارد. در این بخش، سیستم هیچ محدودیتی برای تعداد دفعات تلاش برای وارد کردن کد صحیح اعمال نمی‌کند. با این حال، به دلیل کوتاه بودن بازه زمانی اعتبار کدها، پیچیدگی حمله (Attack Complexity) بالا ارزیابی شده و موفقیت در حدس زدن کد قبل از انقضا دشوار است.

بر اساس تحلیل‌های انجام شده، تأثیر این نقص بر محرمانگی (Confidentiality) در سطح پایین (Low) قرار دارد و تأثیری بر یکپارچگی (Integrity) یا در دسترس بودن (Availability) سیستم ندارد. امتیاز CVSS 4.0 برای این آسیب‌پذیری 2.9 (Low) محاسبه شده است.

تا لحظه انتشار این گزارش، سازنده پاسخی به گزارش‌های منتشر شده نداده و نسخه اصلاح‌شده‌ای (Patch) ارائه نشده است. بنابراین، مدیران سیستم توصیه می‌شود اقدامات حفاظتی زیر را در نظر بگیرند:

  • اعمال Rate Limiting بر روی اندپوینت‌های مربوط به SMS (بر اساس IP یا شماره تلفن).
  • استفاده از چالش‌های CAPTCHA قبل از ارسال درخواست تایید کد.
  • کوتاه کردن بازه زمانی اعتبار کدها و افزایش طول آن‌ها (حداقل ۶ رقم).
  • در صورت عدم نیاز، سرویس تایید کد SMS را به‌طور کامل غیرفعال کنید.

جمع‌بندی موارد گزارش‌شده IBM

  • Sterling B2B Integrator — Information Disclosure — CVE-2026-107858
  • Sterling B2B Integrator — Information Disclosure — CVE-2026-116007