Spring Security là một phần thiết yếu của nhiều ứng dụng Java, cung cấp một framework mạnh mẽ và có thể tùy chỉnh để xác thực và ủy quyền. Tuy nhiên, mới đây, một lỗ hổng bảo mật có mức độ nghiêm trọng đã được phát hiện., ảnh hưởng đến nhiều phiên bản của framework này.
CVE-2023-20862: Empty SecurityContext không được lưu đúng cách khi đăng xuất
CVE-2023-20862 là lỗ hổng bảo mật ảnh hưởng đến Spring Security, cụ thể là phiên bản 5.7.x trước 5.7.8, 5.8.x trước 5.8.3 và 6.0.x trước 6.0.3. Vấn đề phát sinh khi hỗ trợ đăng xuất không đúng cách làm sạch bối cảnh bảo mật nếu sử dụng phiên nối tiếp. Hơn nữa, không thể lưu rõ ràng một ngữ cảnh bảo mật trống vào kho lưu trữ HttpSessionSecurityContextRepository. Điều này có thể dẫn đến việc người dùng vẫn được xác thực ngay cả sau khi họ đã đăng xuất. Lỗ hổng này, CVE-2023-20862, đã được xác định và báo cáo bởi Daniel Furtlehner từ Porsche Informatik.
Điều kiện khiến ứng dụng bị tấn công
- Ứng dụng đang sử dụng SecurityContextHolderFilter hoặc requireExplicitSave(true) và đang sử dụng hỗ trợ đăng xuất của Spring Security với các phiên được tuần tự hóa (ví dụ: Spring Session) và invalidateHttpSession(false).
- Người dùng đăng xuất thủ công bằng cách lưu một SecurityContext trống vào HttpSessionSecurityContextRepository.
- Người dùng có một SecurityContextRepository tùy chỉnh không dựa trên HttpSession.
Các sản phẩm và phiên bản bị ảnh hưởng
Các phiên bản Spring Security sau đây bị ảnh hưởng bởi lỗ hổng này:
- 6.0.0 đến 6.0.2
- 5.8.0 đến 5.8.2
- 5.7.0 đến 5.7.7
Cách giảm thiểu lỗ hổng
Nếu ứng dụng của bạn đang sử dụng một trong các phiên bản Spring Security bị ảnh hưởng, bạn nên thực hiện các bước giảm thiểu sau:
- Đối với người dùng 5.7.x, hãy nâng cấp lên phiên bản 5.7.8.
- Đối với người dùng 5.8.x, hãy nâng cấp lên phiên bản 5.8.3.
- Đối với người dùng 6.0.x, hãy nâng cấp lên phiên bản 6.0.3.
Các lỗ hổng bảo mật có thể gây hậu quả nghiêm trọng cho các ứng dụng và người dùng của chúng. Bằng cách nâng cấp lên phiên bản bảo mật mới nhất của Spring Security, bạn có thể giúp đảm bảo rằng ứng dụng của mình và người dùng của ứng dụng được an toàn trước lỗ hổng nghiêm trọng cao này.