<?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 06:45:55 +0000</lastBuildDate>
    <item>
      <title>EUVD-2026-385200</title>
      <link>https://cve.radiocsirt.org/vuln/euvd-2026-385200</link>
      <description>EUVD-2026-385200</description>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/euvd-2026-385200</guid>
    </item>
    <item>
      <title>fkie_cve-2026-107834</title>
      <link>https://cve.radiocsirt.org/vuln/fkie_cve-2026-107834</link>
      <description>&lt;p&gt;OWASP Coraza WAF is a golang modsecurity compatible web application firewall library. From 3.0.0 until 3.8.0, the multipart loop in internal/bodyprocessors/multipart.go executes defer temp.Close() for every uploaded file part, so each temporary-file descriptor remains open until the complete request returns. An unauthenticated attacker can submit a multipart body containing many minimal file parts and exhaust the process file-descriptor table within the request-body size limit, causing os.CreateTemp failures, MULTIPART_STRICT_ERROR responses, blocked legitimate uploads, and process-wide inability to open files or sockets. This issue is fixed in version 3.8.0.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;OWASP Coraza WAF is a golang modsecurity compatible web application firewall library. From 3.0.0 until 3.8.0, the multipart loop in internal/bodyprocessors/multipart.go executes defer temp.Close() for every uploaded file part, so each temporary-file descriptor remains open until the complete request returns. An unauthenticated attacker can submit a multipart body containing many minimal file parts and exhaust the process file-descriptor table within the request-body size limit, causing os.CreateTemp failures, MULTIPART_STRICT_ERROR responses, blocked legitimate uploads, and process-wide inability to open files or sockets. This issue is fixed in version 3.8.0.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/fkie_cve-2026-107834</guid>
    </item>
    <item>
      <title>GHSA-rp9v-7xv3-r6g3 — Coraza: Resource exhaustion via deferred file handle accumulation in multipart body processor</title>
      <link>https://cve.radiocsirt.org/vuln/ghsa-rp9v-7xv3-r6g3</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Go: github.com/corazawaf/coraza/v3&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;`defer temp.Close()` sits inside a `for` loop in the multipart processor. Go defers run at function return, not loop end, so every file part in the request holds an open fd until `ProcessRequest()` exits. Send enough parts and you hit `EMFILE`. With CRS loaded, that flips `MULTIPART_STRICT_ERROR` to 1 and rule `200001` starts returning 400s, including on legitimate requests hitting the same condition.&lt;/p&gt;
&lt;p&gt;## Details&lt;/p&gt;
&lt;p&gt;`internal/bodyprocessors/multipart.go`, line 69:&lt;/p&gt;
&lt;p&gt;```go
for {
    p, err := mr.NextPart()
    // ...
    temp, err := os.CreateTemp(storagePath, &amp;#34;crzmp*&amp;#34;)
    defer temp.Close() // wrong scope
    io.Copy(temp, p)
}
```&lt;/p&gt;
&lt;p&gt;Each iteration opens a temp file and defers its close. All of them stack up and fire together when `ProcessRequest` returns. 500 parts, 500 fds held simultaneously.&lt;/p&gt;
&lt;p&gt;The body size limit (default 128MB) caps total bytes, not part count. A minimal file part (boundary line, `Content-Disposition` with `filename=`, one byte of content) is about 104 bytes. That&amp;#39;s roughly 65,000 parts per 6.8MB of body, which on a standard Linux system (hard fd limit 65536) is enough to exhaust the table.&lt;/p&gt;
&lt;p&gt;Fix is straightforward: call `temp.Close()` explicitly after `io.Copy` instead of deferring it.&lt;/p&gt;
&lt;p&gt;## PoC&lt;/p&gt;
&lt;p&gt;Tested on v3.7.0 (`db9850b`), Go 1.25, Linux x86_64.&lt;/p&gt;
&lt;p&gt;Add this file at `internal/bodyprocessors/poc_fd_test.go` and run:&lt;/p&gt;
&lt;p&gt;```text
go test -v -run TestMultipartFDLeak ./internal/bodyprocessors/...
```&lt;/p&gt;
&lt;p&gt;```go
package bodyprocessors_test&lt;/p&gt;
&lt;p&gt;import (
	&amp;#34;fmt&amp;#34;
	&amp;#34;o…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Go: github.com/corazawaf/coraza/v3&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;`defer temp.Close()` sits inside a `for` loop in the multipart processor. Go defers run at function return, not loop end, so every file part in the request holds an open fd until `ProcessRequest()` exits. Send enough parts and you hit `EMFILE`. With CRS loaded, that flips `MULTIPART_STRICT_ERROR` to 1 and rule `200001` starts returning 400s, including on legitimate requests hitting the same condition.&lt;/p&gt;
&lt;p&gt;## Details&lt;/p&gt;
&lt;p&gt;`internal/bodyprocessors/multipart.go`, line 69:&lt;/p&gt;
&lt;p&gt;```go
for {
    p, err := mr.NextPart()
    // ...
    temp, err := os.CreateTemp(storagePath, &amp;#34;crzmp*&amp;#34;)
    defer temp.Close() // wrong scope
    io.Copy(temp, p)
}
```&lt;/p&gt;
&lt;p&gt;Each iteration opens a temp file and defers its close. All of them stack up and fire together when `ProcessRequest` returns. 500 parts, 500 fds held simultaneously.&lt;/p&gt;
&lt;p&gt;The body size limit (default 128MB) caps total bytes, not part count. A minimal file part (boundary line, `Content-Disposition` with `filename=`, one byte of content) is about 104 bytes. That&amp;#39;s roughly 65,000 parts per 6.8MB of body, which on a standard Linux system (hard fd limit 65536) is enough to exhaust the table.&lt;/p&gt;
&lt;p&gt;Fix is straightforward: call `temp.Close()` explicitly after `io.Copy` instead of deferring it.&lt;/p&gt;
&lt;p&gt;## PoC&lt;/p&gt;
&lt;p&gt;Tested on v3.7.0 (`db9850b`), Go 1.25, Linux x86_64.&lt;/p&gt;
&lt;p&gt;Add this file at `internal/bodyprocessors/poc_fd_test.go` and run:&lt;/p&gt;
&lt;p&gt;```text
go test -v -run TestMultipartFDLeak ./internal/bodyprocessors/...
```&lt;/p&gt;
&lt;p&gt;```go
package bodyprocessors_test&lt;/p&gt;
&lt;p&gt;import (
	&amp;#34;fmt&amp;#34;
	&amp;#34;o…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/ghsa-rp9v-7xv3-r6g3</guid>
    </item>
  </channel>
</rss>
