| 제목 | Dataease dataease v2.10.20 SQL Injection |
|---|
| 설명 | DataEase 允许用户在数据集 SQL 中定义 `${变量名}` 占位符(SqlVariable),仪表板查询时由前端传入 filter 值进行替换。替换逻辑位于 `SqlparserUtils.transFilter()`:
```java
private String transFilter(SqlVariableDetails sqlVariableDetails, ...) {
if (sqlVariableDetails.getOperator().equals("in")) {
...
return "'" + String.join("','", sqlVariableDetails.getValue()) + "'";
} else if (...) {
...
} else {
return (String) sqlVariableDetails.getValue().get(0); // ← 原样返回用户输入
}
}
```
最后的 `else` 分支(适用于 `=`、`!=`、`<`、`>`、`like` 等所有非 in/between 算子)**直接返回用户输入**,随后被 `SubstitutedSql.replace("${var}", value)` 拼回 SQL。攻击者可通过控制该 value 注入任意 SQL。 |
|---|
| 원천 | ⚠️ https://github.com/xpp3901/CVE_APPLY/tree/main/V-D001_DataEase_SqlVariable_Injection |
|---|
| 사용자 | xpp39 (UID 97299) |
|---|
| 제출 | 2026. 04. 14. AM 09:46 (2 개월 ago) |
|---|
| 모더레이션 | 2026. 05. 16. AM 11:35 (1 month later) |
|---|
| 상태 | 수락 |
|---|
| VulDB 항목 | 364315 [Dataease 2.10.20 Data Dashboard SqlparserUtils.java SqlparserUtils.transFilter SQL 주입] |
|---|
| 포인트들 | 20 |
|---|