Incorrect Permission Assignment for Critical Resource
ID |
scala.perm.scala_perm_rule_overlypermissivefilepermissionobj |
Severity |
low |
Remediation Complexity |
trivial |
Remediation Risk |
low |
Remediation Effort |
low |
Resource |
Perm |
Language |
Scala |
Rationale
Overly permissive file permission
The following code illustrates a vulnerable pattern detected by this rule:
class ArchiveWriter {
@throws[IOException]
def builtLocally(target: Path): Unit = {
val mode = new java.util.HashSet[PosixFilePermission]()
mode.add(PosixFilePermission.OWNER_READ)
mode.add(PosixFilePermission.OWNER_WRITE)
mode.add(PosixFilePermission.OWNER_EXECUTE)
mode.add(PosixFilePermission.GROUP_READ)
mode.add(PosixFilePermission.GROUP_WRITE)
mode.add(PosixFilePermission.GROUP_EXECUTE)
// VULNERABLE: Incorrect Permission Assignment for Critical Resource
mode.add(PosixFilePermission.OTHERS_READ)
// VULNERABLE: Incorrect Permission Assignment for Critical Resource
mode.add(PosixFilePermission.OTHERS_WRITE)
// VULNERABLE: Incorrect Permission Assignment for Critical Resource
mode.add(PosixFilePermission.OTHERS_EXECUTE)
Files.setPosixFilePermissions(target, mode)
}
// The set arrives from the caller, so only the additions are visible here.
@throws[IOException]
// An immutable set grows by `+`, which is the Scala spelling of the same addition.
@throws[IOException]
@throws[IOException]
def ownerAndGroupOnly(target: Path): Unit = {
val mode = new java.util.HashSet[PosixFilePermission]()
mode.add(PosixFilePermission.OWNER_READ)
mode.add(PosixFilePermission.OWNER_WRITE)
mode.add(PosixFilePermission.OWNER_EXECUTE)
mode.add(PosixFilePermission.GROUP_READ)
mode.add(PosixFilePermission.GROUP_WRITE)
mode.add(PosixFilePermission.GROUP_EXECUTE)
Files.setPosixFilePermissions(target, mode)
}
}
Remediation
Follow secure coding practices and review the references below for detailed remediation guidance.
References
-
OWASP Top 10 2025 - A01 : Broken Access Control.