CodeQL检测SpringBoot应用敏感信息的返回
2021-9-27 18:12:51 Author: mp.weixin.qq.com(查看原文) 阅读量:8 收藏

1、背景描述

2、必要信息的配置

3、匹配出包含敏感字段的类

4、检测Map类型的变量

5、检测ReturnType

6、检测ReturnStmt

7、查询展示

8、完整代码

1、背景描述

用CodeQL检测响应包是否包含敏感信息的想法最开始是我的同学haoran分享给我的。

之前已经实现了SQLi跟XSS的检测,在翻阅SOC中的漏洞时感觉我也需要实现这样的一个功能,对安全漏洞以及隐私合规都会有用处。

文后附有完整代码。

2、必要信息的配置

首先需要根据自己项目的实际情况,配置关心的敏感字段的名称,后面会校验变量名、Map的key、类里面的字段名是否是这些值,如果是则认为是敏感的变量、类。

当然你也可以改用正则或者通配符的形式进行限制。


根据自己的情况,配置项目中映射URL的标注名,只关心可以通过URL直接访问到的方法

对于一些没有编译进CodeQL数据库的类,无法进入到类的内部比对字段名,可以手动配置这个类的类名

3、匹配出包含敏感字段的类


1)判断一个字段的字段名是否是敏感的
2)字段的类型是源码中定义的项目类型时,则进行递归校验

4、检测Map类型的变量


1)key是敏感字段时
2)valueType是敏感的类时
3)valueType是泛型,内嵌敏感的类时

5、检测ReturnType

通过检测ReturnType来判断是否包含敏感字段

1)ReturnType是敏感的类时
2)ReturnType是泛型,内嵌敏感的类时,支持上面这种多重嵌套的形式

6、检测ReturnStmt

有时ReturnType中只是一个像ArrayList的类型,所以还需要检测ReturnStmt
1)检测Return语句中的是否包含了敏感类
2)返回值是Map类型时,校验Map类型的变量

7、查询展示

8、完整代码

在公众号内回复:CodeQL001,即可获得下载链接。

文章来源: https://mp.weixin.qq.com/s?__biz=Mzg4ODU4ODYzOQ==&mid=2247484971&idx=1&sn=75ad25edfbfe3b29f361bd0d7f555cd0&chksm=cff9961bf88e1f0db61815eff4369f3e597ec2d6dceac441cdbfa51f0ee668f31a6b0025a68b&scene=58&subscene=0#rd
如有侵权请联系:admin#unsafe.sh