From: Gert D. <ge...@gr...> - 2014-10-06 12:19:39
|
Hiya, On Mon, Oct 06, 2014 at 07:45:21AM -0400, Jonathan K. Bullard wrote: > In an article [1], OpenVPN developer Gert Doering is quoted as saying: > > "What you want to do from OpenVPN???s point of view is to ensure that > you???re not using a 2.2.x version anymore, *and* that you just do not > run your scripts using bash" > > Is there a problem with 2.2.1 generally, or just with the Windows versions? 2.2.x can use system() to run scripts, which will expose you to the shellshock vulnerability on systems where /bin/sh is an alias to bash (because system() will call "/bin/sh -c $yourcommand" under the hood). So even if your commands are all save, you might still be shellshock- vulnerable, *if* you use 2.2.x *and* have "script-security system" in your config *and* /bin/sh is bash. So this is a lot of "ifs", and I should have made this more clear in my response. In 2.3.0, David removed support for system(), and OpenVPN now exclusively uses fork()/exec()/wait() to achieve that functionality: ----------------------------------------------------------------- commit 3cb9f1a62b4a84dbf4acd1957c900a5b06fd6ac2 Author: David Sommerseth <da...@re...> Date: Thu Oct 25 14:22:30 2012 +0200 Remove the support for using system() when executing external programs or scripts This patch removes the support for the system() call, and enforces the usage of execve() on the *nix platform and CreateProcessW() on Windows. This is to enhance the overall security when calling external scripts. Using system() is prone to shell expansions, which may lead to security breaches. Which is also why the execve() approach has been the default since commit a82813527551f0e79c6d6ed5a9c1162e3c171bcf which re-introduced the system() in Nov. 2008. ----------------------------------------------------------------- Looking at MacOS X, it *does* use "bash" for /bin/sh, so you really do want to upgrade that - and do not use any scripts that use "#!/bin/sh" or "#!/bin/bash" there before you have upgraded. Using OpenVPN 2.2.1 or 2.3.4 would only make a difference if the "system" flag is used in the "script-security" command - so: don't do that. > I assumed from Gert's quote that 2.2.1 is vulnerable (to something), > so I removed it from the most recent version of Tunnelblick so it > includes only 2.3.4. But that is causing problems for a few users [2], > [3], so I may add it back in the next release if it is "safe". > (Tunnelblick can contain multiple versions of OpenVPN; the user > chooses which one to use.) The issue in [2] might actually be due to some "script-security" side effect - I can't off-hand come up with an example why this should be the case (the change to require "script-security 2" to run any scripts at all was introduced in 2.1_rc14), but it would be good to see the 2.3.4 logs what it tries and how it fails. [3] also puzzles me - there should not be any change between 2.2 and 2.3 regarding pushed routes, and my wife is using Tunnelblick with OpenVPN 2.3.4 on her Macs just fine... [..] > But was Gert really warning not to use the **Windows** versions of > 2.2.x (because of the Heartbleed vulnerability in the OpenSSL built > into the Windows versions)? No, that was strictly in the context of shellshock. Apologies for the confusion caused. That question came in on quite short notice, and I might have spent a bit more thought on the wording of the response (I didn't assume it would go 1:1 to the article, without any questions for clarification if anything was unclear). gert -- USENET is *not* the non-clickable part of WWW! //www.muc.de/~gert/ Gert Doering - Munich, Germany ge...@gr... fax: +49-89-35655025 ge...@ne... |