data/reports: add GO-2024-2682.yaml

Aliases: CVE-2024-22189, GHSA-c33x-xqrf-c478

Fixes golang/vulndb#2682

Change-Id: I298961e72d34e367f5070f9f55dd02e8b6120b5f
Reviewed-on: https://go-review.googlesource.com/c/vulndb/+/576755
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Damien Neil <dneil@google.com>
Run-TryBot: Zvonimir Pavlinovic <zpavlinovic@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
diff --git a/data/osv/GO-2024-2682.json b/data/osv/GO-2024-2682.json
new file mode 100644
index 0000000..9f3b4ef
--- /dev/null
+++ b/data/osv/GO-2024-2682.json
@@ -0,0 +1,106 @@
+{
+  "schema_version": "1.3.1",
+  "id": "GO-2024-2682",
+  "modified": "0001-01-01T00:00:00Z",
+  "published": "0001-01-01T00:00:00Z",
+  "aliases": [
+    "CVE-2024-22189",
+    "GHSA-c33x-xqrf-c478"
+  ],
+  "summary": "Denial of service via connection starvation in github.com/quic-go/quic-go",
+  "details": "An attacker can cause its peer to run out of memory by sending a large number of NEW_CONNECTION_ID frames that retire old connection IDs. The receiver is supposed to respond to each retirement frame with a RETIRE_CONNECTION_ID frame. The attacker can prevent the receiver from sending out (the vast majority of) these RETIRE_CONNECTION_ID frames by collapsing the peers congestion window (by selectively acknowledging received packets) and by manipulating the peer's RTT estimate.",
+  "affected": [
+    {
+      "package": {
+        "name": "github.com/quic-go/quic-go",
+        "ecosystem": "Go"
+      },
+      "ranges": [
+        {
+          "type": "SEMVER",
+          "events": [
+            {
+              "introduced": "0"
+            },
+            {
+              "fixed": "0.42.0"
+            }
+          ]
+        }
+      ],
+      "ecosystem_specific": {
+        "imports": [
+          {
+            "path": "github.com/quic-go/quic-go",
+            "symbols": [
+              "Dial",
+              "DialAddr",
+              "DialAddrEarly",
+              "DialEarly",
+              "Listen",
+              "ListenAddr",
+              "ListenAddrEarly",
+              "ListenEarly",
+              "Transport.Dial",
+              "Transport.DialEarly",
+              "Transport.Listen",
+              "Transport.ListenEarly",
+              "connIDGenerator.Retire",
+              "connIDGenerator.SetMaxActiveConnIDs",
+              "connIDManager.Add",
+              "connIDManager.Get",
+              "connection.AcceptStream",
+              "connection.AcceptUniStream",
+              "connection.OpenStream",
+              "connection.OpenStreamSync",
+              "connection.OpenUniStream",
+              "connection.OpenUniStreamSync",
+              "connection.run",
+              "framerI.AppendStreamFrames",
+              "framerI.QueueControlFrame",
+              "packetPacker.AppendPacket",
+              "packetPacker.MaybePackProbePacket",
+              "packetPacker.PackAckOnlyPacket",
+              "packetPacker.PackApplicationClose",
+              "packetPacker.PackCoalescedPacket",
+              "packetPacker.PackConnectionClose",
+              "packetPacker.PackMTUProbePacket",
+              "receiveStream.CancelRead",
+              "receiveStream.CloseRemote",
+              "receiveStream.Read",
+              "sendStream.CancelWrite",
+              "streamsMap.AcceptStream",
+              "streamsMap.AcceptUniStream",
+              "streamsMap.DeleteStream",
+              "streamsMap.HandleMaxStreamsFrame",
+              "streamsMap.OpenStream",
+              "streamsMap.OpenStreamSync",
+              "streamsMap.OpenUniStream",
+              "streamsMap.OpenUniStreamSync",
+              "streamsMap.UpdateLimits",
+              "windowUpdateQueue.QueueAll"
+            ]
+          }
+        ]
+      }
+    }
+  ],
+  "references": [
+    {
+      "type": "FIX",
+      "url": "https://github.com/quic-go/quic-go/commit/4a99b816ae3ab03ae5449d15aac45147c85ed47a"
+    },
+    {
+      "type": "WEB",
+      "url": "https://seemann.io/posts/2024-03-19-exploiting-quics-connection-id-management"
+    }
+  ],
+  "credits": [
+    {
+      "name": "marten-seemann"
+    }
+  ],
+  "database_specific": {
+    "url": "https://pkg.go.dev/vuln/GO-2024-2682"
+  }
+}
\ No newline at end of file
diff --git a/data/reports/GO-2024-2682.yaml b/data/reports/GO-2024-2682.yaml
new file mode 100644
index 0000000..e03ff68
--- /dev/null
+++ b/data/reports/GO-2024-2682.yaml
@@ -0,0 +1,74 @@
+id: GO-2024-2682
+modules:
+    - module: github.com/quic-go/quic-go
+      versions:
+        - fixed: 0.42.0
+      vulnerable_at: 0.41.0
+      packages:
+        - package: github.com/quic-go/quic-go
+          symbols:
+            - framerI.QueueControlFrame
+            - connection.run
+          derived_symbols:
+            - Dial
+            - DialAddr
+            - DialAddrEarly
+            - DialEarly
+            - Listen
+            - ListenAddr
+            - ListenAddrEarly
+            - ListenEarly
+            - Transport.Dial
+            - Transport.DialEarly
+            - Transport.Listen
+            - Transport.ListenEarly
+            - connIDGenerator.Retire
+            - connIDGenerator.SetMaxActiveConnIDs
+            - connIDManager.Add
+            - connIDManager.Get
+            - connection.AcceptStream
+            - connection.AcceptUniStream
+            - connection.OpenStream
+            - connection.OpenStreamSync
+            - connection.OpenUniStream
+            - connection.OpenUniStreamSync
+            - framerI.AppendStreamFrames
+            - packetPacker.AppendPacket
+            - packetPacker.MaybePackProbePacket
+            - packetPacker.PackAckOnlyPacket
+            - packetPacker.PackApplicationClose
+            - packetPacker.PackCoalescedPacket
+            - packetPacker.PackConnectionClose
+            - packetPacker.PackMTUProbePacket
+            - receiveStream.CancelRead
+            - receiveStream.CloseRemote
+            - receiveStream.Read
+            - sendStream.CancelWrite
+            - streamsMap.AcceptStream
+            - streamsMap.AcceptUniStream
+            - streamsMap.DeleteStream
+            - streamsMap.HandleMaxStreamsFrame
+            - streamsMap.OpenStream
+            - streamsMap.OpenStreamSync
+            - streamsMap.OpenUniStream
+            - streamsMap.OpenUniStreamSync
+            - streamsMap.UpdateLimits
+            - windowUpdateQueue.QueueAll
+summary: Denial of service via connection starvation in github.com/quic-go/quic-go
+description: |-
+    An attacker can cause its peer to run out of memory by sending a large number of
+    NEW_CONNECTION_ID frames that retire old connection IDs. The receiver is
+    supposed to respond to each retirement frame with a RETIRE_CONNECTION_ID frame.
+    The attacker can prevent the receiver from sending out (the vast majority of)
+    these RETIRE_CONNECTION_ID frames by collapsing the peers congestion window (by
+    selectively acknowledging received packets) and by manipulating the peer's RTT
+    estimate.
+cves:
+    - CVE-2024-22189
+ghsas:
+    - GHSA-c33x-xqrf-c478
+credits:
+    - marten-seemann
+references:
+    - fix: https://github.com/quic-go/quic-go/commit/4a99b816ae3ab03ae5449d15aac45147c85ed47a
+    - web: https://seemann.io/posts/2024-03-19-exploiting-quics-connection-id-management