【轉】配置不當引起高危漏洞?看加密貨幣交易所如何正確用Spring Boot Actuaotr框架
https://xz.aliyun.com/t/2233
SpringBoot應用監控Actuator使用的安全隱患
概述
微服務作為一項在雲中部署應用和服務的新技術是當下比較熱門話題,而微服務的特點決定了功能模塊的部署是分布式的,運行在不同的機器上相互通過服務調用進行交互,業務流會經過多個微服務的處理和傳遞,在這種框架下,微服務的監控顯得尤為重要。
而Actuator正是Spring Boot提供的對應用系統的監控和管理的集成功能,可以查看應用配置的詳細信息,例如自動化配置信息、創建的Spring beans信息、系統環境變量的配置信以及Web請求的詳細信息等。如果使用不當或者一些不經意的疏忽,可能造成信息泄露等嚴重的安全隱患。
Actuator使用
Actuator應用監控使用只需要添加spring-boot-starter-actuator依賴即可,如下:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
可以在application.properties中指定actuator的訪問路徑,如指定路徑為/monitor:
management.context-path=/monitor
此時,運行示例,訪問/monitor/env即可查看系統環境變量的配置信息,之後再訪問/monitor/trace即可查看所有Web請求的詳細信息,包括請求方法、路徑、時間戳以及請求和響應的頭信息甚至cookie信息,如圖:
Actuator監控分成兩類:原生端點和用戶自定義擴展端點,原生的主要有:
路徑 | 描述 |
---|---|
/autoconfig | 提供了一份自動配置報告,記錄哪些自動配置條件通過了,哪些沒通過 |
/beans | 描述應用程序上下文裏全部的Bean,以及它們的關系 |
/env | 獲取全部環境屬性 |
/configprops | 描述配置屬性(包含默認值)如何註入Bean |
/dump | 獲取線程活動的快照 |
/health | 報告應用程序的健康指標,這些值由HealthIndicator的實現類提供 |
/info | 獲取應用程序的定制信息,這些信息由info打頭的屬性提供 |
/mappings | 描述全部的URI路徑,以及它們和控制器(包含Actuator端點)的映射關系 |
/metrics | 報告各種應用程序度量信息,比如內存用量和HTTP請求計數 |
/shutdown | 關閉應用程序,要求endpoints.shutdown.enabled設置為true |
/trace | 提供基本的HTTP請求跟蹤信息(時間戳、HTTP頭等) |
安全措施
如果上述請求接口不做任何安全限制,安全隱患顯而易見。實際上Spring Boot也提供了安全限制功能。比如要禁用/env接口,則可設置如下:
endpoints.env.enabled= false
如果只想打開一兩個接口,那就先禁用全部接口,然後啟用需要的接口:
endpoints.enabled = false
endpoints.metrics.enabled = true
另外也可以引入spring-boot-starter-security依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
在application.properties中指定actuator的端口以及開啟security功能,配置訪問權限驗證,這時再訪問actuator功能時就會彈出登錄窗口,需要輸入賬號密碼驗證後才允許訪問。
management.port=8099
management.security.enabled=true
security.user.name=admin
security.user.password=admin
安全建議
在使用Actuator時,不正確的使用或者一些不經意的疏忽,就會造成嚴重的信息泄露等安全隱患。在代碼審計時如果是springboot項目並且遇到actuator依賴,則有必要對安全依賴及配置進行復查。也可作為一條規則添加到黑盒掃描器中進一步把控。
安全的做法是一定要引入security依賴,打開安全限制並進行身份驗證。同時設置單獨的Actuator管理端口並配置不對外網開放。
參考
- http://www.csecgroup.com/blog/springboot_actuator_security_tips/
- https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#production-ready
【轉】配置不當引起高危漏洞?看加密貨幣交易所如何正確用Spring Boot Actuaotr框架