all lists on lists.proxmox.com
 help / color / mirror / Atom feed
From: Stoiko Ivanov <s.ivanov@proxmox.com>
To: Daniel Berteaud <daniel@firewall-services.com>
Cc: Proxmox VE development discussion <pve-devel@lists.proxmox.com>
Subject: Re: [pve-devel] [PATCH storage] ZFSPlugin: untaint lun number
Date: Fri, 9 Oct 2020 19:08:59 +0200	[thread overview]
Message-ID: <20201009190859.67a49c2a@rosa.proxmox.com> (raw)
In-Reply-To: <1253861784.220180.1602258262225.JavaMail.zimbra@fws.fr>

On Fri, 9 Oct 2020 17:44:22 +0200 (CEST)
Daniel Berteaud <daniel@firewall-services.com> wrote:

> ----- Le 9 Oct 20, à 17:26, Daniel Berteaud daniel@firewall-services.com a écrit :
> 
> > ----- Le 9 Oct 20, à 17:13, Stoiko Ivanov s.ivanov@proxmox.com a écrit :
> >   
> >> ZFS over iSCSI fetches information about the disk-images via ssh, thus
> >> the obtainted data is tainted (perlsec (1)).
> >> 
> >> Since pvedaemon runs with '-T' enabled trying to start a VM via GUI/API failed,
> >> while it still worked via `qm` or `pvesh`.
> >> 
> >> The issue surfaced after commit cb9db10c1a9855cf40ff13e81f9dd97d6a9b2698 in
> >> pve-common ('run_command: improve performance for logging and long lines'),
> >> and results from concatenating the original (tainted) buffer to a variable,
> >> instead of a captured subgroup.
> >> 
> >> Untainting the value in ZFSPlugin should not cause any regressiosn, since the
> >> other 3 target providers already have a match on '\d+' for retrieving the
> >> lun number.
> >> 
> >> reported via pve-user [0].
> >> 
> >> reproduced and tested by setting up a LIO-target (on top of a virtual PVE),
> >> adding it as storage and trying to start a guest (with a disk on the
> >> ZFS over iSCSI storage) with `perl -T /usr/sbin/qm start $vmid`
> >> 
> >> [0] https://lists.proxmox.com/pipermail/pve-user/2020-October/172055.html
> >> 
> >> Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
> >> ---
> >> PVE/Storage/ZFSPlugin.pm | 6 +++++-
> >> 1 file changed, 5 insertions(+), 1 deletion(-)
> >> 
> >> diff --git a/PVE/Storage/ZFSPlugin.pm b/PVE/Storage/ZFSPlugin.pm
> >> index 383f0a0..63b9551 100644
> >> --- a/PVE/Storage/ZFSPlugin.pm
> >> +++ b/PVE/Storage/ZFSPlugin.pm
> >> @@ -159,7 +159,11 @@ sub zfs_get_lun_number {
> >> 
> >>     die "could not find lun_number for guid $guid" if !$guid;
> >> 
> >> -    return $class->zfs_request($scfg, undef, 'list_view', $guid);
> >> +    if ($class->zfs_request($scfg, undef, 'list_view', $guid) =~ /^(\d+)$/) {
> >> +	return $1;
> >> +    }
> >> +
> >> +    die "lun_number for guid $guid is not a number";
> >> }  
> >   
> 
> 
> I can confirm this is fixing the issue of the VM not starting from the web interface. There's still a (probably) related issue : ZFS over iSCSI disks can't be removed (eg, at the end of a live disk move) :

Thanks for testing it so quickly!
> 
> Use of uninitialized value in die at /usr/share/perl5/PVE/Storage/LunCmd/LIO.pm line 337.
> error during cfs-locked 'storage-iscsi-zfs-zol1-prd' operation: command '/usr/bin/ssh -o 'BatchMode=yes' -i /etc/pve/priv/zfs/10.29.255.252_id_rsa root@10.29.255.252 -- /usr/bin/targetcli /iscsi/iqn.2019-10.fr.fws.pve:prod/tpg1/luns/ delete lun1' failed: Insecure dependency in exec while running with -T switch at /usr/share/perl/5.28/IPC/Open3.pm line 178.
> 	...propagated at /usr/share/perl5/PVE/Storage/LunCmd/LIO.pm line 337.
You're right - I'll come up with a patch for the other places wher the LIO
Backend needs untainting and will send a patch.

Best Regards,
stoiko


> 
> It might be only affecting the LIO backend though
> 
> Cheers,
> Daniel
> 
> 





  reply	other threads:[~2020-10-09 17:09 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-09 15:13 Stoiko Ivanov
2020-10-09 15:26 ` Daniel Berteaud
2020-10-09 15:44   ` Daniel Berteaud
2020-10-09 17:08     ` Stoiko Ivanov [this message]
2020-10-09 16:07 ` [pve-devel] applied: " Thomas Lamprecht

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20201009190859.67a49c2a@rosa.proxmox.com \
    --to=s.ivanov@proxmox.com \
    --cc=daniel@firewall-services.com \
    --cc=pve-devel@lists.proxmox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal