Win32 API 'shatter' vulnerability found in VNC-based products

From: EXT-Bellers, Chris (chris.bellersat_private)
Date: Tue Aug 20 2002 - 19:55:40 PDT

  • Next message: Bromirski, Lukasz: "LG Electronics LG3001f router"

    Win32 API 'shatter' vulnerability found in VNC-based products
    
    CONFIRMED PROGRAMS:
    
    VNC v3.3.3R9
    TightVNC v1.2.5
    TridiaVNC 1.5.4
    
    SUSPECTED PROGRAMS:
    TridiaVNC Pro
    All other VNC-based remote console products
    
    
    EXPLOIT TYPE:
    'Shatter'-type win32-based local privilege escalation
    (See: http://security.tombom.co.uk/shatter.html for details)
    
    
    SCOPE:
    
    Any Win32 system with VNC-based software installed, and interactive logon
    access. While this is technically a local exploit, it can be done through
    a VNC session (In my tests the VNC process died after spawning
    the shellcode, which would certainly end the VNC session (But not the 
    shellcode, which stayed functional)).
    
    
    SUMMARY DESCRIPTION:
    
    After reading up on the 'shatter' class of Win32 API exploits discovered
    by Chris Paget (aka Foon), I decided to see what other programs
    immediately leapt out at me as being potentially vulnerable. Staring out of
    my system tray was my beloved VNC logo.
    
    Applying Mr. Paget's  exploit as described in the white paper resulted in
    a LocalSystem command shell on both NT 4 and Win2K systems (with current
    Service Packs). I lacked an XP box for the purposes of this demonstration,
    but I see no reason that XP would be immune.
    
    Further testing revealed that the VNC-derivative products TightVNC and
    TridiaVNC are also vulnerable via the same process.
    I suspect that all currently available VNC-derived code is vulnerable.
    
    
    EXPLOIT REQUIREMENTS::
    
    1. Windows machine A has VNC service installed (for remote access, remote
    helpdesk, etc etc)
    2. Hostile user has some sort of account allowing local access, such as
    Guest or normal user account. In my demonstration, I used both
    unprivileged local and Active Directory accounts.
    
    
    TECHNICAL DETAILS:
    
    Please consult Chris Paget's white paper concerning the Shatter class of 
    Win32 API vulnerabilities at http://security.tombom.co.uk/shatter.html 
    for a much more thorough treatise on the perils of interactive services
    being owned by LocalSystem than I could ever hope to write.
    The only pertinent info to be added is that the "Add new clients" dialogue
    box was used to send the shellcode. To demonstrate this oneself, simply
    s/NAV/VNC in the Paget document.
    
    
    VENDOR STATUS:
    
    Multiple VNC developer lists were consulted recently. Every
    response received to date has been "VNC is not a good tool to use when
    local access is granted to users".
    
    This seems a fine reply for servers, where only trusted users are given
    physical access or  interactive logons, but  VNC is used in many 
    workstation environments for remote helpdesk applications.
    
    Tridia repeatedly told me to buy TridiaVNC Pro which, while admirably 
    supporting SSL/TLS, does little to address this problem. If the user 
    can log on interactively, the game is over.
    
    As of the time of this alert, I had not been told any efforts were being
    made to separate privileged service code from user-accessible system tray
    code by any developers.
    
    
    EXPLOIT STATUS:
    
    Unpatched, unresolved, and most likely in the wild as soon as the kids
    finish reading.
    
    
    CREDIT:
    
    Chris Paget, for giving win32 developers their very 
    own sprintf() to worry about.
    
    Keith Morgan from Terradon Communications, for keeping
    me from writing a bad vulnerability report.
    
    
    
    
    
    Chris Bellers 314.233.7181
    OSA System Administrator
    Boeing, Phantom Works
    



    This archive was generated by hypermail 2b30 : Wed Aug 21 2002 - 08:17:43 PDT