<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <id>https://cve.radiocsirt.org/rss/recent/all/10</id>
  <title>Most recent entries from all</title>
  <updated>2026-10-10T20:00:06.841981+00:00</updated>
  <author>
    <name>Vulnerability-Lookup</name>
    <email>csirt@opendfir.org</email>
  </author>
  <link href="https://cve.radiocsirt.org" rel="alternate"/>
  <generator uri="https://lkiesow.github.io/python-feedgen" version="1.0.0">python-feedgen</generator>
  <subtitle>Contains only the most 10 recent entries.</subtitle>
  <entry>
    <id>https://cve.radiocsirt.org/vuln/euvd-2026-342314</id>
    <title>EUVD-2026-342314</title>
    <updated>2026-10-10T20:00:06.844016+00:00</updated>
    <content>EUVD-2026-342314</content>
    <link href="https://cve.radiocsirt.org/vuln/euvd-2026-342314"/>
  </entry>
  <entry>
    <id>https://cve.radiocsirt.org/vuln/fkie_cve-2026-54659</id>
    <title>fkie_cve-2026-54659</title>
    <updated>2026-10-10T20:00:06.844047+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>Pagy is agnostic pagination in plain Ruby. From 43.0.0 until 43.5.6, Pagy::I18n.locale= in gem/lib/pagy/modules/i18n/i18n.rb stored locale values verbatim and later used them as &lt;locale&gt;.yml path components, allowing untrusted params[:locale] values with absolute paths or ../ sequences to create a file existence and readability oracle for YAML files. This issue is fixed in version 43.5.6.</p>
      </div>
    </content>
    <link href="https://cve.radiocsirt.org/vuln/fkie_cve-2026-54659"/>
  </entry>
  <entry>
    <id>https://cve.radiocsirt.org/vuln/ghsa-2xmw-f8j8-wfxc</id>
    <title>GHSA-2xmw-f8j8-wfxc — Pagy I18n locale option is not validated before being used in a file path</title>
    <updated>2026-10-10T20:00:06.844079+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> RubyGems: pagy</p>
<p>### Summary</p>
<p>`Pagy::I18n.locale=` did not validate its argument before using it as a
path component to load the matching dictionary file (`&lt;locale&gt;.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.</p>
<p>### Details</p>
<p>The setter stored the value as-is, and the loader joined it into a path
and read it:</p>
<p>```ruby
# gem/lib/pagy/modules/i18n/i18n.rb
def locale=(value)
  Thread.current[:pagy_locale] = value.to_s
end</p>
<p># ...later, when translating:
path = pathnames.reverse.map { |p| p.join("#{locale}.yml") }.find(&amp;:exist?)
dictionary = YAML.load_file(path)[locale]
```</p>
<p>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.</p>
<p>Fixed in 43.5.6 by constraining the locale to a BCP 47 shape before use:</p>
<p>```ruby
LOCALE_PATTERN = /\A[a-zA-Z]{2,8}(-[a-zA-Z0-9]{1,8})*\z/</p>
<p>def locale=(value)
  Thread.current[:pagy_locale] = value.to_s[LOCALE_PATTERN]
end
```</p>
<p>Any non-matching value (including `nil`) resolves to the default locale
and never reaches the file lookup.</p>
<p>### PoC</p>
<p>In an application that sets `Pagy::I18n.locale = params[:locale]`, the
loader appends `.yml` and reads `&lt;locale&gt;.yml`, so the request param
contro…</p></div>
    </content>
    <link href="https://cve.radiocsirt.org/vuln/ghsa-2xmw-f8j8-wfxc"/>
  </entry>
</feed>
