# 活动日志重复处理漏洞
N/A
是否为 Web 类漏洞: 未知
判断理由:
| # | POC 描述 | 源链接 | 神龙链接 |
|---|
标题: Endless reprocessing/reupload of activity log data due to SQLite max parameters limit not being considered · Advisory · pterodactyl/wings · GitHub -- 🔗来源链接
标签:x_refsource_CONFIRM
神龙速读:
### 关键信息
- **漏洞标题**:
- Endless reprocessing/reupload of activity log data due to SQLite max parameters limit not being considered
- **漏洞标识符**:
- GHSA-2497-gp99-2m74
- CVE-2026-21696
- **严重性**:
- 高度严重
- **受影响的版本**:
- >= 1.7.0, < 1.12.0
- **修复版本**:
- 1.12.0
- **漏洞描述**:
- Wings 在处理活动日志条目时,未考虑 SQLite 的最大参数限制,导致低权限用户可以触发数据库日志条目的泛洪。
- **详细信息**:
- Wings 向面板发送活动日志后,会从 SQLite 数据库中删除已处理的活动条目,但未考虑 SQLite 的 32766 条目限制。删除超过 32766 个条目时会触发 SQL 逻辑错误,导致数据库条目不会被删除。
- 这些未删除的条目将无限次地被重新处理并重新发送到面板,每次 cron 运行。
- **漏洞利用方法 (PoC)**:
- 任何可以创建所需 32767+ 活动条目的方法都可以触发此漏洞。
- 证明方法 (PoC) 使用 SFTP 快速创建许多小文件,从而在 SQLite 数据库中创建相应的活动条目。
- **影响**:
- 成功利用此漏洞可导致 Wings 不断向面板上传相同的活动数据,数据量不断增长直到数据库服务器磁盘空间耗尽。
- **CVE 分类**:
- CWE-400
标题: wings/internal/cron/sftp_cron.go at 9ffbcdcdb1163da823cf9959b9602df9f7dcb54a · pterodactyl/wings · GitHub -- 🔗来源链接
标签:x_refsource_MISC
神龙速读:
以下是截图中关于漏洞的关键信息简洁的 Markdown 返回:
```markdown
## 漏洞关键信息
### 文件路径
- `wings/internal/cron/sftp_cron.go`
### 关键代码片段
```go
if tx := database.Instance().Where("id IN ?", events.ids).Delete(&models.Activity{}); tx.Error != nil {
return errors.WithStack(tx.Error)
}
```
### 漏洞描述
- **代码行号**: 86
- **问题**: SQL 注入风险
- **解释**:
- `events.ids` 可能是用户输入或不可信数据源。
- 直接使用 `Where("id IN ?", events.ids)` 没有使用参数化查询,可能存在 SQL 注入风险。
### 建议
- **使用参数化查询**:
- 将 `Where("id IN ?", events.ids)` 改为安全的参数化查询方式,如 `Where("id IN ?", append([]string{}, events.ids...))` 或其他安全处理方法。
- **输入验证**:
- 对 `events.ids` 进行严格的输入验证和清理,确保其格式和内容安全。
```
### 其他信息
- **提交信息**: chore: reformat code
- **提交者**: matthewpi
- **提交哈希**: 058f643
- **提交时间**: 4 years ago
```
标题: wings/internal/cron/activity_cron.go at 9ffbcdcdb1163da823cf9959b9602df9f7dcb54a · pterodactyl/wings · GitHub -- 🔗来源链接
标签:x_refsource_MISC
神龙速读:
### 关键信息总结
#### 1. **漏洞描述**
- **问题类型**: IP地址有效性检查问题。
- **具体描述**: 在处理数据库中的活动记录时,未正确验证IPv6地址的有效性,导致数据库中存储的IPv6地址可能被截断或损坏。
#### 2. **修复措施**
- **修复提交**: #159。
- **提交时间**: 3年前(具体时间为2022年)。
- **提交者**: galexrt。
#### 3. **关键代码段**
```go
if ip := net.ParseIP(v.IP); ip == nil {
ids = append(ids, v.ID)
continue
}
```
- **功能**: 检查数据库中的IP地址是否有效。如果`net.ParseIP`函数返回`nil`,表示IP地址无效,将其ID添加到`ids`数组中,用于后续删除。
#### 4. **受影响函数**
- **函数名**: `Run`
- **作用**: 执行定时任务,负责从数据库中获取活动记录并发送到控制面板。
#### 5. **代码路径**
- **文件路径**: `wings/internal/cron/activity_cron.go`
- **仓库**: `pterodactyl/wings`
#### 6. **关联功能**
- **数据同步**: 从数据库中获取活动记录并发送到控制面板。
- **异常处理**: 删除无效的活动记录,并记录错误信息。
暂无评论