Lỗ hổng CVE nguy hiểm trong Angular VS Code

Lỗ hổng CVE nguy hiểm trong Angular VS Code

Lỗ hổng CVE trong Angular Language Service Visual Studio Code extension (Angular.ng-template) đang tạo ra nguy cơ remote code execution (RCE) đối với môi trường phát triển. Các vấn đề này xuất phát từ cách xử lý không an toàn với dữ liệu do người dùng kiểm soát và cơ chế nạp cấu hình không được xác thực đúng cách.

Cơ chế khai thác và tác động của lỗ hổng CVE

Nhà nghiên cứu cho biết kẻ tấn công có thể lợi dụng các quy trình phát triển vốn được tin cậy, như mở dự án hoặc xem mã nguồn, để thực thi lệnh tùy ý trên hệ thống của lập trình viên. Đây là một lỗ hổng CVE có thể bị khai thác theo nhiều đường dẫn khác nhau.

Một trong các vectơ tấn công chính là JSDoc hover-based command injection. Extension cấu hình công cụ dựng Markdown với thiết lập isTrusted: true, cho phép thực thi các command URI nhúng trong nội dung được render. Tuy nhiên, Angular language server không làm sạch đầy đủ comment JSDoc trước khi chuyển cho bộ render.

Kết quả là kẻ tấn công có thể chèn một comment JSDoc độc hại trong file TypeScript hoặc JavaScript, chứa liên kết lệnh. Khi lập trình viên di chuột lên symbol bị ảnh hưởng và nhấp vào liên kết, lệnh nhúng sẽ chạy trực tiếp trên máy chủ.

Khai thác tsdk và bypass Workspace Trust

Đường tấn công thứ hai liên quan đến cấu hình TypeScript SDK (tsdk). Extension đọc trực tiếp các thiết lập liên quan đến tsdk từ file .vscode/settings.json trong workspace mà không kiểm tra trạng thái trust của workspace hoặc yêu cầu xác nhận từ người dùng.

Sau đó, đường dẫn này được chuyển tới background language server, nơi file tsserverlibrary.js được tải động bằng Node.js require(). Nếu kẻ tấn công đặt một file tsserverlibrary.js độc hại trong thư mục dự án và tham chiếu nó qua cấu hình workspace, mã độc sẽ được thực thi ngay khi dự án được mở.

Đây là điểm đáng chú ý trong bối cảnh cảnh báo CVE này: cơ chế đã bypass VS Code Workspace Trust model, vốn được thiết kế để ngăn thực thi mã không đáng tin cậy.

Mô hình kích hoạt khai thác

  • Tsdk-based attack: Tự động chạy khi dự án được mở, không cần tương tác thêm.
  • JSDoc-based attack: Cần tương tác tối thiểu, cụ thể là hover và nhấp vào liên kết lệnh.

Cả hai đường dẫn đều có tính thực tiễn cao trong tấn công mạng nhắm vào môi trường phát triển, vì chúng tận dụng hành vi làm việc bình thường của lập trình viên.

Ảnh hưởng hệ thống và mức độ nghiêm trọng

Khai thác thành công có thể dẫn đến hệ thống bị xâm nhập, thực thi lệnh trái phép, truy cập dữ liệu và duy trì hiện diện lâu dài trên máy nạn nhân. Trong kịch bản điển hình, chỉ cần mở một repository có vẻ hợp lệ trong VS Code, hệ thống có thể bị chiếm quyền điều khiển ngay lập tức thông qua file cấu hình độc hại.

Theo advisory của GitHub, các vấn đề này được công bố tại GHSA-ccq4-xmxr-8hcq. Lỗ hổng ảnh hưởng tới tất cả phiên bản trước 21.2.4 và đã được khắc phục trong bản vá mới nhất.

Chúng được phân loại mức high severity theo CVSS v4, với độ phức tạp tấn công thấpkhông yêu cầu đặc quyền. Nhóm điểm yếu liên quan gồm:

  • Cross-site scripting
  • Code injection
  • Uncontrolled search path elements
  • Execution of unverified code

Yêu cầu cập nhật bản vá và kiểm tra workspace

Đối với lỗ hổng CVE này, khuyến nghị cập nhật ngay lên 21.2.4 hoặc cao hơn. Việc cập nhật bản vá là biện pháp bắt buộc để loại bỏ rủi ro từ các đường khai thác qua JSDoc và tsdk.

Trong quá trình làm việc với mã nguồn bên thứ ba, cần tránh mở repository không tin cậy và kiểm tra cẩn thận file cấu hình workspace, đặc biệt là .vscode/settings.json. Những file này có thể trở thành điểm bám cho nguy cơ bảo mật khi extension xử lý cấu hình mà không có lớp xác thực bổ sung.

Điểm cần lưu ý trong quy trình phát triển

  • Không mở repository chưa được xác minh.
  • Rà soát .vscode/settings.json trước khi kích hoạt workspace.
  • Ưu tiên an toàn thông tin khi làm việc với mã nguồn bên ngoài.
  • Áp dụng nguyên tắc không tin cậy mặc định với nội dung render từ JSDoc.

Với bản chất là một lỗ hổng CVE ảnh hưởng trực tiếp đến môi trường phát triển, vấn đề này cho thấy rủi ro khi extension đọc cấu hình workspace và render nội dung có thể chứa lệnh mà không kiểm tra đầy đủ tính an toàn. Trong bối cảnh an ninh mạng cho chuỗi phát triển phần mềm, việc xác thực nguồn cấu hình và kiểm soát thực thi mã là yêu cầu cốt lõi.