Risk Level

Properties of the Risk Level

The RL has the following properties:

  • Issues with info severity are ignored in the computation of the RL. They are just informative, and have no effect on the risk.

  • In addition, muted issues are also ignored, no effect on the risk.

  • A single critical issue makes the RL fall in the high risk range RL ≥ Ch; similarly, a single high severity issue makes the RL fall in the moderate risk range RL ≥ Cl. This is the "a chain is as strong as its weakest link" property. This is true for issues on a single project.

  • Monotonicity: RL should increase when (non-info) issues are added. RL should NOT INCREASE when a single issue is removed. In other terms: if A1 and A2 are sets of issues with A1 ⊆ A2 then RL(A1) ≤ RL(A2).

    Also, if a issue changes to a higher severity, the RL should increase: more severe issues implies higher risk.

  • No issue, no risk: RL(∅) = 0. When no issues found but analyses were run, risk level is zero. Note: When no analysis available for project, then RL is undefined, NOT zero.

  • Averaged risk across projects is meaningful: For convenience, the RL for a group of projects, or for the organization could be computed using a weighted average on the RL of the projects.

Note that the RL for a group of projects, defined as weighted average of the RL for each project in the group, means that the RL for the group is in the range [0, 100], and it is a linear function of the RL of the individual projects.

Configuration

The relative weights for each issue type and severity, and the weight of each project in the global risk for the organization or project could be edited in the xygeni.risk-level.yml configuration file.

The cutoff values for each risk category could be configured as well:

# Configuration for risk level

# Weights for each issue kind and severity level
#
# Each array is the weight for issues of the given kind,
# with critical, high and low severity, respectively.
weights:
  misconfiguration:    [3, 2, 1]
  suspect_dependency:  [3, 2, 1]
  secret:              [3, 2, 1]
  iac_flaw:            [3, 2, 1]
  unusual_activity:    [3, 2, 1]
  code_tampering:      [3, 2, 1]
  sca_vulnerability:   [3, 2, 1]

# Cutoff values for each risk category [c_low, c_high]
#
# high risk, when risk level >= c_high
# moderate risk, when risk level in the [c_low, c_high) interval
# low risk, when risk level < c_low
#
# c_low must be lower than c_high, and both in the range (0, 100)
cutoff: [33.33, 66.66]

# The factor for normalizing the weighted count of issues
# into the risk range. Approximately the average
steepness: 0.00666

# Weight for risk level aggregation across projects.
# The business value project property is used for selecting the weight.
project_weights:
  critical:  4
  high:      3
  medium:    2
  low:       1

Last updated