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

Description

Overly permissive file permission

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.

Configuration

This detector does not need any configuration.

References

© 2026 Xygeni. All rights reserved