-
Notifications
You must be signed in to change notification settings - Fork 22.2k
Comparing changes
Open a pull request
base repository: rails/rails
base: v7.2.3
head repository: rails/rails
compare: v7.2.3.1
- 16 commits
- 59 files changed
- 5 contributors
Commits on Mar 17, 2026
-
1
Configuration menu - View commit details
-
Copy full SHA for 4a155f1 - Browse repository at this point
Copy the full SHA 4a155f1View commit details -
Configuration menu - View commit details
-
Copy full SHA for edfe591 - Browse repository at this point
Copy the full SHA edfe591View commit details -
Merge pull request #56247 from zzak/re-56234
Ensure PluginTestRunnerTest and TestRunnerInEngineTest use clean Bundler env
Configuration menu - View commit details
-
Copy full SHA for 3aff93b - Browse repository at this point
Copy the full SHA 3aff93bView commit details -
Merge pull request #56275 from zzak/re-56271
Use Bundler.with_unbundled_env for GeneratorsTestHelper run_app_update
Configuration menu - View commit details
-
Copy full SHA for a46e4dd - Browse repository at this point
Copy the full SHA a46e4ddView commit details -
Configuration menu - View commit details
-
Copy full SHA for 810dd43 - Browse repository at this point
Copy the full SHA 810dd43View commit details
Commits on Mar 23, 2026
-
Configurable maxmimum streaming chunk size
Makes sure that byte ranges for blobs don't exceed 100mb by default. Content ranges that are too big can result in denial of service. [CVE-2026-33174] [GHSA-r46p-8f7g-vvvg]
Configuration menu - View commit details
-
Copy full SHA for 8159a9c - Browse repository at this point
Copy the full SHA 8159a9cView commit details -
ActiveStorage::Streaming limit range requests to a single range
Multi-Range requests can easily be abused DoS the service. The backend could and should be optimized to handle multi-range requests better, but ultimately there isn't a whole lot of legitimate uses for them, and if you are exposing Active Storage to your users with large files, you should consider not using the default proxy. [CVE-2026-33658] [GHSA-p9fm-f462-ggrg]
Configuration menu - View commit details
-
Copy full SHA for b8a1665 - Browse repository at this point
Copy the full SHA b8a1665View commit details -
NumberConverter: reject scientific notation
BigDecimal support scientific notation, which allow expressing extremly large numbers with just a few bytes of input. This could be exploited to DOS a service if somehow user input is passed to number converter. [CVE-2026-33176] [GHSA-2j26-frm8-cmj9]
Configuration menu - View commit details
-
Copy full SHA for ebd6be1 - Browse repository at this point
Copy the full SHA ebd6be1View commit details -
Active Storage: Filter user supplied metadata in DirectUploadController
For direct uploads, metadata is an entirely user controlled blob. However over time the `metadata` store has been used to record internal state such as `analyzed` etc. Hence we shouldn't let users set these keys. This is a simple fix that is easy to backport, however the cleaner long term fix should be to stop using the metadata store for internal state, and instead use proper materialized columns. [CVE-2026-33173] [GHSA-qcfx-2mfw-w4cg]
Configuration menu - View commit details
-
Copy full SHA for 707c0f1 - Browse repository at this point
Copy the full SHA 707c0f1View commit details -
Fix
SafeBuffer#%to preserve unsafe statusFormatting an unsafe buffer should produce an unsafe buffer. [CVE-2026-33170] [GHSA-89vf-4333-qx8v]
Configuration menu - View commit details
-
Copy full SHA for c1ad0e8 - Browse repository at this point
Copy the full SHA c1ad0e8View commit details -
Configuration menu - View commit details
-
Copy full SHA for b54a4b3 - Browse repository at this point
Copy the full SHA b54a4b3View commit details -
Prevent path traversal in ActiveStorage DiskService
When DiskService receives a blob key containing path traversal segments (e.g. `../../etc/passwd`), the resolved filesystem path can escape the storage root directory. This allows reading or writing arbitrary files on the server. `DiskService#path_for` is the primary filesystem security check for all disk storage operations. This change adds path traversal protection: - `DiskService#path_for` now raises an `InvalidKeyError` when passed keys with dot segments (".", ".."), or if the resolved path is outside the storage root directory. - `#path_for` also now consistently raises `InvalidKeyError` if the key is invalid in any way, for example containing null bytes or having an incompatible encoding. Previously, the exception raised may have been `ArgumentError` or `Encoding::CompatibilityError`. - `DiskController` now explicitly rescues `InvalidKeyError` with appropriate HTTP status codes. Document that custom blob keys are trusted strings. These changes are defense-in-depth measures intended to limit the blast radius of developer errors, and are not a trust boundary. [CVE-2026-33195] [GHSA-9xrj-h377-fr87]Configuration menu - View commit details
-
Copy full SHA for 4933c1e - Browse repository at this point
Copy the full SHA 4933c1eView commit details -
Prevent glob injection in ActiveStorage DiskService#delete_prefixed
`Blob#delete` calls `DiskService#delete_prefixed` with a string that includes the blob key. In turn, `DiskService#delete_prefixed` pass that string to `Dir.glob`. If a developer is generating custom blob keys (or has mistakenly allowed untrusted input to be used as a blob key) and that key contains glob metacharacters, then it may be possible to delete unintended files. It may also be possible to delete unintended files if `delete_prefixed` is called directly with a prefix containing glob metacharacters. Update `delete_prefixed` to: - Update `delete_prefixed` to escape glob metacharacters in the resolved path before passing to `Dir.glob` - Extract a private method `escape_glob_metacharacters`. Note that this change breaks any existing code that is relying on `delete_prefixed` to expand glob metacharacters. This change presumes that is unintended behavior (as other storage services do not respect these metacharacters). Also note that this is a defense-in-depth measure to limit the blast radius of malicious keys, and is not a trust boundary. [CVE-2026-33202] [GHSA-73f9-jhhh-hr5m]
Configuration menu - View commit details
-
Copy full SHA for fa19073 - Browse repository at this point
Copy the full SHA fa19073View commit details -
Skip blank attribute names in Action View tag helpers
When a blank string is used as an HTML attribute name in tag helpers, `xml_name_escape` returns an empty string, producing malformed HTML that may be susceptible to mXSS attacks. `tag_options` now skips blank keys in all three iteration paths: the top-level options loop, and (for consistency) the inner data/aria hash loops. [CVE-2026-33168] [GHSA-v55j-83pf-r9cq]
Configuration menu - View commit details
-
Copy full SHA for 0b6f800 - Browse repository at this point
Copy the full SHA 0b6f800View commit details -
Configuration menu - View commit details
-
Copy full SHA for 8a379f4 - Browse repository at this point
Copy the full SHA 8a379f4View commit details -
Configuration menu - View commit details
-
Copy full SHA for ba76fca - Browse repository at this point
Copy the full SHA ba76fcaView commit details
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff v7.2.3...v7.2.3.1