緣起
最近(2023.03.13)客戶現場要求自檢有無使用Nacos,原因是Nacos存在認證繞過高危漏洞,其漏洞程式碼NVDB-CNVDB-2023674205
,本文就簡單說一下這個事兒,以及如何解決這個問題。
以下內容中,Nacos服務端A簡稱A,Nacos服務端B簡稱B。
問題現象
可以使用已知賬號密碼的A的登入響應體,替換未知密碼的B登入響應體來繞過認證,進入B後臺。
影響範圍:<=2.2.0
問題原因
Nacos使用JWT生成金鑰,同樣的JWT生成key會導致A的token可以給B使用。
解決辦法
方法一、修改生成token的key
Nacos提供了修改預設JWT token生成key的配置項:
#啟用認證
nacos.core.auth.enabled=true
#生成token的金鑰
nacos.core.auth.plugin.nacos.token.secret.key=BASE64編碼
推薦自定義金鑰時,推薦將配置項設定為Base64編碼的字串,且原始金鑰長度不得低於32字元。
方法二、升級到2.2.0.1及以後版本
目前Nacos官方在2023.03.02釋出了2.2.0.1,下載地址:https://github.com/alibaba/nacos/releases/tag/2.2.0.1
以後更近版本參見:https://github.com/alibaba/nacos/releases
方法三、容器環境處理方式
對於容器環境則將 NACOS_AUTH_ENABLE=true
與 NACOS_AUTH_TOKEN=BASE64編碼
作為環境變數傳入即可。
參考引用: