crun is an open source OCI Container Runtime fully written in C. Prior to version 1.28, cruns default device setup opens the container rootfs /dev directory without O_NOFOLLOW. If an OCI bundle contains rootfs/dev as a symlink and the bundle configuration does not mount /dev, crun follows that symlink and creates the default device nodes and stdio symlinks at the symlink target outside the container rootfs. In a local rootful crun replay, this created fixed device nodes and symlinks outside the rootfs before crun returned failure. A pre-existing file named ptmx in the target directory was also replaced by cruns forced ptmx -> pts/ptmx symlink. Version 1.28 fixes the issue.
The product, when opening a file or directory, does not sufficiently account for when the file is a symbolic link that resolves to a target outside of the intended control sphere. This could allow an attacker to cause the product to operate on unauthorized files.
| Name | Vendor | Start Version | End Version |
|---|---|---|---|
| Crun | Ubuntu | questing | * |
| Crun | Ubuntu | upstream | * |