<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Most recent entries from all</title>
    <link>https://cve.radiocsirt.org</link>
    <description>Contains only the most 10 recent entries.</description>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Sat, 10 Oct 2026 19:59:53 +0000</lastBuildDate>
    <item>
      <title>EUVD-2026-342314</title>
      <link>https://cve.radiocsirt.org/vuln/euvd-2026-342314</link>
      <description>EUVD-2026-342314</description>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/euvd-2026-342314</guid>
    </item>
    <item>
      <title>fkie_cve-2026-54659</title>
      <link>https://cve.radiocsirt.org/vuln/fkie_cve-2026-54659</link>
      <description>&lt;p&gt;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 &amp;lt;locale&amp;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.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;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 &amp;lt;locale&amp;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.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/fkie_cve-2026-54659</guid>
    </item>
    <item>
      <title>GHSA-2xmw-f8j8-wfxc — Pagy I18n locale option is not validated before being used in a file path</title>
      <link>https://cve.radiocsirt.org/vuln/ghsa-2xmw-f8j8-wfxc</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; RubyGems: pagy&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;`Pagy::I18n.locale=` did not validate its argument before using it as a
path component to load the matching dictionary file (`&amp;lt;locale&amp;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.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;The setter stored the value as-is, and the loader joined it into a path
and read it:&lt;/p&gt;
&lt;p&gt;```ruby
# gem/lib/pagy/modules/i18n/i18n.rb
def locale=(value)
  Thread.current[:pagy_locale] = value.to_s
end&lt;/p&gt;
&lt;p&gt;# ...later, when translating:
path = pathnames.reverse.map { |p| p.join(&amp;#34;#{locale}.yml&amp;#34;) }.find(&amp;amp;:exist?)
dictionary = YAML.load_file(path)[locale]
```&lt;/p&gt;
&lt;p&gt;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&amp;#39;s subsequent structural check (`dictionary[&amp;#39;pagy&amp;#39;][&amp;#39;p11n&amp;#39;]`)
prevents the file&amp;#39;s contents from being returned, so this is **not** a
direct file read.&lt;/p&gt;
&lt;p&gt;Fixed in 43.5.6 by constraining the locale to a BCP 47 shape before use:&lt;/p&gt;
&lt;p&gt;```ruby
LOCALE_PATTERN = /\A[a-zA-Z]{2,8}(-[a-zA-Z0-9]{1,8})*\z/&lt;/p&gt;
&lt;p&gt;def locale=(value)
  Thread.current[:pagy_locale] = value.to_s[LOCALE_PATTERN]
end
```&lt;/p&gt;
&lt;p&gt;Any non-matching value (including `nil`) resolves to the default locale
and never reaches the file lookup.&lt;/p&gt;
&lt;p&gt;### PoC&lt;/p&gt;
&lt;p&gt;In an application that sets `Pagy::I18n.locale = params[:locale]`, the
loader appends `.yml` and reads `&amp;lt;locale&amp;gt;.yml`, so the request param
contro…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; RubyGems: pagy&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;`Pagy::I18n.locale=` did not validate its argument before using it as a
path component to load the matching dictionary file (`&amp;lt;locale&amp;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.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;The setter stored the value as-is, and the loader joined it into a path
and read it:&lt;/p&gt;
&lt;p&gt;```ruby
# gem/lib/pagy/modules/i18n/i18n.rb
def locale=(value)
  Thread.current[:pagy_locale] = value.to_s
end&lt;/p&gt;
&lt;p&gt;# ...later, when translating:
path = pathnames.reverse.map { |p| p.join(&amp;#34;#{locale}.yml&amp;#34;) }.find(&amp;amp;:exist?)
dictionary = YAML.load_file(path)[locale]
```&lt;/p&gt;
&lt;p&gt;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&amp;#39;s subsequent structural check (`dictionary[&amp;#39;pagy&amp;#39;][&amp;#39;p11n&amp;#39;]`)
prevents the file&amp;#39;s contents from being returned, so this is **not** a
direct file read.&lt;/p&gt;
&lt;p&gt;Fixed in 43.5.6 by constraining the locale to a BCP 47 shape before use:&lt;/p&gt;
&lt;p&gt;```ruby
LOCALE_PATTERN = /\A[a-zA-Z]{2,8}(-[a-zA-Z0-9]{1,8})*\z/&lt;/p&gt;
&lt;p&gt;def locale=(value)
  Thread.current[:pagy_locale] = value.to_s[LOCALE_PATTERN]
end
```&lt;/p&gt;
&lt;p&gt;Any non-matching value (including `nil`) resolves to the default locale
and never reaches the file lookup.&lt;/p&gt;
&lt;p&gt;### PoC&lt;/p&gt;
&lt;p&gt;In an application that sets `Pagy::I18n.locale = params[:locale]`, the
loader appends `.yml` and reads `&amp;lt;locale&amp;gt;.yml`, so the request param
contro…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/ghsa-2xmw-f8j8-wfxc</guid>
    </item>
  </channel>
</rss>
