<?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://db.gcve.eu</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>Wed, 11 Nov 2026 04:18:59 +0000</lastBuildDate>
    <item>
      <title>HSEC-2026-0011 — Superlinear encoding of numbers with large coefficients</title>
      <link>https://db.gcve.eu/vuln/hsec-2026-0011</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Hackage: scientific&lt;/p&gt;
&lt;p&gt;# Superlinear encoding of numbers with large coefficients&lt;/p&gt;
&lt;p&gt;Encoding (pretty-printing) a `Scientific` number whose coefficient has many
digits took time quadratic in the number of digits: the decimal digits were
extracted by repeatedly dividing the whole coefficient by 10, once per digit.
The `Show` instance, `Data.Text.Lazy.Builder.Scientific` and
`Data.ByteString.Builder.Scientific` — which `aeson` uses to encode JSON
numbers — all share this code path. A number with one million digits took
about a minute to show, and about a tenth of a second after the fix.&lt;/p&gt;
&lt;p&gt;This is a denial-of-service risk for applications that decode numbers from an
untrusted source and encode them again, e.g. JSON proxies, loggers or API
gateways built on `aeson`.&lt;/p&gt;
&lt;p&gt;## Resolution&lt;/p&gt;
&lt;p&gt;`scientific-0.3.9.0` reimplemented `normalize` and `toDecimalDigits` (the
digit-extraction primitive) to be practically linear in the coefficient size.&lt;/p&gt;
&lt;p&gt;Note that `scientific-0.3.9.0` introduced a regression of its own; see
HSEC-2026-0012. Upgrade
directly to `scientific-0.3.10.0` or later, which fixes both issues.&lt;/p&gt;
&lt;p&gt;## Credits&lt;/p&gt;
&lt;p&gt;Reported by Andrzej Rybczak (@arybczak); fixed by Oleg Grenrus (@phadej).&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Hackage: scientific&lt;/p&gt;
&lt;p&gt;# Superlinear encoding of numbers with large coefficients&lt;/p&gt;
&lt;p&gt;Encoding (pretty-printing) a `Scientific` number whose coefficient has many
digits took time quadratic in the number of digits: the decimal digits were
extracted by repeatedly dividing the whole coefficient by 10, once per digit.
The `Show` instance, `Data.Text.Lazy.Builder.Scientific` and
`Data.ByteString.Builder.Scientific` — which `aeson` uses to encode JSON
numbers — all share this code path. A number with one million digits took
about a minute to show, and about a tenth of a second after the fix.&lt;/p&gt;
&lt;p&gt;This is a denial-of-service risk for applications that decode numbers from an
untrusted source and encode them again, e.g. JSON proxies, loggers or API
gateways built on `aeson`.&lt;/p&gt;
&lt;p&gt;## Resolution&lt;/p&gt;
&lt;p&gt;`scientific-0.3.9.0` reimplemented `normalize` and `toDecimalDigits` (the
digit-extraction primitive) to be practically linear in the coefficient size.&lt;/p&gt;
&lt;p&gt;Note that `scientific-0.3.9.0` introduced a regression of its own; see
HSEC-2026-0012. Upgrade
directly to `scientific-0.3.10.0` or later, which fixes both issues.&lt;/p&gt;
&lt;p&gt;## Credits&lt;/p&gt;
&lt;p&gt;Reported by Andrzej Rybczak (@arybczak); fixed by Oleg Grenrus (@phadej).&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/hsec-2026-0011</guid>
    </item>
  </channel>
</rss>
