发布厂商:
com.github.pagehelper
组件名称:
pagehelper
漏洞影响版本:
5.3.0 - 5.3.1
组件风险等级:
超危
组件路径:
[xxx.jar/BOOT-INF/lib/pagehelper-5.3.0.jar]
CVE编号:
CVE-2022-28111
CNNVD编号:
CNNVD-202205-2091
漏洞名称:
Mybatis-PageHelper SQL注入漏洞
漏洞风险等级:
超危
漏洞类型:
SQL注入
漏洞描述:
Mybatis-PageHelper
是一个用于 MyBatis 的分页插件,广泛用于 Java 开发中处理分页查询操作。然而,该插件的多个版本中存在 SQL 注入漏洞。具体来说,Mybatis-PageHelper
1.x.x 版本至 5.x.x 版本中,orderBy
参数的处理存在漏洞,攻击者可以通过该参数注入恶意 SQL 语句,进而对数据库进行非法操作,导致数据泄露、篡改甚至破坏系统的稳定性。
漏洞影响范围:
此漏洞影响以下版本的 Maven 系统中的 pagehelper
组件:
- com.github.pagehelper>3.5.0 并 <5.3.1
由于分页操作是企业系统中广泛使用的功能模块,该漏洞具有极高的传播性和危险性,尤其是在对外开放的应用接口中,攻击者可以利用该漏洞实施 SQL 注入攻击,执行任意 SQL 语句。
漏洞利用风险:
该 SQL 注入漏洞主要体现在 orderBy
参数的传递与处理环节中。由于缺少对用户输入的充分校验,攻击者可以通过构造恶意 SQL 语句注入数据库,执行诸如数据查询、修改、删除等任意操作。这将导致数据库数据泄露、业务逻辑被篡改等严重后果,甚至可能使得整个应用系统崩溃。
漏洞影响场景:
受影响的分页查询接口可能被攻击者利用,特别是在前端传递排序字段的分页功能中。例如:
PageHelper.startPage(pageNum, pageSize);
example.setOrderByClause(orderBy);
List<Result> resultList = exampleMapper.selectByExample(example);
在这个场景中,如果没有对 orderBy
参数进行有效过滤,攻击者可以通过输入诸如 ' id; DROP TABLE users; --
的恶意语句来破坏数据库。
修复与解决方案:
厂商已经意识到该问题并发布了修复补丁,开发者应立即采取以下措施,避免该漏洞的影响:
版本升级建议:
将 Mybatis-PageHelper
组件升级到 5.3.1 或更高版本,以修复该漏洞。最新版本中引入了对 orderBy
参数的严格校验,避免了 SQL 注入的风险。
版本升级步骤:
- 在 Maven 的
pom.xml
文件中,将pagehelper
组件的版本号更新为 5.3.1 或更高版本:
<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>5.3.1</version>
</dependency>
总结:
Mybatis-PageHelper 的 SQL 注入漏洞对依赖该组件进行分页操作的系统带来了极大的安全风险。开发人员应尽快将该组件更新到最新版本(5.3.1 或更高版本),以避免潜在的安全威胁。同时,在系统设计中,应加强对所有用户输入的验证与过滤,确保输入数据的合法性,以防止 SQL 注入类的攻击。
更多已修复漏洞实例请访问: 一线网资源-全网一站式平台