<?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>Fri, 02 Oct 2026 10:47:16 +0000</lastBuildDate>
    <item>
      <title>EUVD-2026-355502</title>
      <link>https://cve.radiocsirt.org/vuln/euvd-2026-355502</link>
      <description>EUVD-2026-355502</description>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/euvd-2026-355502</guid>
    </item>
    <item>
      <title>fkie_cve-2026-55162</title>
      <link>https://cve.radiocsirt.org/vuln/fkie_cve-2026-55162</link>
      <description>&lt;p&gt;Lemur manages TLS certificate creation. Prior to 1.9.2, lemur/certificates/verify.py accepted CRL Distribution Point and OCSP responder URLs from uploaded certificate extensions and used them in crl_verify and ocsp_verify without adequate destination validation. An authenticated operator could submit a certificate through POST /api/1/certificates/upload and cause verify_string to reach loopback, RFC1918, link-local, or instance-metadata destinations such as 169.254.169.254. The requests could probe internal services and create side effects from the Lemur host network position. The CRL path also used an unbounded cache, allowing attacker-controlled entries to persist and consume memory. The fix validates destinations, supports explicit trusted-host allowlists, and bounds the CRL cache. This issue is fixed in version 1.9.2.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;Lemur manages TLS certificate creation. Prior to 1.9.2, lemur/certificates/verify.py accepted CRL Distribution Point and OCSP responder URLs from uploaded certificate extensions and used them in crl_verify and ocsp_verify without adequate destination validation. An authenticated operator could submit a certificate through POST /api/1/certificates/upload and cause verify_string to reach loopback, RFC1918, link-local, or instance-metadata destinations such as 169.254.169.254. The requests could probe internal services and create side effects from the Lemur host network position. The CRL path also used an unbounded cache, allowing attacker-controlled entries to persist and consume memory. The fix validates destinations, supports explicit trusted-host allowlists, and bounds the CRL cache. This issue is fixed in version 1.9.2.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/fkie_cve-2026-55162</guid>
    </item>
    <item>
      <title>GHSA-54vg-pfh7-jq95 — Lemur: Crafted CRL/OCSP URLs in uploaded certificates lead to post-authentication SSRF</title>
      <link>https://cve.radiocsirt.org/vuln/ghsa-54vg-pfh7-jq95</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: lemur&lt;/p&gt;
&lt;p&gt;## Summary
 
When verifying an uploaded certificate, `lemur/certificates/verify.py` extracts the CRL Distribution Point URL and the OCSP responder URL directly from the certificate&amp;#39;s extensions and issues outbound requests to those URLs without scheme restriction or destination allow-listing. An authenticated user holding the operator role (required by `StrictRolePermission` on `POST /certificates/upload`) can craft a certificate whose extensions point at internal services - instance metadata endpoints, internal Kubernetes API servers, RFC1918 hosts, link-local addresses - and cause the Lemur host to issue requests against those destinations during verification.
 
## Root Cause
 
`lemur/certificates/verify.py`, `crl_verify`:
 
```python
point = p.full_name[0].value                          # URL from CDP extension of uploaded cert
...
response = requests.get(point, timeout=(3.05, 6))     # no allow-list, no destination filter
```
 
`lemur/certificates/verify.py`, `ocsp_verify`:
 
```python
command = [&amp;#34;openssl&amp;#34;, &amp;#34;x509&amp;#34;, &amp;#34;-noout&amp;#34;, &amp;#34;-ocsp_uri&amp;#34;, &amp;#34;-in&amp;#34;, cert_path]
p1 = subprocess.Popen(command, stdout=subprocess.PIPE, ...)
url, _ = p1.communicate()
p2 = subprocess.Popen(
    [&amp;#34;openssl&amp;#34;, &amp;#34;ocsp&amp;#34;, &amp;#34;-issuer&amp;#34;, issuer_chain_path, &amp;#34;-cert&amp;#34;, cert_path,
     &amp;#34;-url&amp;#34;, url.strip()],                            # attacker-controlled URL
    ...
)
```
 
In both code paths the URL flows from attacker-controlled certificate-extension content to a network sink with no validation against an allow-li…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: lemur&lt;/p&gt;
&lt;p&gt;## Summary
 
When verifying an uploaded certificate, `lemur/certificates/verify.py` extracts the CRL Distribution Point URL and the OCSP responder URL directly from the certificate&amp;#39;s extensions and issues outbound requests to those URLs without scheme restriction or destination allow-listing. An authenticated user holding the operator role (required by `StrictRolePermission` on `POST /certificates/upload`) can craft a certificate whose extensions point at internal services - instance metadata endpoints, internal Kubernetes API servers, RFC1918 hosts, link-local addresses - and cause the Lemur host to issue requests against those destinations during verification.
 
## Root Cause
 
`lemur/certificates/verify.py`, `crl_verify`:
 
```python
point = p.full_name[0].value                          # URL from CDP extension of uploaded cert
...
response = requests.get(point, timeout=(3.05, 6))     # no allow-list, no destination filter
```
 
`lemur/certificates/verify.py`, `ocsp_verify`:
 
```python
command = [&amp;#34;openssl&amp;#34;, &amp;#34;x509&amp;#34;, &amp;#34;-noout&amp;#34;, &amp;#34;-ocsp_uri&amp;#34;, &amp;#34;-in&amp;#34;, cert_path]
p1 = subprocess.Popen(command, stdout=subprocess.PIPE, ...)
url, _ = p1.communicate()
p2 = subprocess.Popen(
    [&amp;#34;openssl&amp;#34;, &amp;#34;ocsp&amp;#34;, &amp;#34;-issuer&amp;#34;, issuer_chain_path, &amp;#34;-cert&amp;#34;, cert_path,
     &amp;#34;-url&amp;#34;, url.strip()],                            # attacker-controlled URL
    ...
)
```
 
In both code paths the URL flows from attacker-controlled certificate-extension content to a network sink with no validation against an allow-li…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/ghsa-54vg-pfh7-jq95</guid>
    </item>
    <item>
      <title>PYSEC-2026-2586 — Lemur: Crafted CRL/OCSP URLs in uploaded certificates lead to post-authentication SSRF</title>
      <link>https://cve.radiocsirt.org/vuln/pysec-2026-2586</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: lemur&lt;/p&gt;
&lt;p&gt;## Summary
 
When verifying an uploaded certificate, `lemur/certificates/verify.py` extracts the CRL Distribution Point URL and the OCSP responder URL directly from the certificate&amp;#39;s extensions and issues outbound requests to those URLs without scheme restriction or destination allow-listing. An authenticated user holding the operator role (required by `StrictRolePermission` on `POST /certificates/upload`) can craft a certificate whose extensions point at internal services - instance metadata endpoints, internal Kubernetes API servers, RFC1918 hosts, link-local addresses - and cause the Lemur host to issue requests against those destinations during verification.
 
## Root Cause
 
`lemur/certificates/verify.py`, `crl_verify`:
 
```python
point = p.full_name[0].value                          # URL from CDP extension of uploaded cert
...
response = requests.get(point, timeout=(3.05, 6))     # no allow-list, no destination filter
```
 
`lemur/certificates/verify.py`, `ocsp_verify`:
 
```python
command = [&amp;#34;openssl&amp;#34;, &amp;#34;x509&amp;#34;, &amp;#34;-noout&amp;#34;, &amp;#34;-ocsp_uri&amp;#34;, &amp;#34;-in&amp;#34;, cert_path]
p1 = subprocess.Popen(command, stdout=subprocess.PIPE, ...)
url, _ = p1.communicate()
p2 = subprocess.Popen(
    [&amp;#34;openssl&amp;#34;, &amp;#34;ocsp&amp;#34;, &amp;#34;-issuer&amp;#34;, issuer_chain_path, &amp;#34;-cert&amp;#34;, cert_path,
     &amp;#34;-url&amp;#34;, url.strip()],                            # attacker-controlled URL
    ...
)
```
 
In both code paths the URL flows from attacker-controlled certificate-extension content to a network sink with no validation against an allow-li…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: lemur&lt;/p&gt;
&lt;p&gt;## Summary
 
When verifying an uploaded certificate, `lemur/certificates/verify.py` extracts the CRL Distribution Point URL and the OCSP responder URL directly from the certificate&amp;#39;s extensions and issues outbound requests to those URLs without scheme restriction or destination allow-listing. An authenticated user holding the operator role (required by `StrictRolePermission` on `POST /certificates/upload`) can craft a certificate whose extensions point at internal services - instance metadata endpoints, internal Kubernetes API servers, RFC1918 hosts, link-local addresses - and cause the Lemur host to issue requests against those destinations during verification.
 
## Root Cause
 
`lemur/certificates/verify.py`, `crl_verify`:
 
```python
point = p.full_name[0].value                          # URL from CDP extension of uploaded cert
...
response = requests.get(point, timeout=(3.05, 6))     # no allow-list, no destination filter
```
 
`lemur/certificates/verify.py`, `ocsp_verify`:
 
```python
command = [&amp;#34;openssl&amp;#34;, &amp;#34;x509&amp;#34;, &amp;#34;-noout&amp;#34;, &amp;#34;-ocsp_uri&amp;#34;, &amp;#34;-in&amp;#34;, cert_path]
p1 = subprocess.Popen(command, stdout=subprocess.PIPE, ...)
url, _ = p1.communicate()
p2 = subprocess.Popen(
    [&amp;#34;openssl&amp;#34;, &amp;#34;ocsp&amp;#34;, &amp;#34;-issuer&amp;#34;, issuer_chain_path, &amp;#34;-cert&amp;#34;, cert_path,
     &amp;#34;-url&amp;#34;, url.strip()],                            # attacker-controlled URL
    ...
)
```
 
In both code paths the URL flows from attacker-controlled certificate-extension content to a network sink with no validation against an allow-li…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/pysec-2026-2586</guid>
    </item>
  </channel>
</rss>
