Miggo Logo

CVE-2025-54799: github.com/go-acme/lego/v4/acme/api does not enforce HTTPS

N/A

CVSS Score

Basic Information

EPSS Score
-
Published
8/6/2025
Updated
8/6/2025
KEV Status
No
Technology
TechnologyGo

Technical Details

CVSS Vector
-
Package NameEcosystemVulnerable VersionsFirst Patched Version
github.com/go-acme/legogo<= 4.25.1
github.com/go-acme/lego/v3go<= 4.25.1
github.com/go-acme/lego/v4go<= 4.25.14.25.2

Vulnerability Intelligence
Miggo AIMiggo AI

Miggo AIRoot Cause Analysis

The vulnerability lies in the go-acme/lego library's failure to enforce HTTPS for all communications with the ACME Certificate Authority (CA). The root cause is in the acme/api/internal/sender.NewDoer function, which is responsible for creating a Doer object used for making HTTP requests. Prior to the patch, this function did not configure the http.Client to exclusively use HTTPS. Consequently, any ACME operation performed using the Doer's methods (Post, Get, Head) could be executed over unencrypted HTTP if the user provided an HTTP URL or if a CA returned an HTTP endpoint in its directory. This would expose sensitive information like account identifiers and request details to a network attacker.

The patch addresses this by introducing a new http.RoundTripper implementation called httpsOnly. The httpsOnly.RoundTrip method checks the scheme of every request URL and returns an error if it is not https. The sender.NewDoer function was modified to wrap the http.Client's transport with this httpsOnly round tripper, thus ensuring all subsequent requests made by the Doer are enforced to be over HTTPS. The vulnerable functions are therefore sender.NewDoer for its incorrect setup, and the sender.Doer.Post, sender.Doer.Get, and sender.Doer.Head methods, which would appear in a runtime profile when the vulnerability is triggered.

Vulnerable functions

Only Mi**o us*rs **n s** t*is s**tion

WAF Protection Rules

WAF Rule

## Summ*ry It w*s *is*ov*r** t**t t** *it*u*.*om/*o-**m*/l**o/v*/**m*/*pi p**k*** (t*us t** l**o li*r*ry *n* t** l**o *li *s w*ll) *on't *n*or** *TTPS w**n t*lkin* to **s *s *n **M* *li*nt. ## **t*ils Unlik* t** *ttp-** ***ll*n** w*i** solv*s *n *

Reasoning

T** vuln*r**ility li*s in t** `*o-**m*/l**o` li*r*ry's **ilur* to *n*or** *TTPS *or *ll *ommuni**tions wit* t** **M* **rti*i**t* *ut*ority (**). T** root **us* is in t** `**m*/*pi/int*rn*l/s*n**r.N*w*o*r` *un*tion, w*i** is r*sponsi*l* *or *r**tin* *