Skip to content

Netflix/hollow: Temporary directory hijacking

High
JLLeitschuh published GHSA-j83w-7qr9-wv86 Mar 30, 2021

Package

maven com.netflix.hollow:hollow (Maven)

Affected versions

All

Patched versions

None

Description

Impact

Temporary directory hijacking.

This vulnerability exists because Netflix/hollow will use files/directories that already exist on the system without first checking their permissions.

This vulnerability can be seen here:
https://github.com/Netflix/hollow/blob/eeefe2454ed2efce60b8971e1a02d8f7375ea7fb/hollow/src/main/java/com/netflix/hollow/api/producer/fs/HollowFilesystemBlobStager.java#L112-L140

Since the Files.exists(parent) is run before creating the directories, an attacker can pre-create these directories with wide permissions.

Additionally, since an insecure source of randomness is used, the file names to be created can be deterministically calculated.

https://github.com/Netflix/hollow/blob/eeefe2454ed2efce60b8971e1a02d8f7375ea7fb/hollow/src/main/java/com/netflix/hollow/api/producer/fs/HollowFilesystemBlobStager.java#L110

As such, an attacker is fully able to control both the contents of the files and directories that HollowFilesystemBlobStager operates on.


The custom CodeQL queries leveraged to find these this as well as their results can be found here:

https://lgtm.com/query/1543383251073929777/
https://lgtm.com/query/3142895023158674709/

Official Disclosure

https://github.com/Netflix/security-bulletins/blob/master/advisories/nflx-2021-001.md

Fixed Version

This vulnerability has not been patched.

Severity

High

CVSS overall score

This score calculates overall vulnerability severity from 0 to 10 and is based on the Common Vulnerability Scoring System (CVSS).
/ 10

CVSS v3 base metrics

Attack vector
Local
Attack complexity
High
Privileges required
None
User interaction
None
Scope
Changed
Confidentiality
High
Integrity
High
Availability
None

CVSS v3 base metrics

Attack vector: More severe the more the remote (logically and physically) an attacker can be in order to exploit the vulnerability.
Attack complexity: More severe for the least complex attacks.
Privileges required: More severe if no privileges are required.
User interaction: More severe when no user interaction is required.
Scope: More severe when a scope change occurs, e.g. one vulnerable component impacts resources in components beyond its security scope.
Confidentiality: More severe when loss of data confidentiality is highest, measuring the level of data access available to an unauthorized user.
Integrity: More severe when loss of data integrity is the highest, measuring the consequence of data modification possible by an unauthorized user.
Availability: More severe when the loss of impacted component availability is highest.
CVSS:3.1/AV:L/AC:H/PR:N/UI:N/S:C/C:H/I:H/A:N

CVE ID

CVE-2021-28099

Weaknesses

No CWEs

Credits