GHSA-g2rq-jv54-wcpr

Suggest an improvement
Source
https://github.com/advisories/GHSA-g2rq-jv54-wcpr
Import Source
https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2025/09/GHSA-g2rq-jv54-wcpr/GHSA-g2rq-jv54-wcpr.json
JSON Data
https://api.test.osv.dev/v1/vulns/GHSA-g2rq-jv54-wcpr
Aliases
Published
2025-09-17T19:27:38Z
Modified
2025-09-26T16:16:15Z
Severity
  • 7.7 (High) CVSS_V4 - CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N/E:P CVSS Calculator
Summary
Dragonfly vulnerable to server-side request forgery
Details

Impact

There are multiple server-side request forgery (SSRF) vulnerabilities in the DragonFly2 system. The vulnerabilities enable users to force DragonFly2’s components to make requests to internal services, which otherwise are not accessible to the users. One SSRF attack vector is exposed by the Manager’s API. The API allows users to create jobs. When creating a Preheat type of a job, users provide a URL that the Manager connects to (see figures 2.1–2.3). The URL is weakly validated, and so users can trick the Manager into sending HTTP requests to services that are in the Manager’s local network.

func (p *preheat) CreatePreheat(ctx context.Context, schedulers []models.Scheduler,
json types.PreheatArgs) (*internaljob.GroupJobState, error) {
[skipped]
       url := json.URL
[skipped]
       // Generate download files
       var files []internaljob.PreheatRequest
       switch PreheatType(json.Type) {
       case PreheatImageType:
             // Parse image manifest url
skipped, err := parseAccessURL(url) [skipped]
[skipped]
case PreheatFileType: [skipped]
}

A second attack vector is in peer-to-peer communication. A peer can ask another peer to make a request to an arbitrary URL by triggering the pieceManager.DownloadSource method (figure 2.4), which calls the httpSourceClient.GetMetadata method, which performs the request.

Another attack vector is due to the fact that HTTP clients used by the DragonFly2’s components do not disable support for HTTP redirects. This configuration means that an HTTP request sent to a malicious server may be redirected by the server to a component’s internal service.

Patches

  • Dragonfy v2.1.0 and above.

Workarounds

There are no effective workarounds, beyond upgrading.

References

A third party security audit was performed by Trail of Bits, you can see the full report.

If you have any questions or comments about this advisory, please email us at dragonfly-maintainers@googlegroups.com.

Database specific
{
    "github_reviewed_at": "2025-09-17T19:27:38Z",
    "cwe_ids": [
        "CWE-918"
    ],
    "severity": "HIGH",
    "nvd_published_at": "2025-09-17T20:15:36Z",
    "github_reviewed": true
}
References

Affected packages

Go / github.com/dragonflyoss/dragonfly

Package

Name
github.com/dragonflyoss/dragonfly
View open source insights on deps.dev
Purl
pkg:golang/github.com/dragonflyoss/dragonfly

Affected ranges

Type
SEMVER
Events
Introduced
0Unknown introduced version / All previous versions are affected
Fixed
2.1.0

Go / d7y.io/dragonfly/v2

Package

Name
d7y.io/dragonfly/v2
View open source insights on deps.dev
Purl
pkg:golang/d7y.io/dragonfly/v2

Affected ranges

Type
SEMVER
Events
Introduced
0Unknown introduced version / All previous versions are affected
Fixed
2.1.0