OpenSSL asn1_d2i_read_bio 缓冲区溢出攻击

受影响的版本包括 0.9.8v 之前的(0.9.8u,0.9.8t…0.9.8k..0.9.2b…0.9.1c),1.0.0 之前的以及 1.0.1 之前的。

Ubuntu 10.04 LTS(0.9.8k 25 Mar 2009),CentOS 5.5/5.6(0.9.8e-fips-rhel5 01 Jul 2008) 均受此影响。

Ubuntu 打补丁的方式如下:
$ wget https://launchpad.net/ubuntu/+archive/primary/+files/openssl_0.9.8k.orig.tar.gz
$ wget https://launchpad.net/ubuntu/+archive/primary/+files/openssl_0.9.8k-7ubuntu8.10.diff.gz
$ wget https://launchpad.net/ubuntu/+archive/primary/+files/openssl_0.9.8k-7ubuntu8.10.dsc
$ tar zxvf openssl_0.9.8k.orig.tar.gz
$ gzip -d openssl_0.9.8k-7ubuntu8.10.diff.gz
$ cd openssl-0.9.8k
$ patch -1 < ../openssl_0.9.8k-7ubuntu8.10.diff

或者直接通过 dsc 文件来完成补丁:
$ sudo apt-get install dpkg-dev
$ dpkg-source -x openssl_0.9.8k-7ubuntu8.10.dsc

编译安装:
$ ./config
$ make
$ sudo make install

这样会将新的 openssl 的文件安装至 /usr/local/ssl/ 下面:
$ tree -L 1 /usr/local/ssl/
/usr/local/ssl/
├── bin
├── certs
├── include
├── lib
├── man
├── misc
├── openssl.cnf
└── private

7 directories, 1 file

编译的时候可以指定安装的目录,下面这个会覆盖系统上的:
$ ./config --prefix=/usr

当然,最简单的方式还是通过包管理器来升级:
$ sudo apt-get update
$ sudo apt-get -y install openssl libssl0.9.8