# Outray 子域名竞争条件漏洞
## 概述
Outray 是一个开源的 ngrok 替代工具。在版本 0.1.5 之前,由于缺少数据库事务锁机制,存在一个子域名分配逻辑漏洞。
## 影响版本
0.1.5 之前版本(不包含 0.1.5)
## 细节
漏洞位于文件 `main/apps/web/src/routes/api/$orgSlug/subdomains/index.ts`。当用户创建子域名时,系统未使用数据库事务锁机制,导致在并发请求下,免费计划用户可绕过子域名数量限制,创建超出配额的子域名。
## 影响
攻击者(如免费用户)可利用该漏洞创建多个子域名,突破服务资源配额限制,可能导致资源滥用和权限越权问题。该问题已在 0.1.5 版本中修复。
是否为 Web 类漏洞: 未知
判断理由:
| # | POC 描述 | 源链接 | 神龙链接 |
|---|
标题: Race Condition in Outray cli's webapp · Advisory · outray-tunnel/outray · GitHub -- 🔗来源链接
标签:x_refsource_CONFIRM
神龙速读:
### 关键信息总结
#### 漏洞概述
- **类型**: 赛场条件 (Race Condition)
- **CVE ID**: CVE-2026-22819
- **影响版本**: Outray 0.1.3
- **修补版本**: None
---
#### 影响
- **权限提升**:
- 免费用户可以获取无限的子域名,不受计划限制。
---
#### CVSS v3 基础评估
- **严重性**: 中等 (5.9/10)
- **攻击向量**: 网络
- **攻击复杂度**: 高
- **所需权限**: 低
- **用户交互**: 无
- **作用范围**: 不变
- **机密性**: 无影响
- **完整性**: 低
- **可用性**: 高
---
#### 弱点类型
- **CWE**: 366 (Race Condition Within a Single Thread)
---
#### 漏洞细节与影响
- 脚本执行该用户计划和现有域名检查,但未锁定事务。
- 在插入子域名之前,未锁定事务会触发逻辑错误检查。
- 攻击者可通过并行请求利用此漏洞,使第二个请求中还没更新的行绕过逻辑检查,以获取额外的子域名。
---
#### PoC
- 表演者工具可以通过批处理生成多条请求来模拟平行请求。演示中展示了“***********”子域名不正确地添加多个域名,导致绕过了逻辑识别。
---
#### 影响损坏
- 免费用户可以无限获取子域名,无需额外购买。
- 除了用户易操作性,该漏洞还可能对业务逻辑和数据正确性产生负面影响。
标题: fix(subdomains): improve subdomain counting with row-level locking · outray-tunnel/outray@73e8a09 · GitHub -- 🔗来源链接
标签:x_refsource_MISC
神龙速读:
从这张网页截图中可以获取到以下关于漏洞的关键信息:
- **提交ID**: 73e8a09
- **提交者**: akinloluwami
- **提交时间**: last week
- **提交描述**: fix(subdomains): improve subdomain counting with row-level locking
- **提交改动详情**:
- **文件路径**: apps/web/src/routes/api/$orgSlug/subdomains/index.ts
- **改动概述**:
- 替换SQL count聚合函数,使用显式行选择以获得更好的锁定语义。
- 在事务期间锁定子域名行,以防止竞态条件和幻读。
- 从选定行计算现有数量,而不是使用SQL count函数。
- 维护现有的子域名限制验证逻辑,改善一致性。
- **具体改动**:
- 从第68行到第75行的代码改动,显示了如何在统计子域名数量时防止竞态条件,通过锁定行而不是仅锁定读取,并通过计算选择的行数来确定已存在的子域名数量。
Zaproxy alias impedit expedita quisquam pariatur exercitationem. Nemo rerum eveniet dolores rem quia dignissimos.