<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/cve-2026-54659-pagy-pagy-i18n-locale-option-is-not-validated-before-being-used-in-a-file-path-f5rqol9mj" -->

---
title: CVE-2026-54659 (pagy): Pagy I18n locale option is not...
description: CVE-2026-54659 is a path traversal vulnerability in the Pagy Ruby pagination gem (versions 43.0.0–43.5.5). The `Pagy::I18n.locale=` method did not validate its...
canonical: https://daily.dev/posts/cve-2026-54659-pagy-pagy-i18n-locale-option-is-not-validated-before-being-used-in-a-file-path-f5rqol9mj
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: CVE-2026-54659 (pagy): Pagy I18n locale option is not validated before being used in a file path | daily.dev
og:description: CVE-2026-54659 is a path traversal vulnerability in the Pagy Ruby pagination gem (versions 43.0.0–43.5.5). The `Pagy::I18n.locale=` method did not validate its...
og:url: https://daily.dev/posts/cve-2026-54659-pagy-pagy-i18n-locale-option-is-not-validated-before-being-used-in-a-file-path-f5rqol9mj
og:image: https://api.daily.dev/og/posts/F5rQoL9Mj.png
og:image:alt: CVE-2026-54659 (pagy): Pagy I18n locale option is not validated before being used in a file path
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# CVE-2026-54659 (pagy): Pagy I18n locale option is not validated before being used in a file path

**[RUBYLAND](https://daily.dev/sources/rubyla)** · 1 min read · 1 upvotes · 0 comments

## Summary

CVE-2026-54659 is a path traversal vulnerability in the Pagy Ruby pagination gem (versions 43.0.0–43.5.5). The `Pagy::I18n.locale=` method did not validate its argument before using it as a file path component to load a locale dictionary file. Applications that pass unsanitized user input (e.g., `params[:locale]`) to this method are vulnerable to a file-existence oracle and server-side read of attacker-chosen `.yml` files (CWE-22/CWE-200). The fix is available in version 43.5.6. Only apps using untrusted input for locale assignment are affected.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://rubysec.com/advisories/CVE-2026-54659>

## Similar posts on daily.dev

- [CVE-2026-49342 \(yard\): YARD static cache reads raw traversal paths before router sanitization](https://daily.dev/posts/cve-2026-49342-yard-yard-static-cache-reads-raw-traversal-paths-before-router-sanitization-va2iyxxx2) · RUBYLAND · 0 upvotes · 0 comments
- [Path traversal flaw in AI dev platform Langflow exploited in attacks](https://daily.dev/posts/path-traversal-flaw-in-ai-dev-platform-langflow-exploited-in-attacks-spteyrcl6) · BleepingComputer · 0 upvotes · 0 comments
- [Critical Langflow Path Traversal Flaw Exploited for Unauthenticated RCE](https://daily.dev/posts/critical-langflow-path-traversal-flaw-exploited-for-unauthenticated-rce-fuqzjitk7) · Orca Security Blog · 0 upvotes · 0 comments

---

Tags: [#security](https://daily.dev/tags/security), [#ruby](https://daily.dev/tags/ruby)

[View this post on daily.dev](https://daily.dev/posts/cve-2026-54659-pagy-pagy-i18n-locale-option-is-not-validated-before-being-used-in-a-file-path-f5rqol9mj)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"CVE-2026-54659 (pagy): Pagy I18n locale option is not validated before being used in a file path","url":"https://daily.dev/posts/cve-2026-54659-pagy-pagy-i18n-locale-option-is-not-validated-before-being-used-in-a-file-path-f5rqol9mj","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/cve-2026-54659-pagy-pagy-i18n-locale-option-is-not-validated-before-being-used-in-a-file-path-f5rqol9mj"},"datePublished":"2026-07-31T18:20:42.433Z","dateModified":"2026-07-31T18:45:43.146Z","description":"CVE-2026-54659 is a path traversal vulnerability in the Pagy Ruby pagination gem (versions 43.0.0–43.5.5). The `Pagy::I18n.locale=` method did not validate its...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/5fa7bf38a8a9c178c1d458f9f735556c?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/5fa7bf38a8a9c178c1d458f9f735556c?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"RUBYLAND","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"RUBYLAND","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/rubyla","url":"https://daily.dev/sources/rubyla"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/cve-2026-54659-pagy-pagy-i18n-locale-option-is-not-validated-before-being-used-in-a-file-path-f5rqol9mj","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":1},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"security,ruby","timeRequired":"PT1M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"RUBYLAND","item":"https://daily.dev/sources/rubyla"},{"@type":"ListItem","position":3,"name":"CVE-2026-54659 (pagy): Pagy I18n locale option is not validated before being used in a file path"}]}
```

