<?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 osv_rustsec</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>Fri, 02 Oct 2026 07:59:23 +0000</lastBuildDate>
    <item>
      <title>RUSTSEC-2026-0318 — Sending custom to-device messages may panics</title>
      <link>https://cve.radiocsirt.org/vuln/rustsec-2026-0318</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; crates.io: matrix-sdk-crypto&lt;/p&gt;
&lt;p&gt;Using the `IdentityBasedStrategy` setting when calling
`Device::encrypt_event_raw` or `OlmMachine::encrypt_content_for_devices` may
cause a panic if the recipient does not have cross-signing keys.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; crates.io: matrix-sdk-crypto&lt;/p&gt;
&lt;p&gt;Using the `IdentityBasedStrategy` setting when calling
`Device::encrypt_event_raw` or `OlmMachine::encrypt_content_for_devices` may
cause a panic if the recipient does not have cross-signing keys.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/rustsec-2026-0318</guid>
      <pubDate>Tue, 29 Sep 2026 12:00:00 +0000</pubDate>
    </item>
    <item>
      <title>RUSTSEC-2026-0305 — Use-after-free when XML includes have duplicated entities</title>
      <link>https://cve.radiocsirt.org/vuln/rustsec-2026-0305</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; crates.io: librsvg&lt;/p&gt;
&lt;p&gt;Librsvg uses libxml2, a C library, to parse XML.  When librsvg parses
an SVG document which has a nested Xinclude, an XML entity declaration
with a duplicate name as an existing one can cause a use-after-free error.&lt;/p&gt;
&lt;p&gt;While libxml2 is expanding an internal entity, a recursive XInclude
can parse another document that declares an entity with the same
name. Both parses use the same `XmlState` entity
map on the librsvg side. `entity_insert()` replaces the first entry, whose `Drop`
implementation calls `xmlFreeNode()`. The outer `xmlCtxtParseEntity()`
then keeps using the freed 144-byte `xmlEntity`.&lt;/p&gt;
&lt;p&gt;The included parse should not free an entity that the outer parser is still using.&lt;/p&gt;
&lt;p&gt;The fix is in commit 8a1b0cd319e9af2d1e9cf878081dd77f227a0504, where
librsvg will no longer free xmlEntity pointers that libxml2 is still
using.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; crates.io: librsvg&lt;/p&gt;
&lt;p&gt;Librsvg uses libxml2, a C library, to parse XML.  When librsvg parses
an SVG document which has a nested Xinclude, an XML entity declaration
with a duplicate name as an existing one can cause a use-after-free error.&lt;/p&gt;
&lt;p&gt;While libxml2 is expanding an internal entity, a recursive XInclude
can parse another document that declares an entity with the same
name. Both parses use the same `XmlState` entity
map on the librsvg side. `entity_insert()` replaces the first entry, whose `Drop`
implementation calls `xmlFreeNode()`. The outer `xmlCtxtParseEntity()`
then keeps using the freed 144-byte `xmlEntity`.&lt;/p&gt;
&lt;p&gt;The included parse should not free an entity that the outer parser is still using.&lt;/p&gt;
&lt;p&gt;The fix is in commit 8a1b0cd319e9af2d1e9cf878081dd77f227a0504, where
librsvg will no longer free xmlEntity pointers that libxml2 is still
using.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/rustsec-2026-0305</guid>
      <pubDate>Wed, 23 Sep 2026 12:00:00 +0000</pubDate>
    </item>
    <item>
      <title>RUSTSEC-2026-0317 — A 512-byte workbook can provoke a multi-gigabyte allocation and abort the process</title>
      <link>https://cve.radiocsirt.org/vuln/rustsec-2026-0317</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; crates.io: sheets-diff&lt;/p&gt;
&lt;p&gt;Affected versions passed caller-supplied bytes to `calamine`&amp;#39;s `Xlsx::new` without first checking
that they were a ZIP archive. `Xlsx::new` tests for password protection on its first line, which
parses the input as an OLE/CFB container, and a sector-count field read from the file&amp;#39;s own header
reaches `Vec::with_capacity` without being checked against the file&amp;#39;s actual length. A 512-byte input
can therefore request several gigabytes; 9,261,285,372 bytes was measured.&lt;/p&gt;
&lt;p&gt;**The oversized allocation is always attempted. Whether it aborts depends on what the allocator can
satisfy.** On a large host with overcommit the reservation is granted untouched and the call returns
an ordinary &amp;#34;not an xlsx file&amp;#34; error, which looks like a malformed file being correctly rejected.
Under a memory limit the same bytes give `memory allocation of N bytes failed` and the process
aborts, which is not a `Result` a caller can handle. Containers with a memory limit, small hosts and
CI runners are where this lands, so testing on a development machine can wrongly suggest the crate is
unaffected.&lt;/p&gt;
&lt;p&gt;Every entry point reaches it, not only `compare_bytes`: the path- and reader-based APIs funnel through
the same internal open. Neither `Limits::default()` nor `Limits::hardened()` prevents it, because
`max_input_bytes` bounds the length of the input while the allocation&amp;#39;s size comes from a field
inside it.&lt;/p&gt;
&lt;p&gt;Fixed in 3.2.0, which declines input that does not begin with the ZIP magic before the parser sees
it, remov…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; crates.io: sheets-diff&lt;/p&gt;
&lt;p&gt;Affected versions passed caller-supplied bytes to `calamine`&amp;#39;s `Xlsx::new` without first checking
that they were a ZIP archive. `Xlsx::new` tests for password protection on its first line, which
parses the input as an OLE/CFB container, and a sector-count field read from the file&amp;#39;s own header
reaches `Vec::with_capacity` without being checked against the file&amp;#39;s actual length. A 512-byte input
can therefore request several gigabytes; 9,261,285,372 bytes was measured.&lt;/p&gt;
&lt;p&gt;**The oversized allocation is always attempted. Whether it aborts depends on what the allocator can
satisfy.** On a large host with overcommit the reservation is granted untouched and the call returns
an ordinary &amp;#34;not an xlsx file&amp;#34; error, which looks like a malformed file being correctly rejected.
Under a memory limit the same bytes give `memory allocation of N bytes failed` and the process
aborts, which is not a `Result` a caller can handle. Containers with a memory limit, small hosts and
CI runners are where this lands, so testing on a development machine can wrongly suggest the crate is
unaffected.&lt;/p&gt;
&lt;p&gt;Every entry point reaches it, not only `compare_bytes`: the path- and reader-based APIs funnel through
the same internal open. Neither `Limits::default()` nor `Limits::hardened()` prevents it, because
`max_input_bytes` bounds the length of the input while the allocation&amp;#39;s size comes from a field
inside it.&lt;/p&gt;
&lt;p&gt;Fixed in 3.2.0, which declines input that does not begin with the ZIP magic before the parser sees
it, remov…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/rustsec-2026-0317</guid>
      <pubDate>Tue, 29 Sep 2026 12:00:00 +0000</pubDate>
    </item>
    <item>
      <title>RUSTSEC-2026-0213 — XSS in ammonia via SVG `animate` and `set` animation tags</title>
      <link>https://cve.radiocsirt.org/vuln/rustsec-2026-0213</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; crates.io: ammonia&lt;/p&gt;
&lt;p&gt;The following SVG will produce a link with a javascript scheme.
If the user clicks this link, they will run it.&lt;/p&gt;
&lt;p&gt;```xml
&amp;lt;svg xmlns=&amp;#34;http://www.w3.org/2000/svg&amp;#34;&amp;gt;
  &amp;lt;a&amp;gt;
    &amp;lt;set attributeName=&amp;#34;href&amp;#34; to=&amp;#34;javascript:alert(&amp;#39;SET_XSS&amp;#39;)&amp;#34;&amp;gt;&amp;lt;/set&amp;gt;
    &amp;lt;text y=&amp;#34;30&amp;#34;&amp;gt;Click set&amp;lt;/text&amp;gt;
  &amp;lt;/a&amp;gt;
&amp;lt;/svg&amp;gt;
```&lt;/p&gt;
&lt;p&gt;Ammonia did not apply attribute filters based on `attributeName`,
so the contents of the `to`, `from`, and `values` tags were not sanitized as URLs.&lt;/p&gt;
&lt;p&gt;Applications that do not explicitly allow either of these tags should not be affected,
since neither are allowed by default.&lt;/p&gt;
&lt;p&gt;---&lt;/p&gt;
&lt;p&gt;**Discovered by:** [Younghun Ko (@koyokr)](https://github.com/koyokr)&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; crates.io: ammonia&lt;/p&gt;
&lt;p&gt;The following SVG will produce a link with a javascript scheme.
If the user clicks this link, they will run it.&lt;/p&gt;
&lt;p&gt;```xml
&amp;lt;svg xmlns=&amp;#34;http://www.w3.org/2000/svg&amp;#34;&amp;gt;
  &amp;lt;a&amp;gt;
    &amp;lt;set attributeName=&amp;#34;href&amp;#34; to=&amp;#34;javascript:alert(&amp;#39;SET_XSS&amp;#39;)&amp;#34;&amp;gt;&amp;lt;/set&amp;gt;
    &amp;lt;text y=&amp;#34;30&amp;#34;&amp;gt;Click set&amp;lt;/text&amp;gt;
  &amp;lt;/a&amp;gt;
&amp;lt;/svg&amp;gt;
```&lt;/p&gt;
&lt;p&gt;Ammonia did not apply attribute filters based on `attributeName`,
so the contents of the `to`, `from`, and `values` tags were not sanitized as URLs.&lt;/p&gt;
&lt;p&gt;Applications that do not explicitly allow either of these tags should not be affected,
since neither are allowed by default.&lt;/p&gt;
&lt;p&gt;---&lt;/p&gt;
&lt;p&gt;**Discovered by:** [Younghun Ko (@koyokr)](https://github.com/koyokr)&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/rustsec-2026-0213</guid>
      <pubDate>Tue, 21 Jul 2026 12:00:00 +0000</pubDate>
    </item>
    <item>
      <title>RUSTSEC-2026-0316 — Dynamic record lifting can allocate beyond the hostcall fuel limit</title>
      <link>https://cve.radiocsirt.org/vuln/rustsec-2026-0316</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; crates.io: wasmtime&lt;/p&gt;
&lt;p&gt;This is an entry in the RustSec database for the Wasmtime security advisory
located at
https://github.com/bytecodealliance/wasmtime/security/advisories/GHSA-jqpg-j7w6-42pr
For more information see the GitHub-hosted security advisory.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; crates.io: wasmtime&lt;/p&gt;
&lt;p&gt;This is an entry in the RustSec database for the Wasmtime security advisory
located at
https://github.com/bytecodealliance/wasmtime/security/advisories/GHSA-jqpg-j7w6-42pr
For more information see the GitHub-hosted security advisory.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/rustsec-2026-0316</guid>
      <pubDate>Thu, 24 Sep 2026 12:00:00 +0000</pubDate>
    </item>
    <item>
      <title>RUSTSEC-2026-0315 — `call_ref` and exception `catch` can drop some fuel accounting, leading to exponential fuel amplification</title>
      <link>https://cve.radiocsirt.org/vuln/rustsec-2026-0315</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; crates.io: wasmtime&lt;/p&gt;
&lt;p&gt;This is an entry in the RustSec database for the Wasmtime security advisory
located at
https://github.com/bytecodealliance/wasmtime/security/advisories/GHSA-m63x-6p34-q65x
For more information see the GitHub-hosted security advisory.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; crates.io: wasmtime&lt;/p&gt;
&lt;p&gt;This is an entry in the RustSec database for the Wasmtime security advisory
located at
https://github.com/bytecodealliance/wasmtime/security/advisories/GHSA-m63x-6p34-q65x
For more information see the GitHub-hosted security advisory.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/rustsec-2026-0315</guid>
      <pubDate>Thu, 24 Sep 2026 12:00:00 +0000</pubDate>
    </item>
    <item>
      <title>RUSTSEC-2026-0314 — Guest can panic host through filesystem datetime overflow</title>
      <link>https://cve.radiocsirt.org/vuln/rustsec-2026-0314</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; crates.io: wasmtime-wasi&lt;/p&gt;
&lt;p&gt;This is an entry in the RustSec database for the Wasmtime security advisory
located at
https://github.com/bytecodealliance/wasmtime/security/advisories/GHSA-j2g9-4prp-pf6h
For more information see the GitHub-hosted security advisory.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; crates.io: wasmtime-wasi&lt;/p&gt;
&lt;p&gt;This is an entry in the RustSec database for the Wasmtime security advisory
located at
https://github.com/bytecodealliance/wasmtime/security/advisories/GHSA-j2g9-4prp-pf6h
For more information see the GitHub-hosted security advisory.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/rustsec-2026-0314</guid>
      <pubDate>Thu, 24 Sep 2026 12:00:00 +0000</pubDate>
    </item>
    <item>
      <title>RUSTSEC-2026-0313 — Outgoing HTTP body write allows guest-driven host memory exhaustion</title>
      <link>https://cve.radiocsirt.org/vuln/rustsec-2026-0313</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; crates.io: wasmtime-wasi-http&lt;/p&gt;
&lt;p&gt;This is an entry in the RustSec database for the Wasmtime security advisory
located at
https://github.com/bytecodealliance/wasmtime/security/advisories/GHSA-c9gc-w9vx-w86p
For more information see the GitHub-hosted security advisory.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; crates.io: wasmtime-wasi-http&lt;/p&gt;
&lt;p&gt;This is an entry in the RustSec database for the Wasmtime security advisory
located at
https://github.com/bytecodealliance/wasmtime/security/advisories/GHSA-c9gc-w9vx-w86p
For more information see the GitHub-hosted security advisory.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/rustsec-2026-0313</guid>
      <pubDate>Thu, 24 Sep 2026 12:00:00 +0000</pubDate>
    </item>
    <item>
      <title>RUSTSEC-2026-0312 — Excluded iPAddress name constraints with an all-zero mask are not applied</title>
      <link>https://cve.radiocsirt.org/vuln/rustsec-2026-0312</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; crates.io: x509-validator&lt;/p&gt;
&lt;p&gt;An `excluded_subtrees` iPAddress name constraint with an all-zero mask
(`0.0.0.0/0` or `::/0`) does not restrict iPAddress SANs in certificates issued
beneath it. The mask check treated an all-zero mask as matching nothing, when a
`/0` prefix matches every address of its family, so the exclusion was silently
ignored.&lt;/p&gt;
&lt;p&gt;CA/Browser Forum Baseline Requirements §7.1.2.5.2 require exactly these
exclusions on every technically constrained sub-CA that may not issue for IP
addresses. As a result, anyone holding (or having compromised) the key of such
a sub-CA can issue a certificate for an arbitrary IP address, and `Validator`
with `RFC5280Policy` and `ServerIdentityPolicy` accepts it for that address. A
`permitted_subtrees` dNSName entry on the same issuer does not prevent this,
because iPAddress SANs are a different name form.&lt;/p&gt;
&lt;p&gt;All users of `Validator` with `RFC5280Policy` are affected when a chain can
contain a name-constrained issuer with an all-zero iPAddress exclusion.&lt;/p&gt;
&lt;p&gt;The issue is fixed in x509-validator 0.3.1 (commit
[da661f8](https://github.com/namecare/x509-validator/commit/da661f8ecee820e05d089a76ecb654ff52a2c987)).
Users should upgrade to 0.3.1 or later.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; crates.io: x509-validator&lt;/p&gt;
&lt;p&gt;An `excluded_subtrees` iPAddress name constraint with an all-zero mask
(`0.0.0.0/0` or `::/0`) does not restrict iPAddress SANs in certificates issued
beneath it. The mask check treated an all-zero mask as matching nothing, when a
`/0` prefix matches every address of its family, so the exclusion was silently
ignored.&lt;/p&gt;
&lt;p&gt;CA/Browser Forum Baseline Requirements §7.1.2.5.2 require exactly these
exclusions on every technically constrained sub-CA that may not issue for IP
addresses. As a result, anyone holding (or having compromised) the key of such
a sub-CA can issue a certificate for an arbitrary IP address, and `Validator`
with `RFC5280Policy` and `ServerIdentityPolicy` accepts it for that address. A
`permitted_subtrees` dNSName entry on the same issuer does not prevent this,
because iPAddress SANs are a different name form.&lt;/p&gt;
&lt;p&gt;All users of `Validator` with `RFC5280Policy` are affected when a chain can
contain a name-constrained issuer with an all-zero iPAddress exclusion.&lt;/p&gt;
&lt;p&gt;The issue is fixed in x509-validator 0.3.1 (commit
[da661f8](https://github.com/namecare/x509-validator/commit/da661f8ecee820e05d089a76ecb654ff52a2c987)).
Users should upgrade to 0.3.1 or later.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/rustsec-2026-0312</guid>
      <pubDate>Thu, 24 Sep 2026 12:00:00 +0000</pubDate>
    </item>
    <item>
      <title>RUSTSEC-2026-0311 — Stack overflow on deeply nested LaTeX input</title>
      <link>https://cve.radiocsirt.org/vuln/rustsec-2026-0311</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; crates.io: latex-rust&lt;/p&gt;
&lt;p&gt;The parser and layout engine in affected versions of `latex-rust` recurse once
per level of nesting with no limit. Deeply nested input, such as `\frac{1}{…}`,
braces, `\sqrt{…}`, `\left(`, or superscripts nested hundreds or thousands of
levels deep, exhausts the call stack.&lt;/p&gt;
&lt;p&gt;A stack overflow in Rust aborts the process. It is not a panic, so it cannot be
caught with `catch_unwind`. A program that renders LaTeX from untrusted input
can therefore be terminated by a short string. With a release build on an 8 MiB
stack, 700 nested `\frac{1}{…}` (about 7 KB of input) abort version 1.0.4, and
10,000 nested braces (about 20 KB) abort it as well. The threshold is lower on
smaller stacks and in debug builds; on a 2 MiB thread in a debug build, about
35 nested fractions are enough.&lt;/p&gt;
&lt;p&gt;```rust
let mut src = String::from(&amp;#34;1&amp;#34;);
for _ in 0..700 {
    src = format!(&amp;#34;\\frac{{1}}{{{src}}}&amp;#34;);
}
let _ = latex_rust::parse(&amp;amp;src); // stack overflow, process aborts
```&lt;/p&gt;
&lt;p&gt;The fixed versions count nesting depth in the parser and in `layout` and
refuse input that nests more than 32 levels. `parse`, `parse_with_colors`, and
the `latex_to_*` functions return
`ParseError::Malformed(&amp;#34;input nests deeper than 32 levels&amp;#34;)`, and `layout`
returns `Error::Unsupported { what: &amp;#34;tree nests deeper than 32 levels&amp;#34; }` for a
tree built by hand. The count is of parser recursion levels, and a braced
argument costs two, so the limit admits 15 nested `\frac`, `\sqrt`, or
`x^{…}`, and 31 nested groups, `\left…\right` pairs, o…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; crates.io: latex-rust&lt;/p&gt;
&lt;p&gt;The parser and layout engine in affected versions of `latex-rust` recurse once
per level of nesting with no limit. Deeply nested input, such as `\frac{1}{…}`,
braces, `\sqrt{…}`, `\left(`, or superscripts nested hundreds or thousands of
levels deep, exhausts the call stack.&lt;/p&gt;
&lt;p&gt;A stack overflow in Rust aborts the process. It is not a panic, so it cannot be
caught with `catch_unwind`. A program that renders LaTeX from untrusted input
can therefore be terminated by a short string. With a release build on an 8 MiB
stack, 700 nested `\frac{1}{…}` (about 7 KB of input) abort version 1.0.4, and
10,000 nested braces (about 20 KB) abort it as well. The threshold is lower on
smaller stacks and in debug builds; on a 2 MiB thread in a debug build, about
35 nested fractions are enough.&lt;/p&gt;
&lt;p&gt;```rust
let mut src = String::from(&amp;#34;1&amp;#34;);
for _ in 0..700 {
    src = format!(&amp;#34;\\frac{{1}}{{{src}}}&amp;#34;);
}
let _ = latex_rust::parse(&amp;amp;src); // stack overflow, process aborts
```&lt;/p&gt;
&lt;p&gt;The fixed versions count nesting depth in the parser and in `layout` and
refuse input that nests more than 32 levels. `parse`, `parse_with_colors`, and
the `latex_to_*` functions return
`ParseError::Malformed(&amp;#34;input nests deeper than 32 levels&amp;#34;)`, and `layout`
returns `Error::Unsupported { what: &amp;#34;tree nests deeper than 32 levels&amp;#34; }` for a
tree built by hand. The count is of parser recursion levels, and a braced
argument costs two, so the limit admits 15 nested `\frac`, `\sqrt`, or
`x^{…}`, and 31 nested groups, `\left…\right` pairs, o…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/rustsec-2026-0311</guid>
      <pubDate>Sun, 27 Sep 2026 12:00:00 +0000</pubDate>
    </item>
  </channel>
</rss>
