Mybatis-PageHelper
Mybatis-PageHelper copied to clipboard
关于 CVE-2022-28111漏洞!!!
这种漏洞应该在调用方通过正则或者白名单处理,有些人的需求会用到函数等各种复杂排序,因此分页插件不做校验。
如果你从前端传递一个 SQL 用 JDBC 原生方式执行,你是不是发现了一个天大的漏洞?
如果JDBC不做处理,是不是就不用 JDBC 了?
如果这个漏洞会影响你们项目选择分页插件,可以在当前 issues 留言,如果留言人数很多,下个版本可以把 order by 功能去掉。
影响所有版本?瞎写!!!
下面是和排序有关的更新日志。
3.6.0 - 2015-02-03
- PageHelper增加了startPage(int pageNum, int pageSize,String orderBy)方法(3.7.0版本以后,移除了该方法),针对sqlserver
3.7.0 - 2015-04-21
- 由于orderby参数经常被错误认为的使用,因此该版本全面移除了orderby
Page<E>移除orderby属性- PageHelper的startPage方法中,移除包含orderby参数的方法,sqlserver相关包含该参数的全部移除
4.0.0 - 2015-07-13
- 可以单独使用PageHelper.orderBy(String orderBy)对查询语句增加排序,也可以配合startPage的其他方法使用
- 可以使用PageHelper.startPage(int start,int size,String orderBy)对分页查询进行排序
5.0.0 - 2017-01-02
- 去掉了不适合出现在分页插件中的 orderby 功能,以后会提供单独的排序插件
5.1.0 - 2017-08-28
- 增加 4.x 以前版本包含的排序功能,用法一致(PageHelper增加了几个排序相关的方法)
现在有人乱用还提交漏洞,近期会简单处理 order by
并不觉得是分页插件的问题,如果需要前端传递SQL 应该由开发者自己校验
代码层面上没有问题,主要是CVE不过,项目没办法投产
@Lee0609x 你们通过什么软件检测的漏洞?我用工具检测是正常的。
提交漏洞的人的示例中,是业务层的漏洞,不是分页插件的,应该只有它的写法才有漏洞,和插件无关。
dependency check 会显示这个CVE,影响发布
同样CVE不过,无法发布
https://www.cnblogs.com/secload/articles/16061420.html
同样CVE不过,无法发布
无解了
Order By 字符串拼接SQL的功能还是去掉吧,要排序手写SQL拉倒 https://www.cnblogs.com/secload/articles/16061420.html
新版本限制了order by,但是目前检测新版本仍然会提示该漏洞。
@Lee0609x @WingsOfPiano @xjjaid13 你们使用新版本有问题吗?
这个根本不是PageHelper的问题。 是一部分人写代码的时候不遵守安全规则罢了。打个不恰当的比方:傻子乱用菜刀会伤到他自己,所以菜刀就有漏洞么?
https://www.cnblogs.com/secload/articles/16061420.html
插件做校验也不算多此一举,不去掉的话,修下漏洞就好了啊。
这么看的话,插件里就是有这个漏洞。即使业务代码不使用,依赖pageHelper了就有这个漏洞。 怎么修一下呢?
@forzjing 漏洞瞎提的,版本都不对。。新版本已经解决了,但是漏洞检测没用。
是不是要去这上面提交一下变更。 https://cveform.mitre.org/ 那些刷CVE漏洞的人也真是够了。
建议去CVE反馈一下。 扫描可以临时把这个漏洞supress处理就不会报警了。
是怎样的写法,才有漏洞呢?