Lucene search

K
seebugRootSSV:2247
HistorySep 25, 2007 - 12:00 a.m.

CA ARCserve Backup多个远程溢出及目录遍历漏洞

2007-09-2500:00:00
Root
www.seebug.org
34

0.96 High

EPSS

Percentile

99.3%

BUGTRAQ ID: 24348
CVE(CAN) ID: CVE-2007-3216,CVE-2007-5003,CVE-2007-5004,CVE-2007-5005,CVE-2007-5006

ARCServe Backup for Laptops and Desktops (L&D)是适用于中小业务的ARCServe Backup备份工具版本。

ARCserve L&D在处理RPC接口上的畸形请求数据时存在漏洞,远程攻击者可能利用此漏洞控制服务器或执行目录遍历。

ARCserve L&D使用TCP/1900端口做为RPC接口管理ARCserve L&D服务器,正常的通讯示例如下:

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")

#1 认证用户名缓冲区溢出

rxRPC.dll的认证部分(通过TCP/1900访问)中存在栈溢出漏洞。合法的认证报文示例如下:

0000000013rxrLogin~~administrator

认证时使用wsprintfW将administrator参数拷贝到了栈上0x1AC大小的缓冲区,但没有执行字符串长度检查,如果在第一个认证请求中发送了超长用户名的话就可以触发可利用的溢出。

#2 认证口令缓冲区溢出

rxRPC.dll的认证部分存在栈溢出漏洞。带有口令的合法认证请求示例如下:

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

第一个rxrLogin请求的第二个参数定义了下一个请求中所要发送口令的长度。尽管已经验证了第二个请求中的口令字符串长度为正确的长度,但没有对口令长度执行边界检查。如果在第二个请求中的超长口令指定了超长口令长度的话,就会溢出口令字符串目的地所使用的栈缓冲区。

#3 认证口令整数溢出

rxRPC.dll的认证部分存在栈溢出漏洞。带有无效口令的合法认证请求示例如下:

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

加密的无效口令可能导致可利用的情况:

.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

源缓冲区中的数据包含有大量不可控的数据,但还存在用户名的拷贝,因此如果在原始报文中指定了超长用户名的话就会覆盖异常处理器。

#4 任意文件上传

rxRPC.dll的未经认证通讯存在任意文件上传漏洞。上传请求的文件示例如下:

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

请求的第一个参数指定了rxrReceiveFileFromServer的子命令,数字8表示文件会上传到ARCserve L&D的安装目录;第二个参数指定了文件目标名称;第三个参数指定了目标文件的长度;第五个参数指定了入站文件的CRC32哈希。

但rxRPC.dll没有防范通过子函数8的目录遍历,因此如果文件名中包含有“…\”的话,就可能导致以系统级权限向任意目录写入任意文件。

#5 多个类似的缓冲区溢出

有八个通过TCP/1900端口可访问的函数中存在缓冲区溢出,示例如下:

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

Computer Associates Protection Suites r2
Computer Associates ARCserve Backup (L&D) r4.0
Computer Associates ARCserve Backup (L&D) r11.5
Computer Associates ARCserve Backup (L&D) r11.1 SP2
Computer Associates ARCserve Backup (L&D) r11.1 SP1
Computer Associates ARCserve Backup (L&D) r11.1
Computer Associates ARCserve Backup (L&D) r11.0
Computer Associates Desktop Management Suite 11.2
Computer Associates Desktop Management Suite 11.1
Computer Associates Desktop Management Suite 11.0
临时解决方法:

  • 在主机禁用TCP/1900端口。

厂商补丁:

Computer Associates

目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:

<a href=“http://supportconnectw.ca.com/public/sams/lifeguard/infodocs/caarcservebld-securitynotice.asp” target=“_blank”>http://supportconnectw.ca.com/public/sams/lifeguard/infodocs/caarcservebld-securitynotice.asp</a>