Lỗi nằm trong logic retrieveSSGPage của CommonEngine, thuộc @angular/ssr/node và các bản trước đó của @angular/ssr. Khi ứng dụng truyền URL tương đối do người dùng kiểm soát vào CommonEngine.render, URL có thể chứa đoạn parent traversal sử dụng dấu gạch chéo ngược trên Windows.
Cơ chế lỗi gồm các bước chính:
- Cơ sở URL không đặc biệt
resolve:// giữ nguyên dấu gạch chéo ngược trong pathname.
path.join xử lý dấu gạch chéo ngược như dấu phân cách đường dẫn trên Windows, khiến đường dẫn được ghép có thể thoát khỏi thư mục publicPath và trỏ tới thư mục anh em.
- Kiểm tra
pagePath.startsWith(normalize(publicPath)) chỉ so khớp tiền tố, không yêu cầu dấu phân cách thư mục ở cuối. Vì vậy, một thư mục anh em có tên bắt đầu bằng cùng tiền tố vẫn có thể vượt qua kiểm tra.
- Nếu tệp đích tồn tại và chứa marker Angular SSG,
CommonEngine sẽ đọc và trả về trang prerendered đó thay vì render route được yêu cầu.
Điều kiện khai thác gồm triển khai trên Windows, sử dụng CommonEngine, truyền URL tương đối, có thư mục anh em dùng chung tiền tố với publicPath, và có HTML prerendered chứa marker Angular SSG. Cơ chế triển khai chính xác của từng ứng dụng, cấu trúc route và nội dung cụ thể của trang bị lộ không được xác định trong bằng chứng hiện có.