GHSA-pmwx-rm49-xv39 json
ActiveRecord::Tenanted::Storage::DiskService#path_for has a possible path traversal
published 2026-07-29 3 mo ago modified 2026-07-29 3 mo ago
- cvss
- —
- not scored
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- —
- no score, EPSS covers CVEs only
- public exploits
- 0
- none known
Summary
### Summary
Active Record Tenanted's override of Active Storage's `DiskService#path_for` does not validate that the resolved filesystem path remains within the storage root directory. If a blob key containing path traversal sequences (e.g. `../`) is used, it could allow reading, writing, or deleting arbitrary files on the server. Blob keys are expected to be trusted strings, but some applications could be passing user input as keys and would be affected.
### Mitigation
Upgrade to Active Record Tenanted v0.7.0 or later.
As a workaround, do not use untrusted user input as blob keys. Blob keys are expected to be trusted strings.
### Credit
This issue was responsibly reported by @tonghuaroot.
Patch / fix
- rubygems activerecord-tenanted 0.7.0
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| rubygems | activerecord-tenanted | <0.7.0 |
0.7.0 |
Classification
- Weakness
-
- CWE-22 Improper Limitation of a Pathname to a Restricted Directory
References
-
github.com
/basecamp/activerecord-tenanted/pull/307
web
-
github.com
/basecamp/activerecord-tenanted/commit/b242c8ad9bf58bbd7f5a032d153b0f29db54b9ba
web
-
github.com
/basecamp/activerecord-tenanted/security/advisories/GHSA-pmwx-rm49-xv39
web
-
github.com
/rails/rails/security/advisories/GHSA-9xrj-h377-fr87
web
-
github.com
/basecamp/activerecord-tenanted
package
-
github.com
/basecamp/activerecord-tenanted/releases/tag/v0.7.0
web
Sources
- GitHub Advisory GHSA-pmwx-rm49-xv39
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.