Skip to content

chore(deps): bump actionpack from 8.1.4 to 8.1.4.1 - #3087

Open
dependabot[bot] wants to merge 1 commit into
masterfrom
dependabot/bundler/actionpack-8.1.4.1
Open

dependabot[bot] wants to merge 1 commit into
masterfrom
dependabot/bundler/actionpack-8.1.4.1

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Nov 10, 2026

Copy link
Copy Markdown
Contributor

Bumps actionpack from 8.1.4 to 8.1.4.1.

Release notes

Sourced from actionpack's releases.

8.1.4.1

Active Support

  • ActiveSupport::MessagePack no longer deserializes an unsafe ActiveSupport::SafeBuffer as html_safe.

    A SafeBuffer that was no longer html_safe?, for example after an in-place gsub!, was deserialized as an html_safe SafeBuffer. It is now serialized with an unsafe marker and deserialized as a String. Earlier versions of Rails cannot read an unsafe buffer serialized this way.

    [GHSA-2w9f-fxwj-w2qf]

    Jean Boussier

  • ActiveSupport::Inflector#safe_constantize matches the constant name in a LoadError message as a literal string instead of building a Regexp from it.

    The name's segments were interpolated unescaped into the pattern, so input that reaches safe_constantize, such as the channel identifier in an Action Cable subscribe command, chose the source passed to the regexp compiler.

    [GHSA-8474-xrp6-wh69]

    Jeremy Daer

Active Model

  • No changes.

Active Record

  • No changes.

Action View

  • Skip attribute names in tag helpers that are blank once converted to a string.

    A Symbol such as :" " is not blank, because Symbol#blank? is Symbol#empty?, so it reached the escaping step and produced an attribute with no name. The asset helpers symbolize their keys, so an ordinary String key reached the same place.

    [GHSA-68p9-83h6-5wpj]

    Mike Dalessio

... (truncated)

Changelog

Sourced from actionpack's changelog.

Rails 8.1.4.1 (November 03, 2026)

  • Apply config.action_dispatch.cookies_same_site_protection to every session store.

    ActionDispatch::Session::CacheStore, MemCacheStore and third-party stores built on AbstractStore or the session mixins sent session cookies with no SameSite attribute. Only CookieStore applied the configured default.

    [GHSA-gmj8-hvj3-49mw]

    Jean Boussier

  • Prevent ActionController::Live streams from blocking when a full buffer is closed or aborted.

    [GHSA-rwvh-fw6r-pwvp]

    Jeremy Daer

  • Set and extend the Vary header for rendered responses according to the request headers used in format negotiation.

    Vary: Accept was only added when the request carried a usable Accept header. A response to a request without one, negotiated to HTML or JavaScript, could be stored by a shared cache and served to later clients that requested a different representation.

    Responses now vary on Accept and X-Requested-With whenever the format is not given by the URL. XHR requests without Accept also vary on Content-Type, which Rails uses as a legacy format fallback. When config.action_dispatch.ignore_accept_header is enabled, responses vary only on X-Requested-With.

    These fields are appended to an existing Vary value without duplicating fields case-insensitively. Vary: * remains unchanged.

    [GHSA-r9jg-fmfx-2gv6]

    Jeremy Daer

  • Skip writing a CacheStore session that another request deleted while this one ran.

    A request that loaded a session from ActionDispatch::Session::CacheStore wrote it back when it finished, even after a concurrent reset_session or a server-side delete had removed it, so the old session ID worked again.

    [GHSA-2586-8ghr-69fj]

... (truncated)

Commits
  • 3f290b7 Preparing for 8.1.4.1 release
  • 2d9f502 Apply cookies_same_site_protection to every session store
  • ccbfc09 Avoid blocking Live buffer termination
  • 7a955ca Vary rendered responses by negotiation headers
  • d479192 Skip writing a CacheStore session deleted mid-request
  • 849a6c3 Don't write upgraded cookies to a response that skips the session
  • 2a01a5a Detect conflicts in Forwarded and X-Forwarded-For in ActionDispatch::RemoteIp
  • 8ba746e Return self from Parameters#each_key with a block
  • See full diff in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    You can disable automated security fix PRs for this repo from the Security Alerts page.

Bumps [actionpack](https://github.com/rails/rails) from 8.1.4 to 8.1.4.1.
- [Release notes](https://github.com/rails/rails/releases)
- [Changelog](https://github.com/rails/rails/blob/v8.1.4.1/actionpack/CHANGELOG.md)
- [Commits](rails/rails@v8.1.4...v8.1.4.1)

---
updated-dependencies:
- dependency-name: actionpack
  dependency-version: 8.1.4.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies ruby Pull requests that update Ruby code labels Nov 10, 2026
@mroderick

Copy link
Copy Markdown
Collaborator

Dependency Upgrade Review

Verdict: Likely Compatible (head 8c31ce6bac47ffb5219620d287b0d05484515496) · Confidence: Low

Lockfile-only bump of the Rails 8.1.4 suite to the 8.1.4.1 security patch release (plus minitest 6.1.0). The actionpack changes touch paths planner runs (session cookie jar, RemoteIp, rendering headers) but remove no API planner uses, and planner's own suite passes; however the round-trip probe failed, so the planner↔auth OAuth contract is unconfirmed at this head — re-run it before merging.

Checks

Check Result
planner suite pass
auth suite fail
round-trip probe fail

Contracts

Contract Status Basis
OAuth 2.1 round trip: planner authorize/token/userinfo/JWKS against auth (client_id 'planner', PKCE) Unverified Probe failed at this head; planner side read in lib/omniauth/strategies/codebar.rb and covered only by WebMock spec.
id_token: aud 'planner'; github_id claim only for GitHub-linked users; email/name from UserInfo Partially verified Read auth's test/integration/jwt-payload.test.js and the strategy's verify/fetch code; the suite asserting it failed in the harness.
Session cookie '_planner_session' (CookieStore, :json, 24h) unaffected by cookie-jar fixes Partially verified Read actionpack cookies.rb and session-store diffs; no planner test exercises the cookie jar at this head.
RemoteIp spoofing check behind nginx (X-Forwarded-For only) Partially verified Read remote_ip.rb change in the compare; planner sets no ip_spoofing_check override.
Compatibility analysis — 16 packages
  • actionpack 8.1.4 → 8.1.4.1: Security patch: Parameters#each_key returns self, RemoteIp raises on Forwarded/X-Forwarded-For conflicts (spoofing check on by default), cookie-upgrade and CacheStore session-write fixes, same_site applied to all session stores, Vary negotiation headers on rendered responses. Behavior changes on paths planner runs; no API planner calls was removed.
  • actionview 8.1.4 → 8.1.4.1: strip_tags now escapes quotes (planner's event meta description output changes cosmetically), highlight and tag-attribute hardening. Tightens rails-html-sanitizer to >= 1.7.2, already satisfied by the locked 1.7.2.
  • activestorage 8.1.4 → 8.1.4.1: ffmpeg format whitelist, GCS upload signing/length, ImageMagick policy.xml and filename sanitization fixes. Planner uses Disk service and mini_magick 5.4.0 (>= 5.1, no boot raise); GCS and ffmpeg paths are unused.
  • activesupport 8.1.4 → 8.1.4.1: safe_constantize LoadError regexp fix and MessagePack html_safe serialization change. Planner uses constantize on internal class names only and no MessagePack serializer (cookies are :json), so neither applies.
  • actionmailbox 8.1.4 → 8.1.4.1: Mailgun ingress timestamp-drift fix; planner has no Mailbox/Mailgun references, so unused.
  • actionmailer 8.1.4 → 8.1.4.1: Gem-version bump only (CHANGELOG/gem_version files); no behavioral change.
  • actioncable 8.1.4 → 8.1.4.1: Gem-version bump only; no behavioral change.
  • actiontext 8.1.4 → 8.1.4.1: Gem-version bump only; no behavioral change.
  • activejob 8.1.4 → 8.1.4.1: Gem-version bump only; no behavioral change.
  • activemodel 8.1.4 → 8.1.4.1: Gem-version bump only; no behavioral change.
  • activerecord 8.1.4 → 8.1.4.1: Gem-version bump only; no behavioral change.
  • railties 8.1.4 → 8.1.4.1: Gem-version bump only; no behavioral change.
  • rails 8.1.4 → 8.1.4.1: Umbrella gem pinned to the coordinated 8.1.4.1 release by equal-version constraints across the suite.
  • minitest 6.0.6 → 6.1.0: Transitive test-framework bump (prism constraint widened to >= 1.5, < 3); planner specs run through RSpec and the suite passed at this head.
  • rails-html-sanitizer (constraint-only): actionview now requires >= 1.7.2; locked version unchanged at 1.7.2 with loofah 2.25.3 and nokogiri 1.19.6, so no transitive upgrade occurs.
  • prism (constraint-only): minitest 6.1.0 widens its prism constraint; locked prism 1.9.0 unchanged.
Usage of 16 dependencies
  • actionpack: params.expect in 20 controllers (app/controllers); CookieStore session + :json serializer (config/initializers/session_store.rb, cookies_serializer.rb); RemoteIp middleware at defaults behind nginx (config/nginx.conf.erb sets X-Forwarded-For only); session state/PKCE in lib/omniauth/strategies/codebar.rb.
  • actionview: strip_tags in app/views/events/_meta_tags.html.haml; simple_format in app/views/admin/chapters/show.html.haml and admin/groups/show.html.haml; HAML views throughout.
  • activestorage: variant_processor :mini_magick (config/application.rb); service :local Disk (config/environments/production.rb).
  • activesupport: Framework-wide; constantize on internal class names in app/presenters/event_presenter.rb; no MessagePack serializer, no untrusted safe_constantize.
  • actionmailbox: Not used — no action_mailbox references in app/config/Gemfile.
  • actionmailer: app/mailers (framework-standard); no Mailgun ingress references.
  • actioncable: Loaded via the rails umbrella (Turbo/Stimulus frontend); no direct call sites.
  • actiontext: Loaded via the rails umbrella; no direct call sites.
  • activejob: ApplicationJob base in app/jobs (Delayed Job backend); APIs unchanged by this release.
  • activemodel: Framework-wide via activerecord; no isolated call sites.
  • activerecord: Models across app/models; APIs unchanged by this release (gem_version only).
  • railties: Application boot/config; gem_version-only change.
  • rails: Umbrella gem pin ('~> 8.1.3' in Gemfile, resolved to 8.1.4.1).
  • minitest: Transitive via rails/shoulda-matchers; planner specs run through RSpec.
  • rails-html-sanitizer: Via actionview sanitizer; pinned 1.7.2 unchanged.
  • prism: Via minitest/irb; pinned 1.9.0 unchanged.
Test coverage
  • Strong: planner-suite passed at the head (given result), including the 440-line WebMock spec for the codebar OmniAuth strategy and request specs over sessions and params.expect controllers.
  • Thin: no planner spec exercises RemoteIp with both Forwarded and X-Forwarded-For present, the one middleware change on a path planner runs.
  • Gap: the round-trip probe failed, so the planner↔auth OAuth contract is unverified at this head.
  • Gap: auth-suite failed wholesale across 9 files including DB-independent ones (health, home), so its result carries no signal about this diff.
Calibration and confidence

Confidence: Low — The diff analysis is clean and planner-suite passes, but two of the three given verification checks (auth-suite, probe) failed and neither could be reproduced here, leaving the only end-to-end contract unverified.

  1. Weakest claim: Attributing the auth-suite and probe failures to auth-side infrastructure is inference from the uniform failure pattern; neither could be reproduced locally (Apple container runtime absent in this checkout).
  2. Relied on but unverified: That no 8.1.4.1 behavior change (RemoteIp dual-header raise, Vary headers, cookie-write fixes) breaks the OAuth round trip the probe exercises.
  3. Falsifier: Re-run auth-suite and probe with a healthy auth-side Postgres: if the probe still fails on planner 8.1.4.1 while passing on 8.1.4, the bump breaks the round trip and this verdict is wrong.

Failure diagnosis

Failing tests: auth-suite: test/features/admin.test.js, authentication.test.js, health.test.js, home.test.js, magic-links.test.js, oauth-provider.test.js, profile.test.js, test/integration/jwt-payload.test.js, oauth-flow.test.js, probe (round-trip)
Likely cause: All nine auth test files failed uniformly, including DB-independent paths (health, home), which points at an auth-side infrastructure/setup failure rather than the planner gem bump: the suite runs only in codebar_auth and never loads planner code, it merely seeds a client registration pointing at planner's callback URL. The suite requires Apple's container runtime and Postgres on port 5433 (test/helpers/container.js, scripts/container.sh), neither available in this checkout. The probe failure shares that unverified cause and leaves the planner↔auth OAuth round trip unconfirmed; no test failure names a Rails API affected by 8.1.4.1.
Location: codebar_auth test harness (test/helpers/container.js, scripts/container.sh) and the probe harness; planner-side Gemfile.lock change itself shows no incompatibility

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies ruby Pull requests that update Ruby code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant