FreeBSD Daily Topics

2008年11月27日Wine 1.1.8/1.19 “Invalid address”問題修正パッチ、Portsインストール高速化手法、ATAレベルで実現するソフトウェアRAID、FreeBSDに起動後5分間の脆弱性

heads-up

Wine

ports - Wine 1.1.8および1.1.9で特定のアプリケーション、とくにはじめからWineに含まれていない外部アプリケーションを実行しようとした場合に"Invalid address"と表示されアプリケーションが実行できない問題ですが、ports/128926の報告がclosedから再びopenへ差し戻しとなりました。

reopenされたメッセージにもありますが、wine-1.1.8 regression -- wine: could not load L"...": Invalid addressで紹介されているパッチを使うことで"Invalid address"に対処することができます。

リスト /usr/ports/emulators/wine/files/patch-dlls_ntdll_virtual.cとしてパッチを作成
Index: dlls/ntdll/virtual.c
@@ -1250,8 +1254,13 @@
     }
 
     /* try to find space in a reserved area for the virtual heap */
-    if (!wine_mmap_enum_reserved_areas( alloc_virtual_heap, &heap_base, 1 ))
+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
+        heap_base = wine_anon_mmap( address_space_limit -  10 * VIRTUAL_HEAP_SIZE,
+				VIRTUAL_HEAP_SIZE, PROT_READ|PROT_WRITE, 0 );
+#else
+    if (!wine_mmap_enum_reserved_areas( alloc_virtual_heap, &heap_base, 0 ))
         heap_base = wine_anon_mmap( NULL, VIRTUAL_HEAP_SIZE, PROT_READ|PROT_WRITE, 0 );
+#endif
 
     assert( heap_base != (void *)-1 );
     virtual_heap = RtlCreateHeap( HEAP_NO_SERIALIZE, heap_base, VIRTUAL_HEAP_SIZE,

たとえば、上のようにパッチファイルを/usr/ports/emulators/wine/files/patch-dlls_ntdll_virtual.cとして作成しておいて、make install cleanでパッチを取り込んだWineの構築が可能です。Wineでアプリケーションが実行できなくなって困っている場合、まず上記パッチを試してみてください。

それでもダメな場合、1.1.7へ差し戻すことで対処できます。1.1.7のportはcvsで直接指定して取得するか、CVSweb: ports/emulators/wine/から取得してみてください。

links

Speed up ports Install

Speed up installing from ports (howto)においてfastest_sites(1)(ports-mgmt/fastest_sites)を使ってPorts Distfilesのダウンロードを高速化する方法が紹介されています。fastest_sites(1) が出力するデータをそのままファイルに出力して /etc/make.confから読み込ませる方法です。fastest_sites(1) が出力する内容はそのまま make.confで使える形式になっているため同方法で対処できます。

Software RAID in FreeBSD

Software RAID in FreeBSDにおいてATAデバイスを使ってソフトウェアRAIDを構築する方法が紹介されています。atacontrol(8)でRAID0 (ストライピング)、RAID1(ミラーリング⁠⁠、RAID0+1、SPAN、JBODを指定してシステムを構築することができます。GEOMではなくATAレベルで構築したい場合にはこの方法を検討してみてください。

GEOMを使ったRAIDの構築やそのほか高度な機能の実現は『SoftwareDesign』2008年12月号および2009年1月号(2008年12月18日発売)に記事がまとめられていますので、そちらをご覧ください。

security-advisory

FreeBSD-SA-08.11.arc4random

arc4乱数生成器arc4random(9)に推測可能なシーケンス脆弱性があることがわかりました。サポートされているすべてのFreeBSDEバージョンが影響を受けます。最新のセキュリティブランチに更新するか、パッチを適用してカーネルの再構築およびシステムの再起動を実施してください。

arc4random(9)はRC4の鍵ストリーム生成器をベースとした汎用目的の乱数生成器でFreeBSDカーネルにおいて暗号強度が要求されるさまざまな場面で採用されています。arc4random(9)は定期的にFreeBSDカーネルYarrow乱数生成器の値を種としてリシードを実施しています。Yarrow乱数生成器はハードウェア割り込みといったさまざまな状態からエントリピーを取得しています。

今回発見された脆弱性は、arc4random(9)乱数生成器が初期化される段階で不適切なエントロピーが使われる可能性があるというもので、before arc4random(9)がリシードを実施するまでの5分間に渡って不適切なエントロピーをベースとしたarc4random(9)が動作する可能性があります。GEOM ELIやGEOM shsec、起動後のシステムプロセス、802.11ネットワークスタック、TCP/IPスタック、kernel RPCなどarc4random(9)を使っているさまざまなサブシステムが起動後5分間の間、同ランダム値の強度が低いことによりセキュリティ的に脆弱な状態になる可能性があります。

このため可能な限り迅速に最新のセキュリティブランチへのアップデートを実施してください。またシステム起動後5分間以内にGEOM shsecプロバイダを作成したことがあるのであれば、最新のセキュリティアップグレードを実施したあとで再び作成しなおしてください。

おすすめ記事

記事・ニュース一覧