<?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://vulnerability.circl.lu/rss/recent/all/10</id>
  <title>Most recent entries from all</title>
  <updated>2026-10-02T08:10:36.970085+00:00</updated>
  <author>
    <name>Vulnerability-Lookup</name>
    <email>info@circl.lu</email>
  </author>
  <link href="https://vulnerability.circl.lu" 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://vulnerability.circl.lu/vuln/cve-2026-100843</id>
    <title>CVE-2026-100843 — MONAI before 1.6.0 Remote Code Execution via algo_from_pickle</title>
    <updated>2026-10-02T08:10:37.722830+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> Project-MONAI MONAI</p>
<p>MONAI versions before 1.6.0 contain a remote code execution vulnerability in the algo_from_pickle() function due to unsafe pickle.loads() deserialization in monai/auto3dseg/utils.py. Attackers can craft malicious pickle files that execute arbitrary system commands when deserialized by the vulnerable function.</p></div>
    </content>
    <link href="https://vulnerability.circl.lu/vuln/cve-2026-100843"/>
  </entry>
  <entry>
    <id>https://vulnerability.circl.lu/vuln/ghsa-qxq5-qhx6-94qw</id>
    <title>GHSA-qxq5-qhx6-94qw — Incomplete Fix in MONAI: algo_from_pickle() pickle.loads() RCE still present in v1.5.2 despite GHSA-89gg-p5r5-q6r4 clai…</title>
    <updated>2026-10-02T08:10:37.722938+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> PyPI: monai</p>
<p>## Summary</p>
<p>GHSA-89gg-p5r5-q6r4 claims the pickle deserialization vulnerability in
  `algo_from_pickle()` was fixed in v1.5.2. However, `monai/auto3dseg/utils.py`
  has not been modified since 2024-07-12 — 18 months before v1.5.2 was released
  (2026-01-29). All three `pickle.loads()` calls remain unchanged. The fix was
  never implemented.</p>
<p>## Vulnerable Code</p>
<p>File: `monai/auto3dseg/utils.py` (last commit: 2024-07-12, unchanged in v1.5.2)</p>
<p>```python
  def algo_from_pickle(pkl_filename: str, ...):
      with open(pkl_filename, "rb") as f_pi:
          data_bytes = f_pi.read()
      data = pickle.loads(data_bytes)          # SINK 1 — line 321, RCE fires here</p>
<p># isinstance/key checks happen AFTER deserialization — already too late</p>
<p>algo_bytes = data.pop("algo_bytes")
      ...
      if len(template_paths_candidates) == 0:
          algo = pickle.loads(algo_bytes)      # SINK 2 — line 350
      else:
          for p in template_paths_candidates:
              algo = pickle.loads(algo_bytes)  # SINK 3 — line 356</p>
<p>No Unpickler subclass, no find_class restriction, no allowlist.</p>
<p>Why the Fix is Incomplete</p>
<p>- monai/auto3dseg/utils.py last commit: 2024-07-12 ("drop python 3.8")
  - v1.5.2 released: 2026-01-29 — release notes contain no pickle-related changes
  - v1.5.1 and v1.5.2 contain identical code at lines 321, 350, 356
  - GHSA-89gg-p5r5-q6r4 references a Zip Slip fix (unrelated) as the patch</p>
<p>PoC</p>
<p>import pickle, os</p>
<p>class Exploit:
      def __re…</p></div>
    </content>
    <link href="https://vulnerability.circl.lu/vuln/ghsa-qxq5-qhx6-94qw"/>
  </entry>
</feed>
