Nghiên cứu bảo mật gần đây đã chỉ ra một mối đe dọa an ninh mạng đáng kể thông qua việc khai thác thành công các lỗ hổng trong Background Agents của Cursor, dẫn đến việc truy cập trái phép vào một phiên bản Amazon EC2. Sự cố này làm nổi bật những rủi ro nghiêm trọng liên quan đến các ứng dụng SaaS tích hợp sâu với hạ tầng điện toán đám mây, cung cấp cái nhìn sâu sắc về các kẽ hở tiềm ẩn ngay cả trong các môi trường được cấu hình cẩn thận.
Phát hiện ban đầu và Điểm đột phá khai thác
Ban đầu, các nhà nghiên cứu đã nhận thấy các hoạt động Docker đáng ngờ trong quá trình khởi tạo Background Agents của Cursor. Điều này ngay lập tức thúc đẩy một cuộc điều tra sâu hơn về bản chất và mục đích của các hoạt động này. Điểm đột phá quan trọng đến khi họ phát hiện ra một nút “Show Terminal” (Hiển thị Terminal) trong giao diện người dùng (UI) của Cursor. Tính năng này, ban đầu được thiết kế cho mục đích gỡ lỗi và minh bạch, lại cung cấp quyền truy cập trực tiếp vào dòng lệnh của một máy từ xa, thay vì môi trường cục bộ như mong đợi. Khả năng truy cập từ xa này đã tạo ra một cổng vào không lường trước được. Thông qua quyền truy cập terminal này, các nhà nghiên cứu đã thực thi thành công các lệnh trên hạ tầng từ xa, thiết lập điểm đặt chân đầu tiên vào kiến trúc hệ thống cơ bản. Điều đáng chú ý là người dùng ubuntu trên máy bị xâm nhập có các đặc quyền nâng cao theo thiết kế, vốn cần thiết để agent của Cursor có thể kéo các gói và cài đặt các dependencies. Chính việc cấp phát đặc quyền mặc định này đã tạo điều kiện thuận lợi cho bước đầu của quá trình khai thác.
Phân tích hạ tầng kỹ thuật chuyên sâu và Leo thang đặc quyền
Sau khi đạt được quyền truy cập root trong phiên bản Docker được điều phối, các nhà nghiên cứu đã tiến hành liệt kê chi tiết toàn diện bằng cách sử dụng các công cụ kiểm thử thâm nhập chuyên biệt như Linpeas.sh. Linpeas.sh là một script phổ biến được thiết kế để tìm kiếm các con đường leo thang đặc quyền tiềm năng trên các hệ thống Linux, bằng cách kiểm tra các cấu hình hệ thống, dịch vụ chạy, quyền file, và nhiều yếu tố khác. Quá trình này đã tiết lộ những thông tin quan trọng về cách thức điều phối agent nền của Cursor và cấu trúc hạ tầng cơ bản.
Một phát hiện quan trọng là việc agent đã sử dụng một Server-to-Server token để xác thực với GitHub. Token này cho phép agent thực hiện các hành động như commit mã nguồn và tự định danh là “Cursor Agent”. Đặc biệt, token này được giới hạn trong các kho lưu trữ của người dùng (user repositories), nhưng vẫn tiềm ẩn các vector lạm dụng nghiêm trọng cho việc truy cập kho lưu trữ trái phép. Điều này có thể dẫn đến việc chèn mã độc, đánh cắp mã nguồn, hoặc giả mạo danh tính của agent trong các hoạt động liên quan đến kho mã.
Phân tích hạ tầng còn cho thấy sự hiện diện của các thành phần máy chủ và máy khách Node.js thực hiện các hành động cần thiết như một phần chức năng của Agent, bao gồm cả các hoạt động thu thập dữ liệu (crawling operations). Phiên bản EC2 được cấp phát dung lượng lưu trữ lớn lên đến 1TB trong AWS, sử dụng một artifactory ảnh Docker tùy chỉnh để điều phối quy trình triển khai và cập nhật của agent. Với quyền truy cập root trong một phiên bản Docker được điều phối chạy trên máy AWS, các nhà nghiên cứu đã có thể khai thác một cơ chế cốt lõi của Docker: volume mounting.
Khai thác Volume Mounting và Chiếm quyền điều khiển Host Machine
Thông qua việc khám phá cơ chế volume mounting, các nhà nghiên cứu đã xác định rằng máy chủ vật lý (host machine) đã chia sẻ các volume của chính nó với phiên bản Docker. Điều này có nghĩa là một phần hoặc toàn bộ hệ thống file của host machine được mount (gắn kết) và có thể truy cập được từ bên trong container Docker. Với đặc quyền root đã đạt được bên trong container, họ có thể ghi vào bất kỳ vị trí nào trong các volume được chia sẻ này. Điều này mở ra một con đường rõ ràng và trực tiếp để leo thang đặc quyền từ bên trong container Docker ra máy chủ vật lý – một kịch bản tấn công nguy hiểm trong môi trường containerized khi cấu hình không an toàn.
Với quyền truy cập root từ phiên bản Docker và quyền ghi vào bộ nhớ chia sẻ trên host, các nhà nghiên cứu đã thực hiện các bước sau để đạt được quyền kiểm soát hoàn toàn máy chủ vật lý:
- Tạo cặp khóa SSH mới: Sử dụng lệnh
ssh-keygen, họ đã tạo một cặp khóa SSH (khóa riêng tư và khóa công khai) trong môi trường Docker bị xâm nhập. - Ghi khóa công khai vào
authorized_keys: Khóa công khai vừa tạo sau đó được ghi vào tệp/root/.ssh/authorized_keystrên hệ thống file của máy chủ vật lý, thông qua đường dẫn volume được mount. Tệp này kiểm soát quyền truy cập SSH không mật khẩu vào tài khoản root của máy chủ. - Truy cập SSH trực tiếp: Cuối cùng, họ đã sử dụng khóa riêng tư vừa tạo để truy cập SSH trực tiếp vào máy chủ vật lý tại địa chỉ IP 172.17.0.1.
Các lệnh khái quát dưới đây minh họa quy trình khai thác này:
# Bước 1: Tạo cặp khóa SSH mới trong môi trường Docker bị xâm nhập
# Sử dụng /tmp để lưu trữ tạm thời cặp khóa, -N "" để không yêu cầu passphrase
ssh-keygen -t rsa -b 4096 -f /tmp/id_rsa_exploit -N ""
# Bước 2: Hiển thị khóa công khai vừa tạo
cat /tmp/id_rsa_exploit.pub
# Kết quả sẽ là một chuỗi khóa công khai dài, ví dụ:
# ssh-rsa AAAAB3Nz... root@exploit-machine
# Bước 3: Ghi khóa công khai vào authorized_keys trên host machine thông qua volume mount
# Giả sử /mnt/host_root là điểm mount của thư mục /root của host machine trong container Docker.
# Đường dẫn chính xác có thể khác tùy thuộc vào cách volume được cấu hình.
echo "ssh-rsa AAAAB3Nz... root@exploit-machine" >> /mnt/host_root/.ssh/authorized_keys
# Bước 4: Từ một máy tấn công bên ngoài, SSH trực tiếp vào host machine sử dụng khóa riêng vừa tạo
# Thay thế /path/to/id_rsa_exploit bằng đường dẫn đến khóa riêng tư vừa tạo
ssh -i /path/to/id_rsa_exploit [email protected]
Sự cố này làm nổi bật các lỗ hổng nghiêm trọng trong các ứng dụng máy tính để bàn có quyền truy cập sâu vào hạ tầng điện toán đám mây. Mặc dù các nhà nghiên cứu nhấn mạnh rằng các quyền máy, vai trò AWS và cấu hình VPC của Cursor đã được xác định rõ ràng và hạn chế chặt chẽ, nhưng tiềm năng leo thang đặc quyền thông qua các mối quan hệ tin cậy và cấu hình không chuẩn vẫn là một rủi ro bảo mật hệ thống đáng lo ngại.
Hậu quả tiềm tàng và Bài học bảo mật quan trọng
Việc kiểm soát hoàn toàn máy chủ AWS EC2, cùng với các Server-to-Server token của GitHub được giới hạn phạm vi, tạo ra tiềm năng cho các hoạt động độc hại nghiêm trọng. Những hoạt động này có thể bao gồm từ việc khai thác tiền điện tử (cryptocurrency mining) trái phép, sử dụng tài nguyên điện toán của nạn nhân cho mục đích xấu, đến việc trích xuất dữ liệu nhạy cảm (data exfiltration) từ các kho lưu trữ GitHub hoặc bất kỳ dữ liệu nào khác trên hệ thống bị chiếm quyền. Điều này cho thấy rằng ngay cả khi các biện pháp kiểm soát truy cập và phân quyền được thực hiện nghiêm ngặt ở cấp độ hạ tầng, một lỗ hổng trong logic ứng dụng hoặc cấu hình môi trường không an toàn có thể làm suy yếu toàn bộ chuỗi bảo mật.
Sự cố này cũng là một lời nhắc nhở quan trọng về tầm quan trọng của việc kiểm tra bảo mật kỹ lưỡng đối với các ứng dụng tích hợp sâu với môi trường đám mây. Các điểm giao thoa giữa ứng dụng SaaS và hạ tầng đám mây thường là nơi phát sinh các lỗ hổng phức tạp mà các phương pháp kiểm tra truyền thống có thể bỏ sót. Việc kiểm tra định kỳ các cấu hình Docker, quản lý volume, và quyền truy cập của các agent là cực kỳ cần thiết để ngăn chặn các cuộc tấn công leo thang đặc quyền tương tự. Đặc biệt, nguyên tắc đặc quyền tối thiểu (principle of least privilege) cần được áp dụng nghiêm ngặt: mỗi thành phần hoặc dịch vụ chỉ nên có quyền truy cập tối thiểu cần thiết để thực hiện chức năng của mình, không hơn. Điều này giúp giảm thiểu bề mặt tấn công và hạn chế thiệt hại trong trường hợp một phần hệ thống bị xâm phạm.
Mặc dù nhóm bảo mật của Cursor đã xác nhận rằng các biện pháp bảo vệ đã được áp dụng để ngăn chặn việc lạm dụng sau khi lỗ hổng được công bố, vụ việc này vẫn là một ví dụ điển hình cho thấy mức độ phức tạp và tinh vi của các cuộc tấn công nhắm vào các chuỗi cung ứng phần mềm và hạ tầng đám mây tích hợp. Để đối phó với những thách thức này, các tổ chức cần liên tục cập nhật các tin tức bảo mật mới nhất, thực hiện đánh giá rủi ro kỹ lưỡng và kiểm thử thâm nhập (penetration testing) định kỳ để xác định và khắc phục các điểm yếu tiềm ẩn trước khi chúng bị những kẻ tấn công khai thác. Việc đầu tư vào an ninh từ giai đoạn thiết kế (security by design) và theo dõi liên tục là chìa khóa để duy trì một tư thế an ninh mạng vững chắc.










