یک آسیبپذیری از نوع Path Traversal (CWE-22) در ابزار mcp-atlassian شناسایی شده است که میتواند منجر به خواندن خودسرانه فایلهای حساس (Arbitrary File Read) و استخراج آنها (Exfiltration) از سیستم میزبان شود.
جزئیات فنی و نحوه حمله
این آسیبپذیری در تابع validate_safe_path در فایل src/mcp_atlassian/utils/io.py ریشه دارد. مشکل اصلی اینجاست که این تابع، مسیرهای امن را تنها بر اساس مسیر کاری فعلی (Current Working Directory یا CWD) فرآیند بررسی میکند. اگر سرور در یک مسیر گسترده مانند ریشه سیستم (/) یا دایرکتوری Home کاربر اجرا شود، مهاجم میتواند با استفاده از ابزار confluence_upload_attachment، مسیرهای مطلق (Absolute Paths) فایلهای حساس را فراخوانی کند.
مهاجم که باید یک کاربر احراز هویت شده (Authenticated) در پروتکل MCP باشد، میتواند فایلهایی نظیر موارد زیر را به Confluence خود منتقل کند:
- فایلهای سیستم مانند
/etc/passwd - فایلهای محیطی
.envکه حاوی توکنهای API هستند. - فایلهای
/proc/self/environکه شامل توکنهای حساس Atlassian (مانند JIRA_API_TOKEN) میباشند. - کلیدهای SSH و سایر فایلهای حساس سیستم.
شرایط انتشار و محدودیتها
این آسیبپذیری در تمامی حالتها قابل بهرهبرداری نیست و به شرایط زیر بستگی دارد:
- استفاده از پروتکلهای انتقال از راه دور مانند streamable-http یا SSE.
- اجرای فرآیند سرور از یک مسیر کاری گسترده (مانند سرویسهای systemd که
WorkingDirectoryآنها تنظیم نشده است).
لازم به ذکر است که استفاده از ایمیج رسمی Docker که مسیر کاری آن روی /app ثابت شده است، از این آسیبپذیری در امان است.
راهکارهای مقابله و رفع مشکل
برای رفع این مشکل، اقدامات زیر توصیه میشود:
- ارتقای نسخه: سریعترین راه، بهروزرسانی mcp-atlassian به نسخه 0.24.1 یا بالاتر است.
- کنترلهای جبرانی: اگر ارتقا بلافاصله امکانپذیر نیست، باید مسیر کاری (Working Directory) فرآیند را در تنظیمات
systemdمحدود کرد یا سرور را از یک دایرکتوری اختصاصی و خالی اجرا نمود. - استفاده از کانتینر: استفاده از راهکارهای مبتنی بر Docker که مسیر کاری را محدود میکنند، یک لایه حفاظتی موثر است.