GitHub Blog Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

Double free with per-command chroot sudoers rules

A flaw exists in sudo’s per-command chroot feature that could result in the variable that stores the command being freed more than once.

Sudo versions affected:

Sudo versions 1.9.8 through 1.9.13p1 inclusive are affected. Versions of sudo prior to 1.9.8 are not affected.


This vulnerability has been assigned CVE-2023-27320 in the Common Vulnerabilities and Exposures database.


Starting with Sudo 1.9.3, it is possible to specify an alternate root directory that sudo will change to before executing the command. For example:

someuser ALL = CHROOT=/var/www /bin/sh

will result in /bin/sh being run inside the chroot jail /var/www when the specific user user runs sudo sh.

Sudo 1.9.8 included a fix for a memory leak in the set_cmnd_path() function which can result in the user_cmnd variable being freed twice, but only when processing a sudoers rule that contains a CHROOT setting. This does not affect the chroot Defaults setting. Only a per-rule CHROOT setting will trigger the bug.


The bug can only be triggered by a user that has been granted sudo privileges using a sudoers rule that contain a CHROOT setting and the rule must match the current host. If no users have sudoers rules containing CHROOT there is no impact. This feature is not commonly used.


Remove rules from the sudoers file than contain a CHROOT setting if using an affected version of sudo.


The bug is fixed in sudo 1.9.13p2.


This bug was found internally.