ASUS Eee PC主板BIOS SMM权限提升漏洞

2009-08-11T00:00:00
ID SSV:12027
Type seebug
Reporter Root
Modified 2009-08-11T00:00:00

Description

BUGTRAQ ID: 35995

Eee PC是华硕推出的系列小型笔记本电脑。

华硕主板的BIOS固件包含有带有多个SMI处理器的特殊代码,在引导的时候这些处理器以系统管理模式运行并加载到受保护的内存部分(SMRAM)。

以下是其中的一个SMI处理器$SMISS处理器代码的反汇编:

0003F073: 50 push ax 0003F074: B4A1 mov ah,0A1 0003F076: 9A197D00F0 call 0F000:07D19 0003F07B: 2404 and al,004 0003F07D: 7414 je 00003F093 0003F07F: B434 mov ah,034 0003F081: 9A708000F0 call 0F000:08070 0003F086: 2410 and al,010 0003F088: 7409 je 00003F093 0003F08A: B430 mov ah,030 ** 0003F08C: 9A708000F0 call 0F000:08070 0003F091: 2410 and al,010 0003F093: 3C01 cmp al,001 0003F095: 58 pop ax 0003F096: CB retf

0003F097: 0E push cs 0003F098: E8D8FF call 00003F073 0003F09B: B80100 mov ax,00001 0003F09E: 0F82C500 jb 00003F167 0003F0A2: B81034 mov ax,03410 0003F0A5: 9A7B8000F0 call 0F000:0807B 0003F0AA: B81030 mov ax,03010 0003F0AD: 9AAF8000F0 call 0F000:080AF 0003F0B2: 80265601FC and b,[0156],0FC 0003F0B7: 33DB xor bx,bx 0003F0B9: B88083 mov ax,08380 0003F0BC: 9A89A100F0 call 0F000:0A189 0003F0C1: 9AE0BD00F0 call 0F000:0BDE0 0003F0C6: 3C04 cmp al,004 0003F0C8: 750B jne 00003F0D5 0003F0CA: BB5400 mov bx,00054 0003F0CD: B88083 mov ax,08380 0003F0D0: 9A89A100F0 call 0F000:0A189 0003F0D5: 9AD0BD00F0 call 0F000:0BDD0 0003F0DA: 7505 jne 00003F0E1 0003F0DC: 800E560101 or b,[0156],001 0003F0E1: E8260E call 00003FF0A 0003F0E4: E82EFE call 00003EF15 0003F0E7: E8A200 call 00003F18C 0003F0EA: 9AE0BD00F0 call 0F000:0BDE0 0003F0EF: BEFFFF mov si,0FFFF 0003F0F2: 3C01 cmp al,001 0003F0F4: 740B je 00003F101 0003F0F6: B8B315 mov ax,015B3 0003F0F9: 9A7DA100F0 call 0F000:0A17D 0003F0FE: 7501 jne 00003F101 0003F100: 46 inc si 0003F101: B9E800 mov cx,000E8 0003F104: BB0800 mov bx,00008 0003F107: E8ED00 call 00003F1F7 0003F10A: B9E900 mov cx,000E9 0003F10D: BB1000 mov bx,00010 0003F110: E8E400 call 00003F1F7 0003F113: B9EA00 mov cx,000EA 0003F116: BB0010 mov bx,01000 0003F119: E8DB00 call 00003F1F7 0003F11C: B9EB00 mov cx,000EB 0003F11F: BB0040 mov bx,04000 0003F122: E8D200 call 00003F1F7 0003F125: 9A1C0161AA call 0AA61:0011C 0003F12A: 9ACF0600F0 call 0F000:006CF 0003F12F: 9AE0BD00F0 call 0F000:0BDE0 0003F134: BBE282 mov bx,082E2 0003F137: 48 dec ax 0003F138: D0E0 shl al,1 0003F13A: 02D8 add bl,al 0003F13C: 80D700 adc bh,000 ** 0003F13F: 9AD0BD00F0 call 0F000:0BDD0 0003F144: 2EFF17 call w,cs:[bx] 0003F147: A05601 mov al,[0156] 0003F14A: 0C02 or al,002 0003F14C: E6B3 out 0B3,al 0003F14E: EB00 jmps 00003F150 0003F150: E8C100 call 00003F214 0003F150: E8C100 call 00003F214 0003F153: A1C600 mov ax,[00C6] 0003F156: 8B16CE00 mov dx,[00CE] 0003F15A: EF out dx,ax 0003F15B: B96400 mov cx,00064 0003F15E: E6ED out 0ED,al 0003F160: EB00 jmps 00003F162 0003F162: E2FA loop 00003F15E 0003F164: B80000 mov ax,00000 0003F167: CB retf

反汇编中包含有一些对0F000代码段的调用(用**标记出的指令部分)。0F000代码段翻译到物理内存地址F0000h - 100000h,这个地址范围包含有POST等BIOS代码和BIOS中断。由于代码段没有得到SMM内存保护,任何拥有对物理内存访问权限的进程都可以替换这个地址范围的内容。

例如,上述SMI处理器的线性地址0F000:08070被翻译到物理地址F8070h,在引导期间使用800h+offset端口在电源管理I/O空间读取寄存器的BIOS代码加载了这个地址:

00008387: BA0008 mov dx,00800 0000838A: 02D4 add dl,ah 0000838C: 80D600 adc dh,000 0000838F: C3 retn 00008390: 52 push dx 00008391: E8F3FF call 000008387 00008394: EC in al,dx 00008395: 5A pop dx 00008396: C3 retn

; These instructions are loaded to 0F000:08070 address ; (F8070h in physical memory) by the BIOS from ROM chip 00008397: E8F6FF call 000008390 0000839A: CB retf

可以使用到恶意代码的跳转替换这些BIOS指令,因此SMI处理器会以SMM权限执行代码。 0 Asus EeePC Asus P5* Asus B50A Asus P6T 厂商补丁:

Asus

目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:

http://www.asus.com.tw