“Mọi kiến thức trong bài viết chỉ phục vụ mục đích giáo dục và an toàn thông tin.
Không được sử dụng để tấn công hệ thống mà bạn không sở hữu hoặc không được phép kiểm thử.”
Spring Boot là một framework mạnh mẽ giúp phát triển ứng dụng web dễ dàng và hiệu quả. Một trong những tính năng quan trọng của Spring Boot là Actuator, cung cấp các endpoint để giám sát và quản lý ứng dụng trong môi trường sản xuất. Tuy nhiên, nếu không được cấu hình cẩn thận, các endpoint này có thể trở thành điểm yếu bảo mật, tạo cơ hội cho kẻ tấn công xâm nhập hệ thống.
Các endpoint Actuator tiềm ẩn rủi ro bảo mật:
- /dump: Hiển thị thông tin về các luồng (threads) đang chạy, bao gồm cả stack trace.
- /trace: Cung cấp thông tin về các yêu cầu HTTP gần đây, có thể bao gồm cả session ID.
- /logfile: Xuất nội dung của file log, chứa thông tin nhạy cảm.
- /shutdown: Cho phép tắt ứng dụng từ xa.
- /mappings: Hiển thị tất cả các mapping của controller MVC.
- /env: Truy cập vào các biến môi trường cấu hình của ứng dụng.
- /restart: Khởi động lại ứng dụng.
Trong các phiên bản Spring Boot 1.x, các endpoint này được đăng ký dưới URL gốc, và từ phiên bản 2.x, chúng được chuyển vào đường dẫn cơ sở /actuator/. Đáng chú ý, trong các phiên bản Spring Boot 1.0 đến 1.4, các endpoint này có thể truy cập mà không cần xác thực, gây ra lỗ hổng bảo mật nghiêm trọng. Từ phiên bản 1.5 trở đi, ngoại trừ /health và /info, các endpoint khác được coi là nhạy cảm và được bảo vệ mặc định, nhưng đôi khi các nhà phát triển vô tình tắt tính năng bảo mật này.
Khai thác lỗ hổng qua các endpoint Actuator:
- Thực thi mã từ xa qua /jolokia:Nếu thư viện Jolokia có trong classpath của ứng dụng, nó sẽ tự động được expose qua endpoint /jolokia. Jolokia cho phép truy cập HTTP vào tất cả các MBean đã đăng ký, tương tự như JMX. Một trong những hành động nguy hiểm là
reloadByURL, cho phép tải lại cấu hình logging từ một URL bên ngoài. Kẻ tấn công có thể lợi dụng để thực thi mã độc trên hệ thống bằng cách cung cấp URL chứa cấu hình Logback độc hại, dẫn đến tấn công XXE hoặc thậm chí thực thi mã từ xa. - Chỉnh sửa cấu hình qua
/env:Nếu ứng dụng sử dụng Spring Cloud, endpoint/envcho phép chỉnh sửa các thuộc tính môi trường của Spring. Kẻ tấn công có thể thay đổi các thuộc tính quan trọng, như eureka.client.serviceUrl.defaultZone, trỏ đến server độc hại để khai thác lỗ hổng deserialization trong Eureka Client phiên bản cũ, dẫn đến thực thi mã từ xa.
Recommend:
- Bảo vệ các endpoint Actuator: Đảm bảo rằng các endpoint nhạy cảm được bảo vệ bằng xác thực và chỉ cho phép truy cập từ các nguồn tin cậy.
- Cập nhật phiên bản mới nhất: Luôn sử dụng các phiên bản mới nhất của Spring Boot và các thư viện liên quan để được bảo vệ khỏi các lỗ hổng đã biết.
- Cấu hình cẩn thận: Kiểm tra và cấu hình các endpoint Actuator phù hợp với nhu cầu, vô hiệu hóa những endpoint không cần thiết để giảm thiểu rủi ro.