Wheels findByKey() and exists(key=) ignore scope conditions
Key facts
- Attack vector
- Network
- Privileges required
- Low
- User interaction
- None
- Attack complexity
- Low
- Impact type
- —
- Confidentiality · integrity · availability
- High · High · None
- Fix status
- Fixed
Attack profile from CVSS 3.1 · CNA. Fix status from CNA.
Summary
Wheels from 4.0.0 before 4.2.0 replaces incoming scope conditions with a primary key condition in findByKey() and exists(key=). With error information disabled in production, exists(key=) returns true for an out of scope key instead of throwing. A network attacker with low privileges can load, modify or delete another user's or tenant's record when applications rely on scopes for ownership or tenant authorization and the key comes from a request.
Written with Claude Haiku 5.5 from the sources below · 2026-10-28
Description from the CNA
Wheels 4.0.0 through 4.1.2 before 4.2.0 replaces incoming scope conditions with a primary-key condition in findByKey() and exists(key=). For exists(key=), production with error information disabled returns true for an out-of-scope key instead of throwing. Applications relying on scopes for ownership or tenant authorization can therefore load and subsequently modify or delete another user's or tenant's record when the key comes from a request. The 4.2.0 fix combines key conditions with incoming scope, query-builder or where conditions in findByKey(), exists(key=), updateByKey() and deleteByKey(). Other scope-aware finders, aggregates, updateAll() and deleteAll() are not affected.
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- None
- Automatable
- No
- Technical impact
- Total
The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.
Affected products
Remediation
Upgrade Wheels to 4.2.0, which combines key conditions with incoming scope, query builder or where conditions in findByKey(), exists(key=), updateByKey() and deleteByKey().
Written with Claude Haiku 5.5 from the sources below · 2026-10-28
- Fix · CNA Wheels (Wheels) Fixed in 4.2.0
Fixed in the same release
Records fixed by the same vendor advisory or release, as the CNA lists them.
- Release ·
Wheels 4.2.0
6 records Highest priority Priority MEDIUM 2 MEDIUM, 4 LOW
Other records, highest priority first
- TI-2026-75147 Wheels exposes unprotected development tools to remote clientsPriority MEDIUM 43
- TI-2026-75145 SQL injection in Wheels on MySQL and MariaDB via unbound literalsPriority MEDIUM 43
- TI-2026-75148 Wheels nested form updates can modify another parent's recordsPriority LOW 37
Timeline
- 2026-10-16 Threatist record created from CVE-2026-111445
- 2026-10-16 Priority changed: MEDIUM → LOW
- 2026-10-16 Alias added: GHSA-r2r4-mr5f-x9qg
- 2026-10-20 CISA SSVC decision points changed
References
More Wheels vulnerabilities
- TI-2026-74581 SQL injection in Wheels query builder and dynamic finders CVSS 3.1CRITICAL 9.8
- TI-2026-75147 Wheels exposes unprotected development tools to remote clients CVSS 3.1HIGH 8.6
- TI-2026-75145 SQL injection in Wheels on MySQL and MariaDB via unbound literals CVSS 3.1CRITICAL 9.8
- TI-2026-75148 Wheels nested form updates can modify another parent's records CVSS 3.1HIGH 8.1
- TI-2026-75152 Command injection and unsafe file handling in Wheels CLI CVSS 3.1HIGH 7.8
- TI-2026-75144 Wheels lets unauthenticated clients enter a separate test context CVSS 3.1MEDIUM 6.5
Sources
- CVE-2026-111445 · CVE Program
- CVE-2026-111445 · NVD
- FIRST EPSS
- GHSA-r2r4-mr5f-x9qg · GitHub Advisory Database · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences