Các nhà nghiên cứu an ninh mạng đã công bố chi tiết về một lỗ hổng đã được vá trong máy chủ Model Context Protocol (MCP) phổ biến của figma-developer-mcp, có thể cho phép kẻ tấn công thực thi mã.
Lỗ hổng, được theo dõi là CVE-2025-53967 (điểm CVSS: 7.5), là một lỗi command injection xuất phát từ việc sử dụng input của người dùng không được làm sạch, mở ra kịch bản mà kẻ tấn công có thể gửi các lệnh hệ thống tùy ý.
"Máy chủ xây dựng và thực thi các lệnh shell bằng cách sử dụng input của người dùng chưa được xác thực trực tiếp trong các chuỗi lệnh dòng lệnh. Điều này tạo ra khả năng chèn ký tự đặc biệt của shell (ví dụ: |, >, &&, v.v.)," theo một thông báo của GitHub về lỗ hổng. "Khai thác thành công có thể dẫn đến thực thi mã từ xa dưới quyền của tiến trình máy chủ."
Với việc máy chủ Framelink Figma MCP cung cấp nhiều công cụ để thực hiện các hoạt động trong Figma bằng các tác nhân mã hóa hỗ trợ bởi trí tuệ nhân tạo (AI) như Cursor, kẻ tấn công có thể lừa client MCP thực hiện các hành động không mong muốn thông qua hình thức indirect prompt injection.
Công ty an ninh mạng Imperva, đơn vị đã phát hiện và báo cáo vấn đề vào tháng 7 năm 2025, mô tả CVE-2025-53967 là một "sơ suất trong thiết kế" ở cơ chế dự phòng có thể cho phép các tác nhân xấu đạt được thực thi mã từ xa hoàn toàn, khiến các nhà phát triển gặp rủi ro bị lộ dữ liệu.
"Lỗ hổng command injection xảy ra trong quá trình xây dựng một lệnh dòng lệnh được sử dụng để gửi traffic đến endpoint Figma API," nhà nghiên cứu bảo mật Yohann Sillam cho biết.
Trình tự khai thác
Trình tự khai thác diễn ra qua các bước:
- Client MCP gửi yêu cầu Initialize đến endpoint MCP để nhận một mcp-session-id được sử dụng trong các giao tiếp tiếp theo với máy chủ MCP.
- Client gửi yêu tập JSONRPC đến máy chủ MCP với phương thức tools/call để gọi các công cụ như get_figma_data hoặc download_figma_images.
Vấn đề, về cốt lõi, nằm trong "src/utils/fetch-with-retry.ts," nơi đầu tiên cố gắng lấy nội dung bằng cách sử dụng API fetch tiêu chuẩn và, nếu thất bại, sẽ tiếp tục thực thi lệnh curl thông qua child_process.exec -- điều này gây ra lỗ hổng command injection.
"Vì lệnh curl được xây dựng bằng cách nội suy trực tiếp các giá trị URL và header vào một chuỗi lệnh shell, một tác nhân độc hại có thể tạo ra một URL hoặc giá trị header được thiết kế đặc biệt để chèn các lệnh shell tùy ý," Imperva cho biết. "Điều này có thể dẫn đến remote code execution (RCE) trên máy chủ."
Trong một cuộc tấn công proof-of-concept, một tác nhân xấu từ xa trên cùng một mạng (ví dụ: Wi-Fi công cộng hoặc một thiết bị doanh nghiệp bị xâm nhập) có thể kích hoạt lỗ hổng bằng cách gửi một loạt các yêu cầu đến MCP dễ bị tấn công. Thay vào đó, kẻ tấn công có thể lừa nạn nhân truy cập một trang web được tạo đặc biệt như một phần của cuộc tấn công DNS rebinding.
Lỗ hổng đã được khắc phục trong phiên bản 0.6.3 của figma-developer-mcp, được phát hành vào ngày 29 tháng 9 năm 2025. Để giảm thiểu, nên tránh sử dụng child_process.exec với input không đáng tin cậy và chuyển sang child_process.execFile để loại bỏ rủi ro diễn giải shell.
"Khi các công cụ phát triển dựa trên AI tiếp tục phát triển và được áp dụng rộng rãi, điều cần thiết là các cân nhắc về an ninh phải song hành với sự đổi mới," công ty thuộc sở hữu của Thales cho biết. "Lỗ hổng này là một lời nhắc nhở rõ ràng rằng ngay cả các công cụ được thiết kế để chạy cục bộ cũng có thể trở thành điểm xâm nhập mạnh mẽ cho kẻ tấn công."
Sự phát triển này diễn ra khi FireTail tiết lộ rằng Google đã chọn không sửa một cuộc tấn công ASCII smuggling mới trong chatbot AI Gemini của mình, có thể được vũ khí hóa để tạo ra các input có thể lọt qua các bộ lọc bảo mật và gây ra các phản hồi không mong muốn. Các mô hình ngôn ngữ lớn (LLMs) khác dễ bị tấn công này là DeepSeek và Grok của xAI.
"Và lỗ hổng này đặc biệt nguy hiểm khi các LLMs, như Gemini, được tích hợp sâu vào các nền tảng doanh nghiệp như Google Workspace," công ty cho biết. "Kỹ thuật này cho phép giả mạo danh tính tự động và đầu độc dữ liệu có hệ thống, biến một lỗ hổng giao diện người dùng thành một cơn ác mộng bảo mật tiềm ẩn."