Các chuyên gia bảo mật tại JFrog đã phát hiện ra mối đe dọa 'prompt hijacking' khai thác các điểm yếu trong cách các hệ thống AI giao tiếp với nhau bằng cách sử dụng MCP.
Các chuyên gia bảo mật tại JFrog đã phát hiện ra mối đe dọa 'prompt hijacking' khai thác các điểm yếu trong cách các hệ thống AI giao tiếp với nhau bằng cách sử dụng MCP (Model Context Protocol).
Các nhà lãnh đạo doanh nghiệp muốn làm cho AI hữu ích hơn bằng cách trực tiếp sử dụng dữ liệu công ty và các công cụ. Nhưng, việc kết nối AI theo cách này cũng mở ra những rủi ro bảo mật mới, không nằm ở bản thân AI, mà ở cách mọi thứ được kết nối. Điều này có nghĩa là các CIO và CISO cần phải suy nghĩ về một vấn đề mới: giữ an toàn cho luồng dữ liệu cấp cho AI, giống như cách họ bảo vệ bản thân AI.
Các mô hình AI – dù chạy trên Google, Amazon hay trên các thiết bị cục bộ – đều có một vấn đề cơ bản: chúng không biết điều gì đang xảy ra ngay lúc này. Chúng chỉ biết những gì chúng được huấn luyện. Chúng không biết lập trình viên đang làm việc với mã nào hay có gì trong một tệp trên máy tính.
Các chuyên gia tại Anthropic đã tạo ra MCP để khắc phục điều này. MCP là một cách để AI kết nối với thế giới thực, cho phép nó sử dụng an toàn dữ liệu cục bộ và các dịch vụ trực tuyến. Đây là điều cho phép một trợ lý như Claude hiểu điều này có nghĩa gì khi bạn chỉ vào một đoạn mã và yêu cầu nó chỉnh sửa lại.
Tuy nhiên, nghiên cứu của JFrog cho thấy rằng một cách sử dụng MCP nhất định có điểm yếu prompt hijacking có thể biến công cụ AI mơ ước này thành một vấn đề bảo mật ác mộng.
Hãy tưởng tượng rằng một lập trình viên yêu cầu trợ lý AI đề xuất một công cụ Python tiêu chuẩn để xử lý hình ảnh. AI nên đề xuất Pillow, một lựa chọn tốt và phổ biến. Nhưng, do một lỗ hổng (CVE-2025-6515) trong hệ thống oatpp-mcp, ai đó có thể xâm nhập vào phiên của người dùng. Họ có thể gửi yêu cầu giả mạo của riêng mình và máy chủ sẽ coi đó là yêu cầu đến từ người dùng thật.
Vì vậy, lập trình viên nhận được một đề xuất không tốt từ trợ lý AI, giới thiệu một công cụ giả mạo có tên theBestImageProcessingPackage. Đây là một cuộc tấn công nghiêm trọng vào chuỗi cung ứng phần mềm. Ai đó có thể sử dụng prompt hijacking này để tiêm mã độc, đánh cắp dữ liệu hoặc chạy lệnh, tất cả trong khi trông giống như một phần hữu ích trong bộ công cụ của lập trình viên.
Cuộc tấn công prompt hijacking này làm rối loạn cách hệ thống giao tiếp bằng MCP, chứ không phải bảo mật của bản thân AI. Điểm yếu cụ thể được tìm thấy trong thiết lập MCP của hệ thống Oat++ C++, hệ thống này kết nối các chương trình với tiêu chuẩn MCP.
Vấn đề nằm ở cách hệ thống xử lý các kết nối bằng Server-Sent Events (SSE). Khi một người dùng thực kết nối, máy chủ sẽ cung cấp cho họ một ID phiên. Tuy nhiên, hàm bị lỗi sử dụng địa chỉ bộ nhớ của phiên trên máy tính làm ID phiên. Điều này đi ngược lại quy tắc của giao thức rằng các ID phiên phải là duy nhất và được bảo mật bằng mật mã.
Đây là một thiết kế tồi vì máy tính thường tái sử dụng địa chỉ bộ nhớ để tiết kiệm tài nguyên. Kẻ tấn công có thể lợi dụng điều này bằng cách nhanh chóng tạo và đóng nhiều phiên để ghi lại các ID phiên có thể dự đoán được này. Sau đó, khi một người dùng thực kết nối, họ có thể nhận được một trong các ID được tái sử dụng này mà kẻ tấn công đã có.
Khi kẻ tấn công có một ID phiên hợp lệ, chúng có thể gửi yêu cầu của riêng mình đến máy chủ. Máy chủ không thể phân biệt giữa kẻ tấn công và người dùng thực, vì vậy nó sẽ gửi các phản hồi độc hại trở lại kết nối của người dùng thực.
Ngay cả khi một số chương trình chỉ chấp nhận các phản hồi nhất định, kẻ tấn công vẫn thường có thể vượt qua điều này bằng cách gửi nhiều thông báo với các số sự kiện phổ biến cho đến khi một thông báo được chấp nhận. Điều này cho phép kẻ tấn công làm rối loạn hành vi của mô hình mà không cần thay đổi bản thân mô hình AI. Bất kỳ công ty nào sử dụng oatpp-mcp với HTTP SSE được bật trên mạng mà kẻ tấn công có thể truy cập đều có nguy cơ.
Việc phát hiện ra cuộc tấn công MCP prompt hijacking này là một lời cảnh báo nghiêm trọng cho tất cả các nhà lãnh đạo công nghệ, đặc biệt là các CISO và CTO, những người đang xây dựng hoặc sử dụng trợ lý AI. Khi AI ngày càng trở thành một phần trong quy trình làm việc của chúng ta thông qua các giao thức như MCP, nó cũng kéo theo những rủi ro mới. Giữ an toàn cho khu vực xung quanh AI hiện là ưu tiên hàng đầu.
Mặc dù CVE cụ thể này ảnh hưởng đến một hệ thống, nhưng ý tưởng về prompt hijacking là một khái niệm tổng quát. Để bảo vệ chống lại cuộc tấn công này và các cuộc tấn công tương tự, các nhà lãnh đạo cần đặt ra các quy tắc mới cho hệ thống AI của họ.
Đầu tiên, hãy đảm bảo tất cả các dịch vụ AI sử dụng quản lý phiên an toàn. Các nhóm phát triển cần đảm bảo máy chủ tạo ID phiên bằng cách sử dụng các bộ tạo ngẫu nhiên, mạnh. Đây phải là một mục bắt buộc trong bất kỳ danh sách kiểm tra bảo mật nào cho các chương trình AI. Việc sử dụng các định danh có thể dự đoán được như địa chỉ bộ nhớ là không chấp nhận được.
Thứ hai, tăng cường các biện pháp phòng thủ phía người dùng. Các chương trình máy khách nên được thiết kế để từ chối bất kỳ sự kiện nào không khớp với các ID và loại dự kiến. Các ID sự kiện đơn giản, tăng dần có nguy cơ bị tấn công kiểu "spraying" và cần được thay thế bằng các định danh không thể dự đoán được và không trùng lặp.
Cuối cùng, áp dụng các nguyên tắc không tin cậy (zero-trust) cho các giao thức AI. Các nhóm bảo mật cần kiểm tra toàn bộ thiết lập AI, từ mô hình cơ bản đến các giao thức và middleware kết nối nó với dữ liệu. Các kênh này cần có sự phân tách và hết hạn phiên mạnh mẽ, giống như quản lý phiên được sử dụng trong các ứng dụng web.
Cuộc tấn công MCP prompt hijacking này là một ví dụ hoàn hảo về việc một vấn đề đã biết trong ứng dụng web, cướp phiên (session hijacking), đang xuất hiện theo một cách mới và nguy hiểm trong AI. Bảo mật các công cụ AI mới này có nghĩa là áp dụng các nguyên tắc cơ bản bảo mật mạnh mẽ này để ngăn chặn các cuộc tấn công ở cấp giao thức.