[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: VSR Advisories: Linux RDS Protocol Local Privilege Escalation



The advisory for this vulnerability has been updated to include a
suggested workaround:

Preventing the RDS kernel module from loading is an effective
workaround. This can be accomplished by executing the following
command as root:

echo "alias net-pf-21 off" > /etc/modprobe.d/disable-rds

In addition, I've uploaded a new version of the exploit which should
be slightly more stable.  The previous version overwrote a security
ops function pointer to ptrace_traceme, which was a poor choice,
especially since Google Chrome uses ptrace regularly.  The new version
overwrites a function pointer in the socket operations for RDS, which
will most likely not be used by other processes.

The updated advisory is available at:
http://www.vsecurity.com/resources/advisory/20101019-1/

And the updated exploit is available at:
http://www.vsecurity.com/download/tools/linux-rds-exploit.c

-Dan

On Tue, Oct 19, 2010 at 2:22 PM, VSR Advisories
<advisories@xxxxxxxxxxxxx> wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
>                         VSR Security Advisory
>                       http://www.vsecurity.com/
>
> - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
>
> Advisory Name: Linux RDS Protocol Local Privilege Escalation
>  Release Date: 2010-10-19
>  Application: Linux Kernel
>     Versions: 2.6.30 - 2.6.36-rc8
>     Severity: High
>       Author: Dan Rosenberg < drosenberg (at) vsecurity (dot) com >
> Vendor Status: Patch Released [3]
> CVE Candidate: CVE-2010-3904
>    Reference: http://www.vsecurity.com/resources/advisory/20101019-1/
>
> - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
>
>
> Product Description
> - -------------------
> - From [1]:
>
>  "Linux is a free Unix-type operating system originally created by Linus
>  Torvalds with the assistance of developers around the world. Developed under
>  the GNU General Public License, the source code for Linux is freely available
>  to everyone."
>
> - From [2]:
>
>  "Reliable Datagram Sockets (RDS) provide in order, non-duplicating,
>  highly available, low overhead, reliable delivery of datagrams between
>  hundreds of thousands of non-connected endpoints."
>
> Vulnerability Overview
> - ----------------------
> On October 13th, VSR identified a vulnerability in the RDS protocol, as
> implemented in the Linux kernel.  Because kernel functions responsible for
> copying data between kernel and user space failed to verify that a
> user-provided address actually resided in the user segment, a local attacker
> could issue specially crafted socket function calls to write abritrary values
> into kernel memory.  By leveraging this capability, it is possible for
> unprivileged users to escalate privileges to root.
>
> Vulnerability Details
> - ---------------------
> On Linux, recvmsg() style socket calls are performed using iovec structs, which
> allow a user to specify a base address and size for a buffer used to receive
> socket data.  Each packet family is responsible for defining functions that
> copy socket data, which is received by the kernel, back to user space to allow
> user programs to process and handle received network data.
>
> When performing this copying of data to user space, the RDS protocol failed to
> verify that the base address of a user-provided iovec struct pointed to a valid
> userspace address before using the __copy_to_user_inatomic() function to copy
> the data.  As a result, by providing a kernel address as an iovec base and
> issuing a recvmsg() style socket call, a local user could write arbitrary data
> into kernel memory.  This can be leveraged to escalate privileges to root.
>
> Proof-of-Concept Exploit
> - ------------------------
> VSR has developed a proof-of-concept exploit [4] to both demonstrate the
> severity of this issue as well as allow users and administrators to verify the
> existence of the vulnerability.  The exploit leverages the ability to write
> into kernel memory to reset the kernel's security operations structure and gain
> root privileges.  The exploit requires that kernel symbol resolution is
> available to unprivileged users, via /proc/kallsyms or similar, as is the case
> on most stock distributions.  It has been tested on both 32-bit and 64-bit x86
> platforms.  While this exploit has been reliable during testing, it is not
> advised to run kernel exploits on production systems, as there is a risk of
> causing system instability and crashing the affected machine.
>
> Versions Affected
> - -----------------
> This vulnerability affects unpatched versions of the Linux kernel, starting
> from 2.6.30, where the RDS protocol was first included.  Installations are only
> vulnerable if the CONFIG_RDS kernel configuration option is set, and if there
> are no restrictions on unprivileged users loading packet family modules, as is
> the case on most stock distributions.
>
> Vendor Response
> - ---------------
> The following timeline details Linux's response to the reported issue.
>
> 2010-10-13    Vulnerability reported to Linux security team
> 2010-10-13    Response, agreement on disclosure date
> 2010-10-19    Fix publicly committed [3]
> 2010-10-19    Coordinated disclosure
>
> Recommendation
> - --------------
> Users should either install updates provided by downstream distributions, or
> apply the committed patch [3] and recompile their kernel.
>
> Common Vulnerabilities and Exposures (CVE) Information
> - ------------------------------------------------------
> The Common Vulnerabilities and Exposures (CVE) project has assigned
> the number CVE-2010-3904 to this issue.  This is a candidates for
> inclusion in the CVE list (http://cve.mitre.org), which standardizes
> names for security problems.
>
> Acknowledgements
> - ----------------
> Thanks to Andrew Morton, Linus Torvalds, Andy Grover, and Eugene Teo for their
> prompt responses and patch.
>
> - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
>
> References:
>
> 1. Linux kernel
>  http://www.linux.org
>
> 2. Reliable Datagram Sockets
>  http://oss.oracle.com/pipermail/rds-devel/2007-November/000228.html
>
> 3. GIT patch
>  http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=799c10559d60f159ab2232203f222f18fa3c4a5f
>
> 4. RDS protocol privilege escalation exploit
>  http://www.vsecurity.com/download/tools/linux-rds-exploit.c
>
> - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
>
> This advisory is distributed for educational purposes only with the sincere
> hope that it will help promote public safety. This advisory comes with
> absolutely NO WARRANTY; not even the implied warranty of merchantability or
> fitness for a particular purpose. Virtual Security Research, LLC nor the author
> accepts any liability for any direct, indirect, or consequential loss or damage
> arising from use of, or reliance on, this information.
>
> See the VSR disclosure policy for more information on our responsible
> disclosure practices: http://www.vsecurity.com/company/disclosure
>
> - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
>     Copyright 2010 Virtual Security Research, LLC.  All rights reserved.
>
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.10 (GNU/Linux)
>
> iEYEARECAAYFAky93O8ACgkQQ1RSUNR+T+gXiwCgkVifvjPHDD+Xf6JrQJ4NisSW
> UKEAn0Rh+XhN3kGUne5sCAGFeGln+qM0
> =cKv/
> -----END PGP SIGNATURE-----
>