Skip to content

Path traversal in a managed file transfer platform

Path traversal in a managed file transfer platform

Path traversal in a managed file transfer platform

A managed file transfer product moved contracts, records and financial documents between large organisations. We were asked to test whether the download path could be made to serve a file the caller had no claim to.

Client

File transfer platform

Industry

Enterprise software

Service

Web & API penetration test

Severity

CRITICAL

A row of sealed archive drawers with one pulled open, blue light spilling across the floor

01

The challenge

The challenge

The challenge

The download endpoint accepted a file reference from the client and returned the bytes. It confirmed the caller held a session. It did not confirm that the reference resolved to a file inside the caller’s own space, and it did not constrain where the reference was allowed to point.

A path supplied by a caller is an instruction, not a fact. When the receiving side treats it as a fact, the boundary that is supposed to separate one tenant’s files from another’s, and application data from the server’s own configuration, stops being a boundary and becomes a naming convention. Certification against a compliance checklist does not close this gap, because the checklist asks whether access control exists, not whether it is applied to the object actually being served.

On a platform whose entire purpose is to hold other people’s sensitive documents, a reference that can be pointed outside its intended directory reaches the configuration that holds credentials, and from there everything the platform has ever handled.

02

The approach

The approach

The approach

We treated the download path as untrusted input and asked what it could be made to resolve to, rather than what the interface intended it to resolve to. Two accounts under our control provided a clean before and after: a reference issued to one, replayed and adjusted from the other.

Around that we checked the surface that shares the same assumption:

  • Whether the reference was resolved against a fixed root or trusted as an absolute location

  • Whether tenant ownership was enforced on the resolved file, not on the request

  • Whether secrets recovered from configuration unlocked anything beyond the file store

  • Whether the token that verified identity was signed with a key strong enough to resist offline guessing

Delivered with the exact references used and the resulting responses, so each finding could be reproduced against a test tenant without taking our word for it.

03

The path

The path

The path

01

Mapped the file-download surface

02

Pointed a request outside its intended root

03

Reached configuration and other tenants' files

04

Pinned resolution to one root, retested

A dark concrete staircase descending through a series of doorways, its handrail traced in blue light

04

The outcome

The outcome

The outcome

Path resolution was pinned to a per-tenant root and ownership was enforced on the resolved object rather than on the presence of a session, so a reference can no longer escape the space it was issued in. Token signing was moved to a managed key of adequate strength, closing the second path to impersonation.

We retested the download surface and the authentication path after the fix. Reported as CRITICAL in 2024. Retest included in the engagement.

CRITICAL

CRITICAL

Severity

Severity

2024

2024

Disclosed

Disclosed

Included

Included

Retest

Retest