CVE-2025-66412: Lỗ hổng XSS nghiêm trọng tấn công Angular

Một lỗ hổng CVE nghiêm trọng thuộc loại Stored Cross-Site Scripting (XSS), được định danh là CVE-2025-66412, đã được phát hiện trong trình biên dịch template của Angular. Lỗ hổng này cho phép kẻ tấn công thực thi mã tùy ý bằng cách lợi dụng các thuộc tính hoạt hình SVG, bỏ qua các cơ chế khử trùng bảo mật tích hợp sẵn.
Khai Thác Lỗ Hổng CVE-2025-66412 và Cơ Chế Tấn Công Mạng
Lỗ hổng này ảnh hưởng đến các ứng dụng sử dụng Angular phiên bản dưới 19.2.17, 20.3.15, hoặc 21.0.2. Điểm yếu cốt lõi nằm ở việc trình biên dịch template của Angular chứa một lược đồ bảo mật không đầy đủ.
Lược đồ này không phân loại và khử trùng đúng cách các thuộc tính chứa URL và các phần tử hoạt hình SVG, dẫn đến một điểm mù bảo mật nghiêm trọng.
Các Vector Khai Thác Chính của Lỗ Hổng
Lỗ hổng CVE-2025-66412 hoạt động thông qua hai vector tấn công riêng biệt, tập trung vào việc thao túng các cơ chế xử lý dữ liệu của Angular:
- Thuộc tính URL không an toàn: Trình biên dịch không nhận diện được các thuộc tính chứa URL cụ thể như
xlink:hrefvàhreflà nhạy cảm về mặt bảo mật trong các ngữ cảnh nhất định. - Thuộc tính hoạt hình SVG bị thao túng động: Các phần tử hoạt hình SVG như
<animate>,<set>,<animateMotion>, và<animateTransform>có thể được sử dụng để tiêm mã độc.
Cơ Chế Khai Thác Qua Hoạt Hình SVG
Kẻ tấn công khai thác lỗ hổng CVE này bằng cách gắn dữ liệu không đáng tin cậy vào thuộc tính attributeName của các hoạt hình SVG. Sau đó, thuộc tính này được trỏ đến các thuộc tính nhạy cảm như href hoặc xlink:href. Bằng cách chèn một tải trọng URL JavaScript (ví dụ: javascript:alert(1)) vào giá trị hoặc thuộc tính của hoạt hình, mã độc có thể được thực thi.
Mã độc sẽ được kích hoạt khi phần tử chứa hoạt hình bị tổn thương được tương tác bởi người dùng hoặc tự động thông qua cơ chế thời gian của hoạt hình. Khi các ràng buộc template gán dữ liệu không đáng tin cậy, do người dùng kiểm soát, vào các thuộc tính dễ bị tổn thương, trình biên dịch sẽ sai lầm khi chuyển sang ngữ cảnh không khử trùng, cho phép việc gán thuộc tính nguy hiểm vượt qua xác thực.
Ví dụ minh họa cho cách khai thác lỗ hổng này có thể bao gồm:
<div [attr.xlink:href]="'javascript:alert(document.cookie)'">Click me for cookie</div>
<animate [attributeName]="'href'" [values]="'javascript:alert('XSS successful')'" dur="1s" repeatCount="indefinite"></animate>
Trong các trường hợp này, dữ liệu đầu vào không được tin cậy được gắn trực tiếp vào các thuộc tính nhạy cảm, làm cho ứng dụng dễ bị tổn thương trước các cuộc tấn công mạng XSS.
Ảnh Hưởng và Rủi Ro Bảo Mật
Khai thác thành công lỗ hổng CVE-2025-66412 cho phép kẻ tấn công thực thi mã tùy ý trong miền của ứng dụng bị ảnh hưởng. Điều này dẫn đến nhiều hậu quả nghiêm trọng về bảo mật:
- Chiếm quyền điều khiển phiên (Session Hijacking): Kẻ tấn công có thể đánh cắp cookie và token xác thực của người dùng, từ đó chiếm quyền kiểm soát phiên làm việc của họ.
- Rò rỉ Dữ liệu Nhạy cảm (Data Exfiltration): Thông tin người dùng nhạy cảm có thể bị đánh cắp và tiết lộ trái phép.
- Thực hiện Hành động Trái phép: Kẻ tấn công có thể thực hiện các hành động nhân danh người dùng bị ảnh hưởng mà không có sự cho phép.
- Defacement hoặc Redirect: Thay đổi nội dung hiển thị hoặc chuyển hướng người dùng đến các trang web độc hại.
Điều Kiện Kích Hoạt Lỗ Hổng
Cuộc tấn công lợi dụng lỗ hổng CVE này yêu cầu hai điều kiện tiên quyết chính:
- Ứng dụng Angular phải hiển thị dữ liệu đầu vào không đáng tin cậy, có nguồn gốc từ cơ sở dữ liệu, API, hoặc các biểu mẫu gửi từ người dùng.
- Dữ liệu này phải được gắn kết trực tiếp với các thuộc tính dễ bị tổn thương hoặc thuộc tính hoạt hình SVG mà không qua quá trình khử trùng đầy đủ.
- Nạn nhân phải tương tác với phần tử bị xâm phạm, hoặc hoạt hình phải tự động kích hoạt để mã độc được thực thi.
Chiến Lược Phòng Ngừa và Cập Nhật Bản Vá Bảo Mật
Để giảm thiểu rủi ro từ lỗ hổng CVE-2025-66412, các tổ chức cần thực hiện các biện pháp khắc phục và phòng ngừa ngay lập tức:
- Nâng cấp phiên bản Angular: Các tổ chức cần khẩn trương nâng cấp lên các phiên bản Angular đã được vá lỗi để khắc phục lỗ hổng CVE này: 19.2.17, 20.3.15, hoặc 21.0.2. Thông tin chi tiết có sẵn trong khuyến nghị bảo mật của GitHub: GHSA-v4hv-rgfq-gp49. Đây là biện pháp hiệu quả nhất để triển khai bản vá bảo mật.
- Triển khai Content Security Policy (CSP): Đối với người dùng Angular 18.x hoặc các phiên bản chưa có bản vá, việc triển khai các tiêu đề Content Security Policy (CSP) mạnh mẽ là rất quan trọng. CSP nên được cấu hình để không cho phép các URL có lược đồ
javascript:, giúp ngăn chặn việc thực thi mã độc qua các vector tấn công này. - Kiểm tra Ràng Buộc Template: Cho đến khi quá trình nâng cấp hoàn tất, các nhóm phát triển nên tiến hành kiểm tra lại toàn bộ các ràng buộc template (template bindings) trong ứng dụng. Mục tiêu là đảm bảo rằng dữ liệu không đáng tin cậy không bao giờ được đưa vào các thuộc tính SVG/MathML dễ bị tổn thương.
- Tránh Ràng Buộc Động: Hạn chế hoặc tránh ràng buộc động dữ liệu do người dùng kiểm soát vào các thuộc tính nhạy cảm về bảo mật, đặc biệt là thuộc tính
attributeNamecủa hoạt hình SVG. Việc này giúp giảm thiểu bề mặt tấn công.
Việc chủ động áp dụng các biện pháp này sẽ giúp bảo vệ ứng dụng Angular khỏi các cuộc tấn công mạng lợi dụng lỗ hổng XSS nghiêm trọng này.









