一、Nacos漏洞修復
Nacos在項目即將發布的時候,曾出現過多個漏洞,這些漏洞都被及時修復。當你選擇Nacos作為配置中心/服務註冊中心,需要特別關注Nacos的漏洞狀況並及時進行升級。
升級Nacos的步驟如下:
- 備份Nacos服務器
- 下載新的Nacos版本
- 停止當前正在運行的Nacos服務
- 解壓新版本的Nacos文件到服務器上,並將備份數據拷貝到新的Nacos版本中
- 啟動新版本的Nacos服務
升級過程很簡單,但是要注意備份數據,以防數據丟失。
二、Nacos任意用戶添加漏洞
Nacos 2.0版本中有一個任意用戶添加的漏洞,可以使攻擊者任意添加用戶並分配用戶角色,給企業帶來重大風險。
這個漏洞的修復需要修改nacos-2.0.0\server\nacos-server-builder\nacos-2.0.0\nacos\naming\src\main\java\com\alibaba\nacos\naming\boot\nacospropertiesrefresher\NacosNamingRefreshScheduler.java這個文件。首先,找到以下源代碼:
if (StringUtils.isBlank(servers) && StringUtils.isBlank(standaloneServer)) { // if both servers and standaloneServer are blank servers = "localhost:8848"; }
這個源代碼會先判斷Nacos註冊中心的地址是否為空,如果都為空,則設置默認的地址為“localhost:8848”。為了解決漏洞,需要更改為:
if (StringUtils.isBlank(servers) && StringUtils.isBlank(standaloneServer)) { throw new NacosException("No server address found: servers:" + servers + ",standaloneServer:" + standaloneServer); }
這樣一來,如果沒有配置Nacos註冊中心地址則會拋出異常,從而保證了安全性。
三、Nacos漏洞Getshell
Nacos註冊中心存在Getshell漏洞,攻擊者可以通過這個漏洞在服務器上執行任意命令,給企業帶來極大威脅。
攻擊者可以在配置文件中加入以下內容:
spring.datasource.platform=postgresql db.num=1 db.url.0=jdbc:postgresql://localhost:5432/nacos?searchpath=public db.user=root db.password=root && ping any
當攻擊者訪問nacos:8848/nacos·ui/login頁面登錄時,便會觸發ping any,執行攻擊者插入的惡意代碼。
避免Getshell漏洞的方法是不讓攻擊者有權限訪問配置文件,或者將數據庫的url設置為只讀權限。
四、Nacos默認Token漏洞
Nacos默認Token漏洞是指當Nacos服務啟動時,如果沒有指定token,那麼就默認為一個固定的字符串,攻擊者只需要知道這個固定的字符串就可以進行攻擊。攻擊者可以訪問nacos:8848/nacos·ui/login頁面,輸入以下內容即可欺騙Nacos登錄:
username: nacos password: && nacos
攻擊者登錄後可以執行任意操作,如刪除信息、修改信息等。
避免漏洞的方法是在啟動Nacos服務時指定token,或修改默認的token。
五、Nacos其他漏洞
除了上述幾個漏洞,Nacos還存在其他漏洞,如通過攻擊nacos:8848/nacos·ui/v1/cs/configs獲取敏感信息、攻擊nacos:8848/nacos·v1/ns/ip獲取敏感信息等。由於本文篇幅有限,不再贅述。企業使用Nacos時需要密切關注Nacos的安全漏洞情況並及時更新,同時對Nacos的使用要嚴格遵循安全規則,保證企業信息安全。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/157399.html