2009年12月04日 16:00 [Edit]

#FreeBSD - local r00t zeroday の対策

freebsd-logo

全くその通りなのですが...

Geekなぺーじ : うぉ。。。FreeBSDゼロデイ。。。
こういうのがあるから怖いですね。。。 exploit実証コードがセキュリティアップデートが普及する前に配布されてしまったので、ご注意下さい。 対処はお早めに。。。

具体的な対策が書いていないので対策方法を。


freebsd-update

RELEASEをそのまま使っている人は、こちらを。

の仮想マシン上のFreeBSDもこれで直ります。

# freebsd-update fetch
Looking up update.FreeBSD.org mirrors... 3 mirrors found.
Fetching public key from update4.FreeBSD.org... done.
Fetching metadata signature for 8.0-RELEASE from update4.FreeBSD.org... done.
Fetching metadata index... done.
Fetching 2 metadata files... done.
Inspecting system... done.
Preparing to download files... done.
Fetching 6 patches.... done.
Applying patches... done.
Fetching 2 files... done.

The following files will be updated as part of updating to 8.0-RELEASE-p1:
/etc/mtree/BSD.var.dist
/libexec/ld-elf.so.1
/usr/lib/libssl.a
/usr/lib/libssl.so.6
/usr/sbin/freebsd-update
/usr/src/etc/mtree/BSD.var.dist
/usr/src/libexec/rtld-elf/rtld.c
/usr/src/sys/conf/newvers.sh
/usr/src/usr.sbin/freebsd-update/freebsd-update.sh
/var/db/freebsd-update
/var/db/mergemaster.mtree
# freebsd-update install
Installing updates... done.

STABLE

継続的に使っている人はこちらでしょう。私の場合、一番古いインスタンスではFreeBSD-2.xから続いている由緒正しい方法です。

RELEASEをSTABLEにした人は、日本時間の12月02日以降であれば直っているはずです。

% ls -l /usr/src/libexec/rtld-elf/rtld.c
27 -rw-r--r--  1 root  wheel  96244 Dec  1 11:59 /usr/src/libexec/rtld-elf/rtld.c

ついでなので、STABLEを入手してインストールする方法も以下に。詳しくは

をご覧下さい。

  1. ソースを入手
    csup -h cvsup.jp.freebsd.org /usr/share/examples/cvsup
  2. buildworld
    chdir /usr/src/ \
      && nohup /usr/bin/time -l make -j8 -DNOPROFILE=true buildworld \
      |& tee /var/log/buildworld.log
    
  3. buildkernel
    chdir /usr/src/ \
      && nohup /usr/bin/time -l make -j8 -DNOPROFILE=true KERNCONF=GENERIC buildkernel \
      |& tee /var/log/buildkernel.log
    
  4. installkernel
    chdir /usr/src/ \
      && nohup /usr/bin/time -l make -DNOPROFILE=true KERNCONF=GENERIC installkernel \
      |& tee /var/log/installkernel.log
    
  5. installworld
    chdir /usr/src/ \
      && nohup /usr/bin/time -l make -j8 -DNOPROFILE=true installworld \
      |& tee /var/log/installworld.log
    
  6. 再起動
    /sbin/shutdown -r now
  7. mergemasterで/etc以下を修正
  8. mergemaster

確認方法

うまく直っていれば、

にあるexploit codeはALEX-ALEXまで行かず、

/libexec/ld-elf.so.1: environment corrupt; missing value for 
/libexec/ld-elf.so.1: environment corrupt; aborting

で止まります。

最後に

Safe Hex!

Dan the FreeBSD Advocate


この記事へのトラックバックURL

この記事へのコメント
> 0. ソースを入手
> csup -h cvsup.jp.freebsd.org /usr/share/examples/cvsup


csup -h cvsup.jp.freebsd.org /usr/share/examples/cvsup/stable-supfile

ではないでしょうか。
Posted by ef at 2009年12月07日 12:02
いつもソフトウエアについて、親切に教授してくださってありがとうございます。

では、また来月。

来年になったら、継続的にコメント入れさせてもらうと思います。

では、よいお年を。
Posted by enneagram at 2009年12月06日 10:44