Catégories
CVE-2026-54659

Divulgation d'information dans pagy (CVE-2026-54659)

Résumé

Vulnérabilité dans pagy (CVE-2026-54659). Risque d'opérations non autorisées ou de divulgation. Exploitable via nil. Atténuation : mise à jour vers 43.5.6 ou plus.

Description d'origine

La description telle que publiée par la source (souvent en anglais).

Summary

Pagy::I18n.locale= did not validate its argument before using it as a
path component to load the matching dictionary file (.yml). An
application that assigns untrusted input to the locale — e.g. the common
pattern Pagy::I18n.locale = params[:locale] — let that input influence
which file Pagy attempted to load.

Details

The setter stored the value as-is, and the loader joined it into a path
and read it:

# gem/lib/pagy/modules/i18n/i18n.rb
def locale=(value)
  Thread.current[:pagy_locale] = value.to_s
end

# ...later, when translating:
path = pathnames.reverse.map { |p| p.join("#{locale}.yml") }.find(&:exist?)
dictionary = YAML.load_file(path)[locale]

Because the locale was used verbatim, a value such as an absolute path or
a ../-style string redirected the lookup outside the locales directory.
Pagy's subsequent structural check (dictionary['pagy']['p11n'])
prevents the file's contents from being returned, so this is not a
direct file read.

Fixed in 43.5.6 by constraining the locale to a BCP 47 shape before use:

LOCALE_PATTERN = /\A[a-zA-Z]{2,8}(-[a-zA-Z0-9]{1,8})*\z/

def locale=(value)
  Thread.current[:pagy_locale] = value.to_s[LOCALE_PATTERN]
end

Any non-matching value (including nil) resolves to the default locale
and never reaches the file lookup.

PoC

In an application that sets Pagy::I18n.locale = params[:locale], the
loader appends .yml and reads .yml, so the request param
controls the target pat…

Source: GitHub Security Advisories (Global) NVD GitHub Advisory

Résumé généré automatiquement

Assemblé par SecPulse à partir des données sources (CVSS, CWE, versions affectées) à l'aide de modèles, sans IA. Vérifiez la description d'origine et les références ci-dessous.

Une vulnérabilité référencée CVE-2026-54659 a été découverte dans pagy.
Des attaquants peuvent cibler un point d'entrée spécifique comme nil à distance pour détourner le produit.
Risque d'opérations non autorisées ou de divulgation.
Action : mettez à jour pagy vers 43.5.6 ou supérieur.
En cas de doute, contactez votre service informatique ou cherchez « pagy CVE-2026-54659 » sur le site de l'éditeur.

CVE-2026-54659 (pagy) — CWE-200
Surface d'attaque : nil / YAML.load_file
Correctif : 43.5.6 — appliquer immédiatement
Plan : 1) Audit SBOM, 2) Mise à jour staging→prod, 3) Surveillance WAF/proxy sur les endpoints affectés, 4) Recherche d'IOC dans les logs.
Réfs : voir GHSA / avis éditeur / version corrigée liés sur cette page.

❓ Quel est le problème

Une divulgation d'information (CWE-200) affecte pagy. Les attaquants atteignent le code vulnérable via nil.

📍 Périmètre concerné

Consultez l'avis de l'éditeur pour les versions affectées de pagy. Surface d'attaque : nil / YAML.load_file.

🔥 Gravité

Gravité : ?. Risque d'opérations non autorisées ou de divulgation.

🔧 Comment corriger

Mettre à jour vers 43.5.6.

🛡️ Contournement

En attendant le correctif : désactivez la fonctionnalité concernée, appliquez des règles WAF, ou restreignez l'accès par ACL réseau.

🔍 Détection

Recherchez dans les logs des requêtes correspondant aux IOC connus de cette CVE. Auditez les SBOM/dépendances.

Actions de réponse

Étapes concrètes et exemples de commandes que les équipes SOC/SRE doivent exécuter dans l'ordre

  1. 1
    Identify exposure identify
    grep -r 'pagy' . | grep -v node_modules

    リポジトリと本番環境の依存ファイル (package-lock.json / requirements.txt / go.sum / Gemfile.lock 等) で pagy を grep し、稼働しているサービス・バージョンを把握する。

  2. 2
    Apply patch patch
    Upgrade pagy to 43.5.6

    ステージング環境で 43.5.6 に上げて回帰テスト → 本番反映。回帰テストはアプリの主要ハッピーパスを含めること。

  3. 3
    Post-deployment verification verify
    Confirm patched version is live in production

    パッチ適用後、ステージングで PoC または同等の悪用パターンを再現して脆弱性が閉じたことを確認。本番ではアクセスログ・WAF でアラート再発が無いか継続監視。

Paquets affectés

rubygems pagy
[{"type":"ECOSYSTEM","events":[{"introduced":"43.0.0"},{"fixed":"43.5.6"}]}]

Références

Nous utilisons des cookies pour l'analyse d'audience et la mesure publicitaire. Ce réglage s'applique à tous les sites de Game co., Ltd. En savoir plus