title: Files added to tar with Phar::buildFromIterator have all-access permissions
description: In PHP versions 7.2.x below 7.2.28, 7.3.x below 7.3.15 and 7.4.x below 7.4.3, when creating PHAR archive using PharData::buildFromIterator() function, the files are added with default permissions (0666, or all access) even if the original files on the filesystem were with more restrictive permissions. This may result in files having more lax permissions than intended when such archive is extracted.
problem types: CWE-281 Improper Preservation of Permissions
affected:
{
product: PHP
vendor: PHP Group
versions:
lessThan: 7.3.15, status: affected, version: 7.3.x, versionType: custom
lessThan: 7.4.3, status: affected, version: 7.4.x, versionType: custom
lessThan: 7.2.28, status: affected, version: 7.2.x, versionType: custom
}
metrics:
cvssV3_1: [
attackComplexity: LOW
attackVector: LOCAL
availabilityImpact: NONE
baseScore: 5.5
baseSeverity: MEDIUM
confidentialityImpact: HIGH
integrityImpact: NONE
privilegesRequired: NONE
scope: UNCHANGED
userInteraction: REQUIRED
vectorString: CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:N
version: 3.1
]
workarounds: Use different Phar class functions to compose the archive, such as addFile(), or reset file permissions upon extracting files from the archive.