z5t1 (???) wrote:

> Hi, I'd like to add my two cents to this.
> 
> I have reproduced this on Centos 6 and Cucumber Linux 1.0. We have 
> established that the umask plays no role in the permissions on swap files; 
> Vim creates its swap files with the same permissions as the file being edited.
> 
> However, there is another problem with the swap file permissions that has not 
> yet been discussed: when Vim creates swap files, the .swp file is created 
> with the owner and group set to the user who is editing the file (hereafter 
> referred to as the "editor") and the editor's primary group respectively. The 
> permission bits on the swap file are the same as the original file.
> 
> This is a problem, as the editor's primary group may be different from the 
> group of the file being edited. Take /etc/shadow for example. That file is 
> supposed to have the permissions 640 with owner: root, group: shadow as a 
> quick `ls -l` shows:
> 
> -rw-r----- 1 root shadow 1195 Sep 16 20:09 /etc/shadow
> 
> However, shadow is not the root user's primary group; on this system it 
> happens to be 'users', which every other user on the system is also a member 
> of. Now if root goes to edit the file, a swap file is created in 
> /etc/.shadow.swp with the following permissions:
> 
> -rw-r----- 1 root users 4096 Nov  2 13:52 /etc/.shadow.swp
> 
> This swap file is now readable by every user on the system. Keep in mind the 
> /etc/shadow file contains hashes of every user's password, so now the 
> password for every single user on the system may have been compromised.

Eh, why is root's primary group one that all users on the system are a
member of?  That is asking for trouble.  Every file that root creates
will be readable by everybody by default.

> --- Solution ---
> 
> I have found this problem can be mitigated by changing the swap directory 
> with the 'set directory' directive as Hanno originally suggested. I have 
> added the following lines to my '/etc/vimrc':
> 
> " Move the swap file location to protect against CVE-2017-1000382
> silent !install -d -m 700 ~/.vim/swap/ 2>&1 > /dev/null
> set directory=~/.vim/swap/
> 
> This safely sets the swap file directory to a directory that should not cause 
> any security problems. For added security, the directory is created so that 
> only the owner has access to it, regardless of how the system's umask or .swp 
> file permissions are set.
> 
> Additionally, the swap file collision (if you edit both ~/foo/file and 
> ~/bar/file at the same time) is not a major issue; Vim detects this and gives 
> the second swap file a different file extension. When you go to restore from 
> the swap file, you get a prompt asking which swap file you want to use (if 
> there are two swap files with the same basename), which doesn't strike me as 
> being terribly problematic. While this approach may have some minor 
> issues/quirks, for me it seems far preferable to being vulnerable to this 
> vulnerability.
> 
> I have already applied this fix on Cucumber Linux and thought you may want to 
> consider applying a similar fix upstream.

-- 
Kisses may last for as much as, but no more than, five minutes.
                [real standing law in Iowa, United States of America]

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui