CVE-2026-22819CVE-2026-22819是Outray开源项目中的一个中等严重性安全漏洞,该项目是ngrok的开源替代方案。漏洞存在于子域名分配功能的数据库事务处理机制中。在0.1.5版本之前,由于缺乏适当的数据库事务锁机制,免费计划用户可以通过并发请求的方式突破子域名配额限制,获取超出其账户允许数量的子域名资源。该漏洞的核心问题位于main/apps/web/src/routes/api/$orgSlug/subdomains/index.ts文件中,攻击者可以利用多个并发请求同时检查配额并创建子域名,在数据库锁机制缺失的情况下实现配额绕过。此类漏洞虽然不直接导致系统被完全控制或数据泄露,但会破坏服务的资源分配公平性原则,影响付费用户的权益和服务质量。攻击者仅需拥有低权限账户即可实施攻击,无需特殊权限或用户交互,攻击复杂度较低。漏洞于2026年1月14日被披露并发布修复版本,建议所有用户立即升级至0.1.5或更高版本以消除安全风险。
Outray是一款开源的内网穿透工具,提供类似ngrok的功能,允许用户将本地服务暴露到公网。该漏洞源于子域名配额检查与分配操作之间缺乏原子性保证。在正常业务逻辑中,系统应该首先检查用户当前已使用的子域名数量是否达到配额上限,只有在配额允许的情况下才能创建新的子域名。然而,由于数据库操作缺少事务锁机制,攻击者可以构造多个并发HTTP请求同时到达配额检查点。多个请求会同时通过配额检查(因为它们在数据库更新前都已查询到未超配额的状态),随后各自创建子域名记录,导致实际创建的子域名数量超过配额限制。具体攻击步骤如下:攻击者首先注册一个免费账户,该账户通常限制只能使用1-3个子域名。然后攻击者使用脚本或工具(如Burp Suite、Python asyncio等)构造大量并发POST请求到子域名创建API端点。由于缺少行级锁或乐观锁机制,所有并发请求在检查配额时都看到相同的状态,最终全部成功创建子域名。漏洞利用的关键在于数据库事务隔离级别不足以防止此类竞态条件,开发者需要在检查和创建操作之间添加适当的锁机制或使用原子操作确保配额检查的准确性。