CA BrightStor ARCserve Backup Server Arbitrary Pointer Dereference Release Date: October 11, 2007 Date Reported: June 18, 2007 Severity: High (Remote Code Execution) Vendor: Computer Associates (CA) Systems Affected: BrightStor ARCserve Backup 11.5 BrightStor ARCserve Backup 11.1 BrightStor ARCserve Backup 11.0 BrightStor ARCserve Backup 10.5 BrightStor ARCserve Backup 9.01 Overview: eEye Digital Security has discovered a remote vulnerability in CA BrightStor ARCserve Backup Server that allows an attacker to execute arbitrary code as SYSTEM without any user interaction. The exploit is extremely reliable and can be successfully delivered either across the internet or within local networks via a random TCP port that is disclosed by the BrightStor portmapper service on TCP/111. Technical Details: A remote vulnerability lies within Queue.dll (Version 11.5.4402.15 and prior) when handling a malformed ONRPC protocol request sent to CA BrightStor's ARCserve Backup message queuing service, LQserver.exe. BrightStor uses a protocol similar to a simplified version of RPC called ONCRPC (Open Network Computing Remote Procedure Calls) and is described in the following RFCs: 1831, 1833, and 1832. This vulnerability is only achieved by calling operation 0x76 (Data Queue Request) under the process id of 0x0006097d (LQserver.exe's unique Proc ID). After initiating this procedure, LQServer.exe then calls the vulnerable DLL file, Queue.dll. This procedure inadvertently processes user supplied data and then references that data as variables without any form of sanitation of verification. This is demonstrated below: 100161B0 MOV EDX,DWORD PTR DS:[ECX+4] ; Move Arbitrary Pointer #2 into EDX 100161B3 PUSH EDX ; Push Arbitrary Pointer #2 onto the Stack 100161B4 MOV EAX,DWORD PTR SS:[EBP+8] ; Move (0x0113F8A8 the address to Arbitrary ; Pointer #1) into EAX 100161B7 MOV ECX,DWORD PTR DS:[EAX] ; Move Arbitrary Pointer #1 into ECX 100161B9 PUSH ECX ; Push Arbitrary Pointer #1 onto the Stack 100161BA CALL QUEUE.10012816 ; CALL Vulnerable DLL ... 1001281C CMP DWORD PTR SS:[EBP+8],0 ; EBP + 8 points to Arbitrary Pointer #1 - This makes ; sure our pointer isn't NULL. 10012820 JNZ SHORT QUEUE.10012829 ; Since our pointer isn't NULL we jump 10012829 MOV EAX,DWORD PTR SS:[EBP+8] ; Load Arbitrary Pointer #1 into EAX 1001282C MOV DWORD PTR SS:[EBP-4],EAX ; Write Arbitrary Pointer into EBP-4 (0x00D39618) 1001282F CMP DWORD PTR DS:[10037884],0 ; This checks for an error message field - NULL ; signifies 'The operation completed successfully' 10012836 JE SHORT QUEUE.10012870 ; Jump is taken 10012870 MOV EAX,DWORD PTR SS:[EBP+C] ; Move Arbitrary Pointer #2 into EAX 10012873 PUSH EAX ; Push Arbitrary Pointer #2 onto the stack 10012874 PUSH QUEUE.10037884 ; Push NULL 10012879 MOV ECX,DWORD PTR SS:[EBP-4] ; Move Arbitrary Pointer #1 into ECX 1001287C MOV EDX,DWORD PTR DS:[ECX] ; Move Arbitrary Pointer #1 into EDX 1001287E MOV ECX,DWORD PTR SS:[EBP-4] ; Move Arbitrary Pointer #1 into ECX 10012881 CALL DWORD PTR DS:[EDX] ; Call Arbitrary Pointer #1 At this point Arbitrary Pointer #1 is referenced and called by Queue.dll, which can then in turn can reference Arbitrary Pointer #2. After referencing Arbitrary Pointer #2, an attacker can completely control code execution and redirect Queue.dll to execute to their own payload. After exploitation, LQserver.exe crashes and must be manually restarted by the "CA Domain Server" service. 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/storage/infodocs/basb-secnotice.asp Credit: Greg Linares Greetings: Big thanks to Dre and his underappreciated development software, The Super Soeder Bros, Master Chief Maiffret, Silva, Casey, Will, H5N1, Apocalypse Survivor Normalboy, Laughing Man, Jerome Athias, Roland and Waldorf Music Gear, and to all the Giraffes In Wheelchairs. Think you have what it takes to be an eEye Engineer? eEye Digital Security is always looking for good engineers to add to its R&D team. If you have a passion for real-world security research and the drive to create enterprise class solutions, check out our open positions: http://www.eeye.com/html/company/careers/index.html. However, if you prefer to break software rather than make it, Research is always taking resumes at skunkworks@eeye.com. 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 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@eEye.com 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.