Skip to content

Update decade-old Gemfile.lock and jQuery to clear security alerts - #138

Draft
jlepp wants to merge 1 commit into
mainfrom
jl/update-lockfile-and-jquery
Draft

Update decade-old Gemfile.lock and jQuery to clear security alerts#138
jlepp wants to merge 1 commit into
mainfrom
jl/update-lockfile-and-jquery

Conversation

@jlepp

@jlepp jlepp commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

What

Two dependency updates that clear the repo's entire security-alert backlog (63 Dependabot alerts, 5 critical) plus the one vulnerable-era library actually served to visitors.

1. Regenerate Gemfile.lock (github-pages 116 → 232)

The lockfile was frozen at github-pages v116 (~2016) — nokogiri 1.6.8.1, kramdown 1.11.1, activesupport 4.2.7 — and had accumulated all 63 open Dependabot alerts. Regenerated with Ruby 3.3 (matching GitHub's Pages build environment), resolving every flagged gem at/above its patched version:

gem old new patched needed
nokogiri 1.6.8.1 1.19.4 1.19.4 (4 criticals)
kramdown 1.11.1 2.4.0 2.3.0 (critical file-read)
jekyll 3.3.0 3.10.0 3.6.3
activesupport 4.2.7 8.1.3.1 7.2.3.1
faraday 1.9.3 2.14.3 1.10.6
addressable 2.8.0 2.9.0 2.9.0
concurrent-ruby 1.0.5 1.3.8 1.3.7

Risk context: production is unaffected either way — this site deploys via the legacy Pages build, which uses GitHub's own gem set server-side and ignores the committed lockfile. This change fixes local dev (the old lockfile no longer installs on any modern Ruby) and clears the alert backlog.

2. jQuery 1.9.1 → 3.7.1 (CDN)

jQuery 1.9.1 predates the CVE-2020-11022/11023 htmlPrefilter XSS fixes (patched in 3.5.0) and was the only vulnerable-era code actually shipped to browsers. Audited the site's scripts for jQuery-3-removed APIs (.size(), $.browser, .live(), etc.) — none used; the vendored isotope v2 uses the bridget adapter, which is jQuery-3-compatible.

Testing

  • bundle install && bundle exec jekyll build succeeds on the new lockfile (Ruby 3.3)
  • Built site served locally and verified in Chrome on jQuery 3.7.1:
    • 83 repos render, is-loaded set
    • isotope language filters work (All 83 → Ruby 42 → All 83)
    • GitHub-API-rate-limited degraded path (from #a7497be) still renders instead of spinning

Gemfile.lock was frozen at github-pages v116 (~2016) and had accrued
all 63 open Dependabot alerts (5 critical: nokogiri x4, kramdown x1).
Regenerated with Ruby 3.3 to github-pages 232 - the same version
GitHub's Pages build servers use - which resolves every flagged gem
at or above its patched version:

  nokogiri    1.6.8.1 -> 1.19.4
  kramdown    1.11.1  -> 2.4.0
  jekyll      3.3.0   -> 3.10.0
  activesupport 4.2.7 -> 8.1.3.1
  faraday, addressable, concurrent-ruby, json all current

Note: production is unaffected either way - the site deploys via the
legacy Pages build, which uses GitHub's own gem set and ignores this
lockfile. This only fixes local dev (the old lockfile no longer even
installed on modern Ruby) and clears the alert backlog.

Also bump the CDN jQuery 1.9.1 -> 3.7.1, which predated the
CVE-2020-11022/11023 htmlPrefilter XSS fixes and was the only
alert-era code actually served to visitors. Site JS uses no
jQuery-3-removed APIs; verified locally (jekyll build + Chrome):
83 repos render, isotope language filters work, and the
rate-limit-degraded path still renders.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant