Skip to content
Heist/ feed
Back to feed
High

uninitialized random

Type: advisorySources: OSV

libcurl's (new) internal function that returns a good 32-bit random value was implemented poorly and overwrote the pointer instead of writing the value into the buffer the pointer pointed to. This random value is used to generate nonces for Digest and NTLM authentication, for generating boundary strings in HTTP formposts and more. Having a weak or virtually non-existent random there makes these operations vulnerable. This function is brand new in 7.52.0 and is the result of an overhaul to make sure libcurl uses strong random as much as possible - provided by the backend TLS crypto libraries when present.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2016-9594
Confirmed fixed CVEs
Not specified
Updated in this feed
1 Nov 2026, 09:37 UTC · Revision 1

Source evidence

uninitialized random

core-osv · Original source

Published 23 Dec 2016, 08:00 UTC

libcurl's (new) internal function that returns a good 32-bit random value was implemented poorly and overwrote the pointer instead of writing the value into the buffer the pointer pointed to. This random value is used to generate nonces for Digest and NTLM authentication, for generating boundary strings in HTTP formposts and more. Having a weak or virtually non-existent random there makes these operations vulnerable. This function is brand new in 7.52.0 and is the result of an overhaul to make sure libcurl uses strong random as much as possible - provided by the backend TLS crypto libraries when present.

osv:CURL-CVE-2016-9594
Complete source record
{
  "id": "3c6cfa77f417ef4aeddf81cc45f6127c2919855aec0908908e1d2d8198cd7b10",
  "url": "https://osv.dev/vulnerability/CURL-CVE-2016-9594",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "uninitialized random",
    "summary": "libcurl's (new) internal function that returns a good 32-bit random value was implemented poorly and overwrote the pointer instead of writing the value into the buffer the pointer pointed to. This random value is used to generate nonces for Digest and NTLM authentication, for generating boundary strings in HTTP formposts and more. Having a weak or virtually non-existent random there makes these operations vulnerable. This function is brand new in 7.52.0 and is the result of an overhaul to make sure libcurl uses strong random as much as possible - provided by the backend TLS crypto libraries when present.",
    "evidence": "osv:CURL-CVE-2016-9594",
    "products": [],
    "severity": "high",
    "structured": {
      "id": "CURL-CVE-2016-9594",
      "aliases": [
        "CURL-CVE-2016-9594",
        "CVE-2016-9594"
      ],
      "affected": [
        {
          "ranges": [
            {
              "type": "SEMVER",
              "events": [
                {
                  "introduced": "7.52.0"
                },
                {
                  "fixed": "7.52.1"
                }
              ]
            },
            {
              "repo": "https://github.com/curl/curl.git",
              "type": "GIT",
              "events": [
                {
                  "introduced": "f682156a4fc6c43fb38db4abda49b9a1bc1ed368"
                },
                {
                  "fixed": "f81b2277a8e7e9ce8809ccd30c25b8aa72101215"
                }
              ]
            }
          ],
          "versions": [
            "7.52.0",
            "curl-7_52_0"
          ],
          "database_specific": {
            "source": "https://curl.se/docs/CURL-CVE-2016-9594.json",
            "vanir_signatures": [
              {
                "id": "CURL-CVE-2016-9594-7c16b61b",
                "digest": {
                  "length": 1230,
                  "function_hash": "206719334076114908897635094238920230244"
                },
                "source": "https://github.com/curl/curl.git/commit/f81b2277a8e7e9ce8809ccd30c25b8aa72101215",
                "target": {
                  "file": "lib/rand.c",
                  "function": "randit"
                },
                "deprecated": false,
                "signature_type": "Function",
                "signature_version": "v1"
              },
              {
                "id": "CURL-CVE-2016-9594-f0a0b628",
                "digest": {
                  "threshold": 0.9,
                  "line_hashes": [
                    "77154240506471223058694980721268944782",
                    "225800919729663311578040047587376635383",
                    "157317735576601701763703432388618243002",
                    "103722156573570438682155569941165872211"
                  ]
                },
                "source": "https://github.com/curl/curl.git/commit/f81b2277a8e7e9ce8809ccd30c25b8aa72101215",
                "target": {
                  "file": "lib/rand.c"
                },
                "deprecated": false,
                "signature_type": "Line",
                "signature_version": "v1"
              }
            ],
            "vanir_signatures_modified": "2026-10-25T01:04:56Z"
          }
        }
      ],
      "modified": "2026-10-25T01:04:56.788540118Z",
      "provider": "osv",
      "references": [],
      "provider_metadata": {
        "CWE": {
          "id": "CWE-330",
          "desc": "Use of Insufficiently Random Values"
        },
        "URL": "https://curl.se/docs/CVE-2016-9594.json",
        "www": "https://curl.se/docs/CVE-2016-9594.html",
        "affects": "both",
        "package": "curl",
        "severity": "High",
        "last_affected": "7.52.0"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2016-9594",
        "evidence": "/aliases"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/database_specific/severity"
  },
  "source_id": "core-osv",
  "document_id": 444312,
  "published_at": "2016-12-23T08:00:00+00:00"
}