We get the device list from ceph-volume lvm list, and decode the json output, which at that point is tainted (perlsec (1)). Untaint it here before calling, because it is currently the only call-site using the information in a problematic way (run_command). (the only other call-site being in pve5to6)
Alternatively we could untaint while reading the information, but then should only return a small subset of the ceph-volume output. The issue is most likely due to cb9db10c1a9855cf40ff13e81f9dd97d6a9b2698 in pve-common ('run_command: improve performance for logging and long lines'), Tested on a virtual testsetup by creating OSDs with second DB disk, and destroying it via GUI (did not manage to get the error without the DB disk) Reported via our community forum: https://forum.proxmox.com/threads/insecure-dependency-in-exec-during-osd-destroy.79574/ Signed-off-by: Stoiko Ivanov <s.iva...@proxmox.com> --- PVE/API2/Ceph/OSD.pm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/PVE/API2/Ceph/OSD.pm b/PVE/API2/Ceph/OSD.pm index 685b68bc..b81a8054 100644 --- a/PVE/API2/Ceph/OSD.pm +++ b/PVE/API2/Ceph/OSD.pm @@ -575,6 +575,8 @@ __PACKAGE__->register_method ({ # try to remove pvs, but do not fail if it does not work for my $osd_part (@{$osd_list->{$osdid}}) { for my $dev (@{$osd_part->{devices}}) { + ($dev) = ($dev =~ m|^(/dev/[-_.a-zA-Z0-9\/]+)$|); #untaint + eval { run_command(['/sbin/pvremove', $dev], errfunc => sub {}) }; warn $@ if $@; } -- 2.20.1 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel