Cloudanix VulnDB

CVE-2016-10030

High · 8.1

CVSS

8.1

EPSS

2.5%

Published

Jan 5, 2017

CISA due date

—

Cloudanix analysis

Schedule a fix SSVC: Track

A flaw in cluster job management software could let users take over important files on the system if certain startup scripts fail.

Chainable
Exploitation
Remote Authenticated
Attacker needs
Low Privilege
Complexity
High
Impact
Full Compromise
Component
Application
Class
Authorization Bypass
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

The _prolog_error function in slurmd/req.c allows a local user to specify and control an arbitrary file on the system when a Prolog script returns a non-zero exit code, enabling file overwrite or control under specific conditions.

Why it matters to the business

Organizations running HPC or cluster workloads with custom Prolog scripts face risk of unauthorized file modification on compute nodes, potentially leading to job disruption, data tampering, or node compromise if scripts are not hardened.

How an attack unfolds

An attacker submits a job that triggers or anticipates a Prolog script failure on a compute node; the slurmd daemon then mishandles the error reporting path, allowing the attacker to direct the daemon to write or control a chosen file instead of the intended error handling.

How to fix it

Upgrade Slurm to a fixed version such as the commit 92362a92fffe60187df61f99ab11c249d44120ee or later releases (15.08.13+, 16.05.7+, 17.02.0-pre4+); alternatively disable Prolog scripts or modify them to always return success and use scontrol to mark nodes down.

How to confirm the fix worked

Confirm Slurm version is at or above the listed fixed commits or releases; test by submitting jobs that would previously trigger Prolog failures and verify no arbitrary file control occurs; review Prolog configuration for the recommended workarounds.

Typical attack path

  1. Identify or craft a job submission that causes a Prolog script to exit non-zero
  2. Submit the job to a Slurm cluster with an active Prolog configuration
  3. Trigger the error path in slurmd/req.c
  4. Specify target file path via the vulnerable error reporting mechanism
  5. Achieve control or overwrite of the arbitrary file

How to detect it

Review slurmd logs for unusual Prolog error handling or file access attempts; inspect job submission logs for patterns of deliberate Prolog failures; check system file timestamps and ownership changes on critical configuration or data files following job runs.

What your security team should do

  • Prioritize upgrade of all Slurm installations to patched versions within maintenance windows
  • Audit and harden or disable Prolog scripts as a compensating control
  • Monitor for jobs causing repeated Prolog failures as a potential indicator

The record

The _prolog_error function in slurmd/req.c in Slurm before 15.08.13, 16.x before 16.05.7, and 17.x before 17.02.0-pre4 has a vulnerability in how the slurmd daemon informs users of a Prolog failure on a compute node. That vulnerability could allow a user to assume control of an arbitrary file on the system. Any exploitation of this is dependent on the user being able to cause or anticipate the failure (non-zero return code) of a Prolog script that their job would run on. This issue affects all Slurm versions from 0.6.0 (September 2005) to present. Workarounds to prevent exploitation of this are to either disable your Prolog script, or modify it such that it always returns 0 ("success") and adjust it to set the node as down using scontrol instead of relying on the slurmd to handle that automatically. If you do not have a Prolog set you are unaffected by this issue.

Affected packages

Ecosystem Package Introduced Fixed
Debian:7 slurm-llnl 0 2.3.4-2+deb7u1
SUSE:Linux Enterprise Module for HPC 12 pdsh 0 2.33-7.18.1
SUSE:Linux Enterprise Module for HPC 12 pdsh 0 2.34-7.32.1
SUSE:Linux Enterprise Module for HPC 12 pdsh_slurm_18_08 0 2.34-7.26.2
SUSE:Linux Enterprise Module for HPC 12 pdsh_slurm_18_08 0 2.34-7.32.1
SUSE:Linux Enterprise Module for HPC 12 pdsh_slurm_20_02 0 2.34-7.26.2
SUSE:Linux Enterprise Module for HPC 12 pdsh_slurm_20_02 0 2.34-7.32.1
SUSE:Linux Enterprise Module for HPC 12 pdsh_slurm_20_11 0 2.34-7.32.1
SUSE:Linux Enterprise Module for HPC 12 slurm_18_08 0 18.08.9-3.5.1
SUSE:Linux Enterprise Module for HPC 12 slurm_20_02 0 20.02.3-3.5.1
SUSE:Linux Enterprise Module for HPC 12 slurm_20_11 0 20.11.4-3.5.1
SUSE:Linux Enterprise Module for HPC 15 pdsh 0 2.33-7.6.1
SUSE:Linux Enterprise Module for HPC 15 slurm_18_08 0 18.08.9-1.5.2
SUSE:Linux Enterprise Module for HPC 15 SP1 pdsh 0 2.33-7.6.1
Ubuntu:20.04:LTS slurm-llnl 0 19.05.3.2-2
Ubuntu:Pro:14.04:LTS slurm-llnl 0 2.6.5-1ubuntu0.1~esm6
Ubuntu:Pro:14.04:LTS slurm-llnl 0 2.6.5-1ubuntu0.1~esm5
Ubuntu:Pro:16.04:LTS slurm-llnl 0 15.08.7-1ubuntu0.1~esm3
Ubuntu:Pro:16.04:LTS slurm-llnl 0 15.08.7-1ubuntu0.1~esm4
Ubuntu:Pro:16.04:LTS slurm-llnl 0 15.08.7-1ubuntu0.1~esm5
Ubuntu:Pro:18.04:LTS slurm-llnl 0 17.11.2-1ubuntu0.1~esm4
Ubuntu:Pro:20.04:LTS slurm-llnl 0 19.05.5-1ubuntu0.1~esm1
openSUSE:Tumbleweed slurm 0 21.08.1-1.1

Related vulnerabilities