From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Eli Zaretskii Newsgroups: gmane.emacs.bugs Subject: bug#27986: 26.0.50; 'rename-file' can rename files without confirmation Date: Wed, 16 Aug 2017 05:36:43 +0300 Message-ID: <83wp64fdc4.fsf@gnu.org> References: <61980dde-3d68-7200-e7f4-98f62e410060@cs.ucla.edu> <1002ee73-0ab5-409b-831f-0c283c322264@cs.ucla.edu> <83o9rignt6.fsf@gnu.org> <83d17whl72.fsf@gnu.org> <8e6de468-600c-4f2d-a21a-c2ff3a63d065@cs.ucla.edu> <83zib0g221.fsf@gnu.org> <2bb4b7ee-6bf9-df3d-5cd8-ae7992b9f2e7@cs.ucla.edu> Reply-To: Eli Zaretskii NNTP-Posting-Host: blaine.gmane.org X-Trace: blaine.gmane.org 1502851097 15556 195.159.176.226 (16 Aug 2017 02:38:17 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Wed, 16 Aug 2017 02:38:17 +0000 (UTC) Cc: p.stephani2@gmail.com, 27986@debbugs.gnu.org To: Paul Eggert Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Wed Aug 16 04:38:11 2017 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dhoDi-0003Zp-IZ for geb-bug-gnu-emacs@m.gmane.org; Wed, 16 Aug 2017 04:38:10 +0200 Original-Received: from localhost ([::1]:38528 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dhoDn-0000mX-C8 for geb-bug-gnu-emacs@m.gmane.org; Tue, 15 Aug 2017 22:38:15 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:59442) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dhoDd-0000lx-AJ for bug-gnu-emacs@gnu.org; Tue, 15 Aug 2017 22:38:06 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dhoDa-0000kt-4S for bug-gnu-emacs@gnu.org; Tue, 15 Aug 2017 22:38:05 -0400 Original-Received: from debbugs.gnu.org ([208.118.235.43]:59621) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dhoDZ-0000kn-W8 for bug-gnu-emacs@gnu.org; Tue, 15 Aug 2017 22:38:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1dhoDZ-0002qq-N7 for bug-gnu-emacs@gnu.org; Tue, 15 Aug 2017 22:38:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 16 Aug 2017 02:38:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 27986 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: security Original-Received: via spool by 27986-submit@debbugs.gnu.org id=B27986.150285102610895 (code B ref 27986); Wed, 16 Aug 2017 02:38:01 +0000 Original-Received: (at 27986) by debbugs.gnu.org; 16 Aug 2017 02:37:06 +0000 Original-Received: from localhost ([127.0.0.1]:40069 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dhoCg-0002pf-7U for submit@debbugs.gnu.org; Tue, 15 Aug 2017 22:37:06 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:40034) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dhoCf-0002pB-7K for 27986@debbugs.gnu.org; Tue, 15 Aug 2017 22:37:05 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dhoCW-0000Vf-QE for 27986@debbugs.gnu.org; Tue, 15 Aug 2017 22:36:59 -0400 Original-Received: from fencepost.gnu.org ([2001:4830:134:3::e]:47764) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dhoCW-0000VZ-Fl; Tue, 15 Aug 2017 22:36:56 -0400 Original-Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:2409 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1dhoCV-0002LP-TT; Tue, 15 Aug 2017 22:36:56 -0400 In-reply-to: <2bb4b7ee-6bf9-df3d-5cd8-ae7992b9f2e7@cs.ucla.edu> (message from Paul Eggert on Tue, 15 Aug 2017 12:27:52 -0700) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 208.118.235.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:135798 Archived-At: > Cc: p.stephani2@gmail.com, 27986@debbugs.gnu.org > From: Paul Eggert > Date: Tue, 15 Aug 2017 12:27:52 -0700 > > Eli Zaretskii wrote: > > > How would they know to create B before Emacs issues any system call > > that uses B? > > Because the attackers know how Emacs work and are attempting to exploit its > security hole. Knowing how Emacs works is not enough: they need to actually know the name of the directory to create, and I don't see how they can do that without seeing some system call which names that directory. > > And how is this case different from the case that Emacs calls > > (rename-file A B) thinking B doesn't exist (e.g., because some prior > > code tested that)? > > The case in question trashes a directory that the attacker lacks permission to. > The case you're talking about does not: it merely causes rename-file to fail. No, it's the same use case. In both of them the attacker creates a directory ahead of Emacs using it in some system call. > Another possibility is to implement new functions (say: file-copy, file-rename, > file-link, file-symlink, and directory-copy) that behave like the existing > functions except without the security hole, modify callers to use these new > functions, and then mark the existing functions as deprecated due to security > concerns. If no other solution is possible, maybe this is what we should do. If we decide to go that way, we should also decide what to do with the interactive use of those functions: whether to call the old or the new variant, because we need to keep backward compatibility there as well. If we decide to use the old variants, deprecation might not be the right mechanism for promoting the new variants. > I suspect that this would be more disruptive overall than the proposed > change, though (albeit disruptive in a different way). How so?