<<< Date Index >>>     <<< Thread Index >>>

EEYE: Multiple Vulnerabilities in CA ARCserve for Laptops & Desktops



Multiple Vulnerabilities in CA ARCserve for Laptops & Desktops

Release Date:
September 20, 2007

Date Reported:
June 5, 2007

Severity:
High (Remote Code Execution)

Vendor:
Computer Associates (CA)

Systems Affected:
CA ARCserve Backup for Laptops and Desktops r11.5
CA ARCserve Backup for Laptops and Desktops r11.1 SP2
CA ARCserve Backup for Laptops and Desktops r11.1 SP1 
CA ARCserve Backup for Laptops and Desktops r11.1 
CA ARCserve Backup for Laptops and Desktops r11.0 
CA ARCserve Backup for Laptops and Desktops r4.0 
CA Desktop Management Suite 11.2 
CA Desktop Management Suite 11.1 
CA Desktop Management Suite 11.0 
CA Protection Suites r2

Overview:
eEye Digital Security has discovered multiple vulnerabilities within CA
ARCserve for Laptops & Desktops (L&D), an enterprise-level backup
software suite designed for workstations.  The vulnerabilities can be
utilized by an attacker to execute arbitrary code on a remote system
anonymously over TCP/1900.


Technical Details:
ARCserve L&D uses TCP/1900 as its "RPC" interface to manage ARCserve L&D
servers.  An example of sample benign traffic follows:

     0000000027rxrLogin~~administrator
---------------------------------------------
    Field 1: 10-digit base10 command length field ("0000000027")
    Field 2: RPC command ("rxrLogin")
    Field 3: Constant Argument Delimiter ("~~")
    Field 4: Argument ("administrator")

Vulnerability #1: Authentication Username Overflow
A stack-based buffer overflow exists within the authentication portion
of rxRPC.dll which is accessible via TCP/1900.  A sample legitimate
authentication packet resembles the following:

    0000000013rxrLogin~~administrator

The single argument ("administrator") is copied into a buffer size of
0x1AC on the stack using wsprintfW, however no string length checks are
performed.  By sending an overly long username as part of the first
authentication request, an exploitable condition is reached.


Vulnerability 2: Authentication Password Overflow
Another stack-based buffer overflow exists within the authentication
portion of rxRPC.dll which is accessible via TCP/1900.  A sample
legitimate authentication request with a password resembles the
following:

    1: 0000000030rxrLogin~~administrator~~0000200
    2: MyPasswordIs1234

The second argument of the first rxrLogin request defines the length of
the password that will be sent in the following request.  Although this
does verify that the length of the password string in the second request
is the correct length, there is no bounds checking on the potential
length of a password.  If a long password length is specified, along
with a long password delivered in the second request, the long password
will overflow a stack-based buffer used for the destination of the
password string, causing an exploitable condition.


Vulnerability #3: Authentication Password Integer Overflow
Another stack-based overflow exists within the authentication portion of
rxRPC.dll which is accessible via TCP/1900.  A sample legitimate
authentication request with a useless password resembles the following:

    1: 0000000030rxrLogin~~administrator~~18
    2: 000000000000000000

The encrypted password is virtually useless as a password.  However,
surprisingly, it does offer access to an exploitable condition:

    .text: 00231F24        mov    cl, [esi+8]
    .text: 00231F27        and    ecx, 0x0F
    .text: 00231F2A        add    esp, 8
    .text: 00231F2D        dec    ecx    ; XXXX Integer Overflow If ECX
= 0
    .text: 00231F2E        mov    [esp+0x7C+var_6C], eax
    .text: 00231F32        mov    dwPasswordCopyLength, ecx
    .text: 00231F38        mov    eax, ecx
    .text: 00231F3A        lea    esi, [esp+0x7C+var_6C]
    .text: 00231F3E        mov    edi, ebx
    .text: 00231F40        shr    ecx, 2
    .text: 00231F43        rep movs     ; XXXX EXCEPTION: HITS PAGE
BOUNDARY XXXX

The data in the source buffer contains a lot of uncontrollable data.
However, a copy of the username also exists within the source buffer, so
this can be utilized to overwrite the exception handler if a long
username is specified in the original packet.


Vulnerability #4: Arbitrary File Upload
An arbitrary file upload vulnerability exists within unauthenticated
communication with rxRPC.dll, accessible via TCP/1900.  A sample file
upload request resembles the following:

    1:
0000000056rxrReceiveFileFromServer~~8~~test1234.txt~~4~~3675727989
    2: 0000000031~~<file_contents>

The first parameter of the request specifies the sub-command of
rxrReceiveFileFromServer.  The number "8" specifies that a file will be
uploaded to the ARCserve L&D installation directory.  The second
argument specifies the file destination name.  The third argument
specifies the length of the destination file.  The fifth argument
specifies the CRC32 hash of the incoming file.

rxRPC.dll however does not protect against directory traversals via
sub-function "8".  So, by using "..\" within the filename, an arbitrary
file can be written to an arbitrary directory using SYSTEM-level
privileges.  To foster immediate exploitability, ARCserve L&D's
"security.dll" can be overwritten using this "functionality", and can
then be immediately loaded into memory by calling another rxrLogin
request, which would now inject the potentially-malicious "security.dll"
into the ARCserve L&D process.


Vulnerability #5: 8 Similar Buffer Overflows
Buffer overflow vulnerabilities exist within 8 other functions
accessible remotely via TCP/1900.  For brevity's sake, exploitable
samples follow:

    rxsUseLicenseIni~~<overflow>
    rxsLicGetSiteId~~<overflow>
    rxsGetLogFileNames~~<overflow>~~40000
    rxsGetBackupLog~~aa~~<overflow>~~40000
    rxsBackupComplete~~aa~~aa~~aa~~<overflow>~~aa
    rxsSetDataGrowthScheduleAndFilter~~aa~~aa~~aa~~aa~~<overflow>
    rxsSetDefaultConfigName~~<overflow>
 
rxrSetMessageLogSettings~~65~~45~~79~~65~~<overflow>~~52~65~73~65~61~72~
63~68~21


The only form of mitigation for these vulnerabilities is to disable
TCP/1900 at the host-level, or to uninstall ARCserve L&D server
installations.


Protection:
Blink - Unified Client Security has proactively protected from these
vulnerabilities since their discovery.
Retina - Network Security Scanner has been updated to identify these
vulnerabilities.

Vendor Status:
Computer Associates released patches for these vulnerabilities.  These
patches are available here:
http://supportconnectw.ca.com/public/sams/lifeguard/infodocs/caarcserveb
ld-securitynotice.asp.

Credit:
Matt Oh, Andre Derek Protas, Yuji Ukai

Related Links:
Preview - Advanced Security Intelligence - http://www.eeye.com/preview
Retina - Network Security Scanner - Free Trial:
http://www.eeye.com/html/products/retina/download/index.html
Blink - Unified Client Security Personal - Free For Home Use:
http://www.eeye.com/html/products/blink/personal/download/index.html
Blink - Unified Client Security Professional - Free Trial:
http://www.eeye.com/html/products/blink/download/index.html

Greetings:
Matt: Bugtruck subscribers
Andre: GLin, Maif, SuperSoederBros, TheClaw, TheBear, DragonKick, Hugo's
Drawers, Moti, Rolf, and the many eEye Ninjas Past ^ Present Keeping It
Real
Yuji: fourteenfourty.jp

Copyright (c) 1998-2007 eEye Digital Security
Permission is hereby granted for the redistribution of this alert
electronically.  It is not to be edited in any way without express
consent of eEye.  If you wish to reprint the whole or any part of this
alert in any other medium excluding electronic medium, please email
alert@xxxxxxxx for permission.

Disclaimer
The information within this paper may change without notice.  Use of
this information constitutes acceptance for use in an AS IS condition.
There are no warranties, implied or express, with regard to this
information.  In no event shall the author be liable for any direct or
indirect damages whatsoever arising out of or in connection with the use
or spread of this information.  Any use of this information is at the
user's own risk.