GHSA-3x6r-wxxg-53vv: Null Pointer Dereference

Published Aug 5, 2026
·
Updated

1. Summary

A transport failure during the initial Infinite Scale TUS creation POST can return (nil response, non-nil error). Rclone dereferences the nil response before processing the error and panics. The production CreateUploader path reproduced the crash against a closed endpoint.

The security case is deployment-dependent. A one-shot upload already fails when its endpoint resets, while RC jobs recover panics in fs/rc/jobs/job.go and return a job error. The incremental denial of service is strongest in a long-lived VFS mount or concurrent/multi-remote CLI process where the upload runs in an unrecovered goroutine and the panic terminates unrelated work.

2. Affected Assets & Attack Surface

- Verified rclone revision: a0c09f1381ae93e2a9a33c529d170186c61ad058 (v1.74.0-240-ga0c09f138) - Current-master check: backend/webdav/tus.go was unchanged at master commit 961266888fe797390c535386f3b3aa46f4853602 on 2026-07-18 - Response evaluation: backend/webdav/tus.go:45-59 - Creation path: backend/webdav/tus.go:61-107 - Unrecovered VFS caller: vfs/write.go:71-81 - Contained RC caller: fs/rc/jobs/job.go:107-115 - Configuration: Infinite Scale WebDAV uploads using TUS - Code triggers: any pre-response transport failure, including refusal, reset, timeout, DNS/TLS/proxy failure, or cancellation - Security trigger: a malicious/compromised configured endpoint resets an upload in a long-lived or multi-workload process

3. Technical Root Cause Analysis

getTusLocationOrRetry switches on resp.StatusCode before checking whether resp is nil or handling the accompanying error. A nil response is valid when the HTTP transaction fails before a response is parsed. There is no recovery boundary in the WebDAV operation itself. Whether the panic is process-fatal depends on its caller: the VFS write path starts operations.Rcat in an unrecovered goroutine (vfs/write.go:71-81), whereas RC jobs wrap their function in recover (fs/rc/jobs/job.go:107-115).

4. Proof-of-Concept & Evidence

1. Configure the actual Infinite Scale creation path to a closed local endpoint. 2. Invoke Object.CreateUploader. 3. The POST returns a transport error and no response. 4. getTusLocationOrRetry dereferences resp.StatusCode and panics.

A remote endpoint can produce the same (nil response, non-nil error) state by accepting and resetting the connection before returning an HTTP response. TLS prevents arbitrary response modification but does not prevent the configured endpoint from closing or resetting its own connection. Refusal, DNS, TLS, proxy, and cancellation failures exercise the code defect but do not by themselves identify a remote security actor.

5. Impact Assessment

In an unrecovered CLI or VFS upload goroutine, the panic terminates the rclone process and any unrelated work it hosts. A hostile configured endpoint can repeat the condition whenever the victim initiates a TUS upload. RC jobs are excluded from the process-wide impact because their execution boundary recovers the panic and records an error. In a one-shot process dedicated to the hostile endpoint, the incremental security impact over an ordinary transport error is limited.

6. Remediation Guidance

- Check resp == nil before accessing response fields. - Pass transport errors through the existing retry policy and return a normal error after exhaustion. - Test refusal, reset, timeout, DNS, TLS, proxy, and cancellation paths. - Add panic containment to long-lived worker goroutines as defense in depth; keep nil handling as the primary fix.

Affected Software

1 affected componentFixes available
go/github.com/rclone/rclone<=1.74.0
1.75.0

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade go/github.com/rclone/rclone to a version that resolves this vulnerability.

    Fixed in 1.75.0
  2. Configuration

    Configure the actual Infinite Scale TUS creation path to a closed local endpoint to prevent a malicious/compromised configured endpoint from resetting/closing the connection and triggering a transport-failure (nil response) panic.

    Infinite Scale WebDAV uploads using TUS creation endpoint (TUS POST / configured endpoint) = closed local endpoint (do not use hostile/untrusted remote endpoints)
  3. Compensating control

    Ensure there is a recovery boundary around WebDAV/TUS upload operations in unrecovered goroutines (e.g., the VFS write path that starts operations.Rcat in vfs/write.go:71-81) so a panic in getTusLocationOrRetry does not terminate the whole rclone process or unrelated work.

  4. Operational

    After deploying the code fix to prevent nil response dereference in getTusLocationOrRetry (backend/webdav/tus.go:45-59 and backend/webdav/tus.go:61-107), run refusal/reset/timeout/DNS/TLS/proxy/cancellation tests against the Infinite Scale TUS creation POST path to confirm the transport errors are returned normally after retry exhaustion.

Event History

Aug 5, 2026
Advisory Published
via GitHub·08:26 PM
Data Sourced
via GitHub·08:26 PM
DescriptionSeverityWeaknessAffected Software
Free Weekly Intel

Don't miss critical vulnerabilities

Join thousands of security professionals who receive our weekly digest of trending CVEs, zero-days, and exploited vulnerabilities.

No spam. Unsubscribe anytime.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203