GitHub Advisoryadvisory · RubyGems
GHSA-pmwx-rm49-xv39 ActiveRecord::Tenanted::Storage::DiskService#path_for has a possible path traversal
LOW
Official page ↗
- Ecosystem
- RubyGems
- Packages
- activerecord-tenanted
- Severity
- Low
- CVSS vector
- CVSS:4.0/AV:N/AC:H/AT:P/PR:L/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N
- Weaknesses
- CWE-22
- Reviewed
- 2026-07-29
Affected packages
• RubyGems activerecord-tenanted: < 0.7.0 → fixed in 0.7.0
Description
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.
Related
Weakness · CWE (1)
- CWE-22 Improper Limitation of a Pathname to a Restricted Directory weakness
References
- https://github.com/basecamp/activerecord-tenanted/security/advisories/GHSA-pmwx-rm49-xv39 web
- https://github.com/rails/rails/security/advisories/GHSA-9xrj-h377-fr87 web
- https://github.com/basecamp/activerecord-tenanted/pull/307 web
- https://github.com/basecamp/activerecord-tenanted/commit/b242c8ad9bf58bbd7f5a032d153b0f29db54b9ba web
- https://github.com/basecamp/activerecord-tenanted package
- https://github.com/basecamp/activerecord-tenanted/releases/tag/v0.7.0 web