{"id":"GHSA-h4mf-4v27-hggj","summary":"rclone: WebDAV Credentials Survive a Same-Host HTTPS-to-HTTP Redirect","details":"## 1. Summary\n\nWebDAV's default redirect handling can replay Basic authorization and configured Cookie headers over plaintext HTTP after a same-host HTTPS-to-HTTP redirect. This was reproduced through the real backend. Unlike the low-impact STS token in rclone's published S3 redirect advisory, Basic passwords and session cookies are complete reusable credentials, supporting a High rating when they grant normal WebDAV read/write access.\n\nThe credible threat requires a legitimate endpoint, gateway, or accelerator to emit an unsafe redirect and an adjacent/on-path actor to observe the plaintext hop. A report should not rely on a malicious original WebDAV endpoint because that endpoint already receives the credentials.\n\n## 2. Affected Assets & Attack Surface\n\n- Backend configuration/authentication: `backend/webdav/webdav.go:127-139`, `170-206`, `440-530`\n- Shared redirect callback: `lib/rest/rest.go:218-231`\n- HTTP client: `fs/fshttp/http.go:311-329`\n- Credentials: Basic passwords, bearer authorization, SharePoint/session cookies, and configured secret headers\n- Confirmed affected version: `\u003c= v1.74.0-240`\n\n## 3. Technical Root Cause Analysis\n\n`PreserveMethodRedirectFn` limits redirect count and restores the original method, but it does not reject a transport downgrade or compare the full origin tuple. The client therefore relies on Go's hostname-oriented sensitive-header forwarding rules. Those rules can preserve `Authorization` and Cookie on a same-host redirect even when the new scheme is plaintext HTTP.\n\n## 4. Proof-of-Concept & Evidence\n\n1. Configure the actual WebDAV backend with Basic credentials and a Cookie.\n2. Have the TLS endpoint return `307 Temporary Redirect` to an HTTP listener on the same hostname and a different port.\n3. rclone follows the redirect while preserving the WebDAV method.\n4. The plaintext listener receives both the Basic `Authorization` value and Cookie.\n\n## 5. Impact Assessment\n\nAn on-path observer can reuse the captured password, bearer token, or session cookie for the account's permitted WebDAV operations. Confidentiality, integrity, and availability impact depend on that account's permissions.\n\n## 6. Remediation Guidance\n\n- Reject every HTTPS-to-HTTP redirect before replay.\n- Forward authenticated requests by default only when scheme, hostname, and effective port are unchanged.\n- Strip authorization, cookies, proxy credentials, and configured secret headers on all other redirects.\n- Put necessary provider exceptions behind exact destination allowlists.\n- Cover `301`, `302`, `303`, `307`, and `308` in regression tests.","aliases":["BIT-rclone-2026-79779","CVE-2026-79779","GO-2026-6197"],"modified":"2026-09-25T14:25:44.791461170Z","published":"2026-08-05T20:36:10Z","database_specific":{"github_reviewed_at":"2026-08-05T20:36:10Z","nvd_published_at":null,"cwe_ids":["CWE-319","CWE-522"],"severity":"MODERATE","github_reviewed":true},"references":[{"type":"WEB","url":"https://github.com/rclone/rclone/security/advisories/GHSA-h4mf-4v27-hggj"},{"type":"WEB","url":"https://github.com/rclone/rclone/commit/59b513b0e74fd2943ccbb8891d5ce00f860e6d26"},{"type":"PACKAGE","url":"https://github.com/rclone/rclone"},{"type":"WEB","url":"https://github.com/rclone/rclone/releases/tag/v1.75.0"}],"affected":[{"package":{"name":"github.com/rclone/rclone","ecosystem":"Go","purl":"pkg:golang/github.com/rclone/rclone"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"1.75.0"}]}],"database_specific":{"last_known_affected_version_range":"\u003c= 1.74.0","source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/08/GHSA-h4mf-4v27-hggj/GHSA-h4mf-4v27-hggj.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:A/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N"}]}