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

آسیب‌پذیری دور زدن احراز هویت در OpenHands؛ امکان دسترسی غیرمجاز در شبکه‌های محلی

آسیب‌پذیری دور زدن احراز هویت در OpenHands؛ امکان دسترسی غیرمجاز در شبکه‌های محلی

یک آسیب‌پذیری از نوع دور زدن احراز هویت (Authentication Bypass) در نسخه‌های تا 1.24.0 نرم‌افزار OpenHands شناسایی شده است. این نقص امنیتی که با شناسه CVE-2026-122236 شناخته می‌شود، به مهاجم اجازه می‌دهد تا در صورت حضور در همان شبکه محلی (LAN)، بدون نیاز به هیچ‌گونه اعتبارنامه‌ای به مرکز کنترل (Control Center) این ابزار دسترسی پیدا کند.

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

مشکل اصلی در نحوه پیکربندی شنونده‌های (Listeners) محلی در فایل‌های scripts/static-server.mjs و scripts/ingress.mjs نهفته است. در نسخه‌های آسیب‌پذیر، این سرویس‌ها به صورت پیش‌فرض روی تمامی اینترفیس‌ها (Dual-stack ::) تنظیم شده‌اند. این موضوع باعث می‌شود که سرویس نه تنها به درخواست‌های داخلی (Loopback)، بلکه به درخواست‌های سایر دستگاه‌های موجود در شبکه محلی نیز پاسخ دهد.

علاوه بر این، در حالت Local Mode، سیستم به طور خودکار یک کلید نشست (Session Key) را در کدهای HTML ارائه شده تزریق (Inject) می‌کند. یک مهاجم که در همان بخش شبکه (Adjacent Network) قرار دارد، می‌تواند با دریافت این کلید، مستقیماً به صفحه فرود (Landing Page) دسترسی پیدا کند که این امر با استاندارد CWE-306 (عدم احراز هویت برای توابع حیاتی) مطابقت دارد.

ارزیابی ریسک و تاثیرات

با توجه به امتیاز CVSS 2.1، سطح تاثیر این آسیب‌پذیری بر محرمانگی، یکپارچگی و در دسترس بودن (C/I/A) پایین ارزیابی شده است. از آنجایی که این حمله نیازمند حضور در شبکه محلی است و از طریق اینترنت قابل مسیریابی نیست، اولویت پاسخگویی آن در سطح پایین قرار دارد. با این حال، وجود یک PoC (اثبات مفهوم) عمومی در GitHub، ضرورت بررسی محیط‌های توسعه را دوچندان می‌کند.

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

  • به‌روزرسانی فوری: بهترین راهکار، ارتقای OpenHands به نسخه 1.25.0 است که این مشکل را به طور کامل برطرف کرده است.
  • محدودسازی اینترفیس‌ها: در صورت عدم امکان ارتقا، شنونده‌ها را به صورت دستی فقط به 127.0.0.1 محدود کنید تا از دسترسی سایر دستگاه‌های شبکه جلوگیری شود.
  • استفاده از پارامترهای خاص: هنگام اجرای سرویس، از فلگ --host 0.0.0.0/OH_BIND_HOST استفاده کنید تا از تزریق خودکار کلید نشست جلوگیری شود.
  • تنظیمات Docker: در محیط‌های کانتینری، پورت‌ها را به جای 8000:8000 به صورت 127.0.0.1:8000:8000 منتشر کنید.