✓ProveIt
Examples / Report #3116935 Saved analysis

Use of a Broken or Risky Cryptographic Algorithm (CWE-327) in libcurl

curl · 2025-04-2924.1s analysis · $0.015 in model calls

What the report claims

The report claims that libcurl uses the insecure DES cipher in the file lib/curl_ntlm_core.c for NTLM authentication.

Compare with curl's recorded outcome

Labeled AI slop

curl's maintainer lists this report as AI slop

Shown for comparison after analysis. The pipeline did not see this label.

ProveIt's finding

Needs a policy review

The code does what the report says, but curl's own policy may exclude it. A maintainer decides.

curl policy: Legacy dependencies
Judgment withdrawn. The answer failed the evidence check.
See the withdrawn model reasoning

The following reasoning failed the citation check and does not support the final finding.

  • NTLMv1 is a legacy authentication protocol that mandates DES as part of its specification; curl's use of kCCAlgorithmDES reflects correct implementation of the protocol, not an independent cryptographic choice.
  • The project policy explicitly states: 'Problems that can be triggered only by the use of a *legacy dependency* are not considered security problems.' NTLMv1 meets the criteria: released over 10 years ago, modern replacements (NTLMv2, Kerberos) exist and are in common use.
  • The recommended fix ('replace kCCAlgorithmDES with kCCAlgorithmAES') demonstrates a misunderstanding: swapping the cipher would break NTLMv1 compatibility, not strengthen it. The vulnerability, if any, lies in the NTLMv1 protocol design, not in curl's implementation.
  • No source code was provided to show misuse of DES outside the NTLMv1 protocol context; deterministic checks only confirm the file and symbol exist.
What still needs checking
  • The actual source code of lib/curl_ntlm_core.c at the relevant lines to confirm DES is used only for NTLMv1 protocol operations and not for other purposes.
How this analysis ran 6 claims · 0 citations verified

Evidence check: the behavior is real; the project's policy section 'Legacy dependencies' may exclude it

Checked against curl master on 2025-04-29 (e0ebc3ff1349). Test evaluation split. Citation verification checks that a referenced line was in the evidence; it does not prove the model interpreted it correctly.

1 · Grounding
grounded
no model · 2 references checked out, 0 did not
2 · Claims
NVIDIA-Nemotron-3-Nano-30B-A3B
6 claims · 1663 tokens · $0.0002
3 · Evidence
0 code snippets
real curl source at e0ebc3ff1349 · 6 docs via Tavily
4 · Judgment
Nemotron-3-Ultra-550b-a55b
8678 tokens · 13.2s · $0.0152
5 · Receipts
0 of 4 citations verified
every citation must point at code the judge was shown
Inspect the withdrawn draft reply

This draft belongs to the withdrawn judgment. It may contain unsupported claims.

Thank you for the report. The use of DES in curl_ntlm_core.c is for implementing the NTLMv1 authentication protocol, which mandates DES by specification. Per curl's security policy, issues triggered only by legacy dependencies (protocols released over 10 years ago with modern replacements available) are not considered security vulnerabilities in curl. The suggested fix of replacing DES with AES would break NTLMv1 compatibility rather than improve security. If you believe DES is used outside the NTLMv1 protocol flow, please provide the specific code path.

Inspect all claims and source code 6 claims · 0 code excerpts

This model judgment was withdrawn. The claim assessments below are preserved for inspection and may be wrong.

Report claims

C1flaw supported

Uses DES cipher in lib/curl_ntlm_core.c

Read the reasoning

The deterministic checks confirm that lib/curl_ntlm_core.c exists and contains the symbol kCCAlgorithmDES at the reported revision. This supports the claim that DES cipher is referenced in the file.

lib/curl_ntlm_core.c:0
C2location supported

File lib/curl_ntlm_core.c, line 228

Read the reasoning

The deterministic check confirms the file exists at the target revision. Line 228 cannot be verified without source code, but the file location claim is grounded.

lib/curl_ntlm_core.c:0
C3trigger supported

NTLMv1 authentication uses DES

Read the reasoning

NTLMv1 protocol specification mandates the use of DES for its cryptographic operations. The presence of kCCAlgorithmDES in curl's NTLM core implementation is consistent with correct implementation of the NTLMv1 protocol.

lib/curl_ntlm_core.c:0
C4impact not verifiable

DES can be brute-forced, vulnerable to cryptanalysis, and non‑compliant with modern standards

Read the reasoning

The external sources (E1-E6) do not contain explicit statements confirming the specific claims about DES being brute-forceable, vulnerable to cryptanalysis, or non-compliant. E2 shows TDES (Triple-DES) as 'Legacy use only' but does not address single DES. The cryptographic weaknesses of DES are generally accepted knowledge but not verified by the provided excerpts.

C5reproduction supported

Inspect lib/curl_ntlm_core.c and locate kCCAlgorithmDES constant

Read the reasoning

The reproduction steps are feasible: the file and symbol exist at the reported revision.

lib/curl_ntlm_core.c:0
C6impact not verifiable

Attacker could intercept and decrypt data or perform MITM attacks

Read the reasoning

The claimed attack impact (intercept/decrypt data, MITM attacks) depends on the cryptographic weakness of DES in NTLMv1. However, this is a property of the NTLMv1 protocol itself, not a flaw in curl's implementation. The external sources do not confirm these specific attack scenarios against curl's usage.

What the report says about other projects

not addressed DES is considered insecure due to its short key length (56 bits) and susceptibility to brute-force attacks

not addressed AES is recommended as a replacement for DES because it provides stronger encryption

Read the original report

Full report on HackerOne ↗

## Summary: The DES cipher (Data Encryption Standard) is used in the `curl_ntlm_core.c` file of libcurl. DES is considered insecure due to its short key length (56 bits) and its susceptibility to brute-force attacks. Modern cryptographic standards recommend replacing DES with AES (Advanced Encryption Standard), which is more robust and secure. ## Affected version [Which curl/libcurl version are you using to reproduce? On which platform? `curl -V` typically generates good output to include] ## Steps To Reproduce: 1. Inspect the `lib/curl_ntlm_core.c` file of the libcurl source code. 2. Locate the use of the `kCCAlgorithmDES` constant, which corresponds to the DES cipher. 3. Verify that DES is being used for cryptographic operations in NTLM authentication (NTLMv1). ## Supporting Material/References: - File: `lib/curl_ntlm_core.c` - Line Reference: 228:29 - CWE Reference: [CWE-327](https://cwe.mitre.org/data/definitions/327.html) * [attachment / reference] ## Impact ## Summary: Using DES compromises the security of the application due to the following points: - **Brute-force attacks**: The short key length makes it possible to brute-force DES keys in a reasonable amount of time with modern hardware. - **Cryptographic weaknesses**: DES is vulnerable to various cryptanalysis techniques, such as differential and linear cryptanalysis. - **Compliance risks**: DES does not meet modern cryptographic standards and could lead to non-compliance with security regulations. An attacker exploiting this vulnerability could: - Intercept and decrypt sensitive data during NTLM authentication. - Execute man-in-the-middle (MITM) attacks to impersonate a user or server. - Gain unauthorized access to systems relying on NTLM authentication. --- ## Recommended Fix: Replace the use of `kCCAlgorithmDES` with `kCCAlgorithmAES`, which supports stronger encryption standards (e.g., AES-128, AES-256). This change will significantly enhance the security of NTLM authentication in libcurl.

Source code

No source code was retrieved for this analysis. The evidence may be incomplete.