Skip to content
Heist/ feed
Back to feed
Medium

HTTP/2 push headers memory-leak

Type: advisorySources: OSV

When an application tells libcurl it wants to allow HTTP/2 server push, and the amount of received headers for the push surpasses the maximum allowed limit (1000), libcurl aborts the server push. When aborting, libcurl inadvertently does not free all the previously allocated headers and instead leaks the memory. Further, this error condition fails silently and is therefore not easily detected by an application.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2024-2398
Confirmed fixed CVEs
Not specified
Updated in this feed
1 Nov 2026, 16:54 UTC · Revision 1

Source evidence

HTTP/2 push headers memory-leak

core-osv · Original source

Published 27 Mar 2024, 08:00 UTC

When an application tells libcurl it wants to allow HTTP/2 server push, and the amount of received headers for the push surpasses the maximum allowed limit (1000), libcurl aborts the server push. When aborting, libcurl inadvertently does not free all the previously allocated headers and instead leaks the memory. Further, this error condition fails silently and is therefore not easily detected by an application.

osv:CURL-CVE-2024-2398
Complete source record
{
  "id": "d90ae76a10559e5edf83d81928b9ea9b6ca0e5ef7c777d181697c7e4beb42397",
  "url": "https://osv.dev/vulnerability/CURL-CVE-2024-2398",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "HTTP/2 push headers memory-leak",
    "summary": "When an application tells libcurl it wants to allow HTTP/2 server push, and the amount of received headers for the push surpasses the maximum allowed limit (1000), libcurl aborts the server push. When aborting, libcurl inadvertently does not free all the previously allocated headers and instead leaks the memory. Further, this error condition fails silently and is therefore not easily detected by an application.",
    "evidence": "osv:CURL-CVE-2024-2398",
    "products": [],
    "severity": "medium",
    "structured": {
      "id": "CURL-CVE-2024-2398",
      "aliases": [
        "CURL-CVE-2024-2398",
        "CVE-2024-2398"
      ],
      "affected": [
        {
          "ranges": [
            {
              "type": "SEMVER",
              "events": [
                {
                  "introduced": "7.44.0"
                },
                {
                  "fixed": "8.7.0"
                }
              ]
            },
            {
              "repo": "https://github.com/curl/curl.git",
              "type": "GIT",
              "events": [
                {
                  "introduced": "ea7134ac874a66107e54ff93657ac565cf2ec4aa"
                },
                {
                  "fixed": "deca8039991886a559b67bcd6701db800a5cf764"
                }
              ]
            }
          ],
          "versions": [
            "8.6.0",
            "8.5.0",
            "8.4.0",
            "8.3.0",
            "8.2.1",
            "8.2.0",
            "8.1.2",
            "8.1.1",
            "8.1.0",
            "8.0.1",
            "8.0.0",
            "7.88.1",
            "7.88.0",
            "7.87.0",
            "7.86.0",
            "7.85.0",
            "7.84.0",
            "7.83.1",
            "7.83.0",
            "7.82.0",
            "7.81.0",
            "7.80.0",
            "7.79.1",
            "7.79.0",
            "7.78.0",
            "7.77.0",
            "7.76.1",
            "7.76.0",
            "7.75.0",
            "7.74.0",
            "7.73.0",
            "7.72.0",
            "7.71.1",
            "7.71.0",
            "7.70.0",
            "7.69.1",
            "7.69.0",
            "7.68.0",
            "7.67.0",
            "7.66.0",
            "7.65.3",
            "7.65.2",
            "7.65.1",
            "7.65.0",
            "7.64.1",
            "7.64.0",
            "7.63.0",
            "7.62.0",
            "7.61.1",
            "7.61.0",
            "7.60.0",
            "7.59.0",
            "7.58.0",
            "7.57.0",
            "7.56.1",
            "7.56.0",
            "7.55.1",
            "7.55.0",
            "7.54.1",
            "7.54.0",
            "7.53.1",
            "7.53.0",
            "7.52.1",
            "7.52.0",
            "7.51.0",
            "7.50.3",
            "7.50.2",
            "7.50.1",
            "7.50.0",
            "7.49.1",
            "7.49.0",
            "7.48.0",
            "7.47.1",
            "7.47.0",
            "7.46.0",
            "7.45.0",
            "7.44.0",
            "curl-8_6_0",
            "curl-8_5_0",
            "tiny-curl-8_4_0",
            "curl-8_4_0",
            "curl-8_3_0",
            "curl-8_2_1",
            "curl-8_2_0",
            "curl-8_1_2",
            "curl-8_1_1",
            "curl-8_1_0",
            "curl-8_0_1",
            "curl-8_0_0",
            "curl-7_88_1",
            "curl-7_88_0",
            "curl-7_87_0",
            "curl-7_86_0",
            "curl-7_85_0",
            "curl-7_84_0",
            "curl-7_83_1",
            "curl-7_83_0",
            "curl-7_82_0",
            "curl-7_81_0",
            "curl-7_80_0",
            "curl-7_79_1",
            "curl-7_79_0",
            "curl-7_78_0",
            "curl-7_77_0",
            "curl-7_76_1",
            "curl-7_76_0",
            "curl-7_75_0",
            "curl-7_74_0",
            "curl-7_73_0",
            "tiny-curl-7_72_0",
            "curl-7_72_0",
            "curl-7_71_1",
            "curl-7_71_0",
            "curl-7_70_0",
            "curl-7_69_1",
            "curl-7_69_0",
            "curl-7_68_0",
            "curl-7_67_0",
            "curl-7_66_0",
            "curl-7_65_3",
            "curl-7_65_2",
            "curl-7_65_1",
            "curl-7_65_0",
            "curl-7_64_1",
            "curl-7_64_0",
            "curl-7_63_0",
            "curl-7_62_0",
            "curl-7_61_1",
            "curl-7_61_0",
            "curl-7_60_0",
            "curl-7_59_0",
            "curl-7_58_0",
            "curl-7_57_0",
            "curl-7_56_1",
            "curl-7_56_0",
            "curl-7_55_1",
            "curl-7_55_0",
            "curl-7_54_1",
            "curl-7_54_0",
            "curl-7_53_1",
            "curl-7_53_0",
            "curl-7_52_1",
            "curl-7_52_0",
            "curl-7_51_0",
            "curl-7_50_3",
            "curl-7_50_2",
            "curl-7_50_1",
            "curl-7_50_0",
            "curl-7_49_1",
            "curl-7_49_0",
            "curl-7_48_0",
            "curl-7_47_1",
            "curl-7_47_0",
            "curl-7_46_0",
            "curl-7_45_0",
            "curl-7_44_0"
          ],
          "database_specific": {
            "source": "https://curl.se/docs/CURL-CVE-2024-2398.json",
            "vanir_signatures": [
              {
                "id": "CURL-CVE-2024-2398-aee61dcf",
                "digest": {
                  "length": 2130,
                  "function_hash": "57212166138629680836926936433862136724"
                },
                "source": "https://github.com/curl/curl.git/commit/deca8039991886a559b67bcd6701db800a5cf764",
                "target": {
                  "file": "lib/http2.c",
                  "function": "push_promise"
                },
                "deprecated": false,
                "signature_type": "Function",
                "signature_version": "v1"
              },
              {
                "id": "CURL-CVE-2024-2398-d6c4802d",
                "digest": {
                  "threshold": 0.9,
                  "line_hashes": [
                    "7088876839149707156940895701661019823",
                    "336143788764753876999275281293239775588",
                    "6082853181056810224686031065394385322",
                    "270976838733411746067674104765652600829",
                    "225371423435535026862843596314237414150",
                    "57505098515047564594938639966552709516",
                    "188980441709706507119585030643922341976",
                    "327886802839139712985788540504956790912",
                    "138620575379375027735357726681903708879",
                    "188282122836455935944869724469526968033",
                    "321754076209565714753324910553718859459",
                    "338614796633464526555639453300406501569",
                    "208823856354875908745721566681387375313",
                    "143227661570209865307835747718773434905",
                    "300925804325539444622465875223855410426",
                    "244357795932871989282825808473185839149",
                    "99753946856422809656860280156402198753",
                    "322232753456803974559312122811319767491",
                    "121271027958774049640811886054027657974",
                    "105733410859346155439400113244254971286",
                    "235517509628517051559324330194044246509",
                    "164911828945627539710988336893751924409",
                    "281297570365010563263791868360670733302",
                    "89508804383524495319258655884027712416",
                    "167276147733487007400289371348312927040",
                    "175794152504679294155718593642097298258",
                    "176622718669801264481597057903406847218",
                    "196073321927650370159630826797438134530",
                    "298916521300893585095270409115501063707",
                    "59677880640376856438629282196440026807",
                    "147719648327330110958781048679152969966",
                    "314437254144341254009061810959688164635",
                    "85847464617368338446780390074902579127",
                    "259017224466225210694194048863577780531",
                    "189400063681863625734874451675917799519",
                    "283326224611957434999905965169584210307"
                  ]
                },
                "source": "https://github.com/curl/curl.git/commit/deca8039991886a559b67bcd6701db800a5cf764",
                "target": {
                  "file": "lib/http2.c"
                },
                "deprecated": false,
                "signature_type": "Line",
                "signature_version": "v1"
              },
              {
                "id": "CURL-CVE-2024-2398-d7c89e74",
                "digest": {
                  "length": 1000,
                  "function_hash": "164048778896218230066850293748599299292"
                },
                "source": "https://github.com/curl/curl.git/commit/deca8039991886a559b67bcd6701db800a5cf764",
                "target": {
                  "file": "lib/http2.c",
                  "function": "http2_data_done"
                },
                "deprecated": false,
                "signature_type": "Function",
                "signature_version": "v1"
              },
              {
                "id": "CURL-CVE-2024-2398-e7561d79",
                "digest": {
                  "length": 3943,
                  "function_hash": "202121698874621003664693905132348120233"
                },
                "source": "https://github.com/curl/curl.git/commit/deca8039991886a559b67bcd6701db800a5cf764",
                "target": {
                  "file": "lib/http2.c",
                  "function": "on_header"
                },
                "deprecated": false,
                "signature_type": "Function",
                "signature_version": "v1"
              }
            ],
            "vanir_signatures_modified": "2026-10-27T01:28:36Z"
          }
        }
      ],
      "modified": "2026-10-27T01:28:36.656854120Z",
      "provider": "osv",
      "references": [],
      "provider_metadata": {
        "CWE": {
          "id": "CWE-772",
          "desc": "Missing Release of Resource after Effective Lifetime"
        },
        "URL": "https://curl.se/docs/CVE-2024-2398.json",
        "www": "https://curl.se/docs/CVE-2024-2398.html",
        "award": {
          "amount": "2540",
          "currency": "USD"
        },
        "issue": "https://hackerone.com/reports/2402845",
        "affects": "lib",
        "package": "curl",
        "severity": "Medium",
        "last_affected": "8.6.0"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2024-2398",
        "evidence": "/aliases"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/database_specific/severity"
  },
  "source_id": "core-osv",
  "document_id": 459161,
  "published_at": "2024-03-27T08:00:00+00:00"
}