Slurm versions 23.02.6 and 22.05.10 are now available to address a number of filesystem race conditions that could let an attacker take control of an arbitrary file, or remove entire directories' contents (CVE-2023-41914).

SchedMD customers were informed on September 27th and provided a patch on request; this process is documented in our security policy [1].

--------
CVE-2023-41914:

A number of race conditions have been identified within the slurmd/slurmstepd processes that can lead to the user taking ownership of an arbitrary file on the system. A related issue can lead to the user overwriting an arbitrary file on the compute node (although with data that is not directly under their control). A related issue can also lead to the user deleting all files and sub-directories of an arbitrary target directory on the compute node.

Thank you to François Diakhate (CEA) for reporting the original issue to us. A number of related issues were found during an extensive audit of Slurm's filesystem handling code in reaction to that report, and are included here in this same disclosure.
--------

SchedMD only issues security fixes for the supported releases (currently 23.02 and 22.05). Due to the complexity of these fixes, we do not recommend attempting to backport the fixes to older releases, and strongly encourage sites to upgrade to fixed versions immediately.

Downloads are available at https://www.schedmd.com/downloads.php .

Release notes follow below.

- Tim

[1] https://www.schedmd.com/security.php

--
Tim Wickberg
Chief Technology Officer, SchedMD LLC
Commercial Slurm Development and Support

* Changes in Slurm 23.02.6
==========================
 -- Fix CpusPerTres= not upgreadable with scontrol update
 -- Fix unintentional gres removal when validating the gres job state.
 -- Fix --without-hpe-slingshot configure option.
 -- Fix cgroup v2 memory calculations when transparent huge pages are used.
 -- Fix parsing of sgather --timeout option.
 -- Fix regression from 22.05.0 that caused srun --cpu-bind "=verbose" and "=v"
    options give different CPU bind masks.
 -- Fix "_find_node_record: lookup failure for node" error message appearing
    for all dynamic nodes during reconfigure.
 -- Avoid segfault if loading serializer plugin fails.
 -- slurmrestd - Correct OpenAPI format for 'GET /slurm/v0.0.39/licenses'.
 -- slurmrestd - Correct OpenAPI format for 'GET /slurm/v0.0.39/job/{job_id}'.
 -- slurmrestd - Change format to multiple fields in 'GET
    /slurmdb/v0.0.39/assocations' and 'GET /slurmdb/v0.0.39/qos' to handle
    infinite and unset states.
 -- When a node fails in a job with --no-kill, preserve the extern step on the
    remaining nodes to avoid breaking features that rely on the extern step
    such as pam_slurm_adopt, x11, and job_container/tmpfs.
 -- auth/jwt - Ignore 'x5c' field in JWKS files.
 -- auth/jwt - Treat 'alg' field as optional in JWKS files.
 -- Allow job_desc.selinux_context to be read from the job_submit.lua script.
 -- Skip check in slurmstepd that causes a large number of errors in the munge
    log: "Unauthorized credential for client UID=0 GID=0".  This error will
    still appear on slurmd/slurmctld/slurmdbd start up and is not a cause for
    concern.
 -- slurmctld - Allow startup with zero partitions.
 -- Fix some mig profile names in slurm not matching nvidia mig profiles.
 -- Prevent slurmscriptd processing delays from blocking other threads in
    slurmctld while trying to launch {Prolog|Epilog}Slurmctld.
 -- Fix sacct printing ReqMem field when memory doesn't exist in requested TRES.
 -- Fix how heterogenous steps in an allocation with CR_PACK_NODE or -mpack are
    created.
 -- Fix slurmctld crash from race condition within job_submit_throttle plugin.
 -- Fix --with-systemdsystemunitdir when requesting a default location.
 -- Fix not being able to cancel an array task by the jobid (i.e. not
    <jobid>_<taskid>) through scancel, job launch failure or prolog failure.
 -- Fix cancelling the whole array job when the array task is the meta job and
    it fails job or prolog launch and is not requeable. Cancel only the
    specific task instead.
 -- Fix regression in 21.08.2 where MailProg did not run for mail-type=end for
    jobs with non-zero exit codes.
 -- Fix incorrect setting of memory.swap.max in cgroup/v2.
 -- Fix jobacctgather/cgroup collection of disk/io, gpumem, gpuutil TRES values.
 -- Fix -d singleton for heterogeneous jobs.
 -- Downgrade info logs about a job meeting a "maximum node limit" in the
    select plugin to DebugFlags=SelectType. These info logs could spam the
    slurmctld log file under certain circumstances.
 -- prep/script - Fix [Srun|Task]<Prolog|Epilog> missing SLURM_JOB_NODELIST.
 -- gres - Rebuild GRES core bitmap for nodes at startup. This fixes error:
    "Core bitmaps size mismatch on node [HOSTNAME]", which causes jobs to enter
    state "Requested node configuration is not available".
 -- slurmctd - Allow startup with zero nodes.
 -- Fix filesystem handling race conditions that could lead to an attacker
    taking control of an arbitrary file, or removing entire directories'
    contents. CVE-2023-41914.

* Changes in Slurm 22.05.10
===========================
 -- Fix filesystem handling race conditions that could lead to an attacker
    taking control of an arbitrary file, or removing entire directories'
    contents. CVE-2023-41914.

Reply via email to