Ubuntu Weekly Topics

2019年6月14日号 Ubuntuにおける「バージョンによる脆弱性判定」の正しいアプローチ,WSL2のプレビュー開始

この記事を読むのに必要な時間:およそ 4 分

Ubuntuにおける「バージョンによる脆弱性判定」の正しいアプローチ

ubuntu-serverメーリングリストにおいて,少しだけ興味深いやりとりが投稿されています。

投稿者の困っている状況を要約すると,⁠とあるUbuntu環境でセキュリティスキャナを実行したところ,すでにUbuntuでは対処済みになっている特定の脆弱性が存在するものと指摘された。おそらくパッケージのバージョン番号文字列だけを単純にチェックし,upstreamで『解決された』とされるバージョン未満であることが原因だと思うが,コンプライアンス上,カウンターになる十分な証拠が必要になっている」というものです。これは非常によくあるシチュエーションで,原因はセキュリティスキャナが壊滅的なクオリティしかないぽんこつであるためです。

セキュリティスキャナの多くは,⁠すでにインストールされているソフトウェア」の中から,脆弱性の存在するバージョンを検知する機能を備えています。Linux環境ではパッケージマネジメントソフトウェアの機能を利用して,インストール済みのソフトウェアパッケージを一覧し,スキャナ側が保持する一定の判断基準に基づいて,⁠このパッケージには~~という脆弱性がある」という指摘(findings)レポートを構成します。

この一方,Ubuntuを含めた多くのLinuxディストリビューションでは,⁠リリース」した後には各種ソフトウェアのバージョンは大きくは更新せず,脆弱性や深刻なバグについてのみ,upstreamの更新からバックポートして適用する,というモデルを取ります。言い換えると,ディストリビューションに含まれる「あるソフトウェアのバージョン」はリリース以降は更新されず,パッケージバージョンだけが更新される状態になります。たとえば,upstreamでは「2.1.6」というバージョン以降で脆弱性が解決している状況であっても,Ubuntuでは「2.1.0-ubuntu5」というバージョンであれば解決済み,といったシチュエーションです。

非常に残念なことですが,世に存在する一定数のセキュリティスキャナは,こうした事情を考慮しません。適切に実装されたスキャナであればディストリビューションごとに判断用のデータベースを保持し,Ubuntu xx.yyであればこのバージョンであればsafeという判定を行うべきところで,問題のあるセキュリティスキャナは,upstreamのバージョン情報だけをもとに「このバージョンは脆弱である」という判断を行います。先の例であれば「2.1.6以降」でない限り脆弱であるという判定を行うことになります。⁠通常,Linuxディストリビューションではセキュリティパッチはバックポートして適用されているため,upstreamソフトウェアのバージョン番号で何かを判定しようとしてはいけない」ということは,Linuxディストリビューションのポリシーを知っている人間にとっては『家を出るときは服を着ていなくてはいけません』というレベルの常識なのですが,なぜかこれを知らずに(もしくは一時的な金銭的衝動に駆られて)⁠upstreamソフトウェアの対応バージョン情報だけを根拠に脅威を指摘するセキュリティスキャナ』が登場してしまうためです注1)。

注1
こうした,Linuxディストリビューションごとの更新を考慮していない,こけおどし型脅威検出システムと呼ぶべき『セキュリティスキャナ』を利用することは,実行することそのものがむしろ危険です。偽セキュリティスキャナである可能性を疑ったほうが良いでしょう。

また,⁠スキャナが報告してきた内容についてそれぞれ慎重な検討を行うこと」といったコンプライアンス条項が存在することも珍しくありません。⁠セキュリティスキャナ」を名乗るソフトウェアにこのような深刻な常識の欠如があることを想定していないためです注2⁠。

注2
このような実装のセキュリティスキャナを実務で利用するべきではありませんが,ツールの選定ミスや不十分な理解によって利用されてしまうことはありえます。

こうした条件が組み合わさった結果,この投稿者のような「あきらかに間違っている結果であることは理解しているものの,ツールが出した結果がfalse positive(偽陽性)であることを様々な方法で証明せざるをえないエンジニア」という壊滅的な構図が発生することになります。

この状況を受けてのRobie Basakのまとめが,こうした状況を解決するステートメントとして利用できます。いわく,Security Teamのwikiには外部のセキュリティベンダがバージョンスキャンを行った場合,適切なバージョン判定を行わずにfalse positiveを発生させる場合がある。あるパッケージに特定の脆弱性が存在するかの判定には,Ubuntu CVE Trackerを参照するのが妥当である。そして,Ubuntu CVE Trackerには,その問題にしているCVE-2016-5387はバージョン2.4.18-2ubuntu3.1で解決しているとあり,このデータベースにはUbuntu Security Teamのオフィシャルな見解が反映されていると信じている。また,対応済みであるということはusn-3038-1でオフィシャルに宣言されている⁠⁠。

ということで,Ubuntu的には「いつもの」注3というレベルの話ではあるのですが,深刻な問題を抱えたコンサルタントなりツールなりにお引き取り願うときに使える情報が出てきた,と覚えておくと良さそうです注4⁠。

注3
理由:これまでにも散々同じような展開がおきてきたから。
注4
こうしたツールの利用結果を,⁠必ず改善するべき指摘事項」としてしまうような(自称)セキュリティコンサルタントや(自称)セキュリティスキャナを発見してしまったような不幸なケースにおいてもっとも有効な行動は,その人物なりツールなりをシステム監査を含めたあらゆる場面から注意深く排除することです。そのような(自称)コンサルタントなり(自称)セキュリティスキャナは,虫垂炎の手術において心臓と盲腸の区別がつかない外科医が執刀するのに匹敵するリスクをその環境にもたらしえます。

その他のニュース

今週のセキュリティアップデート

usn-4002-1:Doxygenのセキュリティアップデート
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2019-June/004932.html
  • Ubuntu 16.04 LTS用のアップデータがリリースされています。CVE-2016-10245を修正します。
  • 悪意ある加工を施したクエリを実行させることで,本来秘匿されるべき情報の漏出や任意のコードの実行が可能でした。
  • 対処方法:通常の場合,アップデータを適用することで問題を解決できます。
usn-4003-1:Qtのセキュリティアップデート
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2019-June/004933.html
  • Ubuntu 18.10・18.04 LTS・16.04 LTS用のアップデータがリリースされています。CVE-2018-15518, CVE-2018-19870, CVE-2018-19873を修正します。
  • 悪意ある加工を施したXMLファイル・GIFイメージ・BMPイメージを処理させることで,メモリ破壊を伴うクラッシュを誘発することが可能でした。
  • 対処方法:アップデータを適用の上,セッションを再起動(一度ログアウトして再度ログイン)してください。
usn-4004-1, usn-4004-2:Berkeley DBのセキュリティアップデート
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2019-June/004934.html
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2019-June/004935.html
  • Ubuntu 19.04・18.10・18.04 LTS・16.04 LTS・14.04 ESM用のアップデータがリリースされています。CVE-2019-8457を修正します。
  • 悪意ある入力を行うことで,本来露出するべきでない情報にアクセスすることができました。
  • 対処方法:通常の場合,アップデータを適用することで問題を解決できます。
usn-4005-1:Linux kernelのセキュリティアップデート
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2019-June/004936.html
  • Ubuntu 19.04用のアップデータがリリースされています。CVE-2019-11810, CVE-2019-11815を修正します。
  • 対処方法:アップデータを適用の上,システムを再起動してください。
  • 備考:ABIの変更を伴いますので,カーネルモジュールを自分でコンパイルしている場合は再コンパイルが必要です。カーネルモジュール関連のパッケージ(標準ではlinux-restricted-modules, linux-backport-modules, linux-ubuntu-modulesなど)は依存性により自動的にアップデートされるため,通常はそのままアップデートの適用を行えば対応できます。
usn-4006-1, usn-4006-2:Linux kernelのセキュリティアップデート
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2019-June/004937.html
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2019-June/004941.html
  • Ubuntu 18.10・18.04 LTS用のアップデータがリリースされています。CVE-2019-11191を修正します。
  • 対処方法:アップデータを適用の上,システムを再起動してください。
usn-4007-1, usn-4007-2:Linux kernelのセキュリティアップデート
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2019-June/004938.html
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2019-June/004940.html
  • Ubuntu 18.04 LTS・16.04 LTS用のアップデータがリリースされています。CVE-2019-11191を修正します。
  • 対処方法:アップデータを適用の上,システムを再起動してください。
  • 備考:ABIの変更を伴いますので,カーネルモジュールを自分でコンパイルしている場合は再コンパイルが必要です。カーネルモジュール関連のパッケージ(標準ではlinux-restricted-modules, linux-backport-modules, linux-ubuntu-modulesなど)は依存性により自動的にアップデートされるため,通常はそのままアップデートの適用を行えば対応できます。
usn-4008-1:Linux kernelのセキュリティアップデート
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2019-June/004939.html
  • Ubuntu 16.04 LTS用のアップデータがリリースされています。CVE-2019-11190, CVE-2019-11191, CVE-2019-11810, CVE-2019-11815を修正します。
  • 対処方法:アップデータを適用の上,システムを再起動してください。
  • 備考:ABIの変更を伴いますので,カーネルモジュールを自分でコンパイルしている場合は再コンパイルが必要です。カーネルモジュール関連のパッケージ(標準ではlinux-restricted-modules, linux-backport-modules, linux-ubuntu-modulesなど)は依存性により自動的にアップデートされるため,通常はそのままアップデートの適用を行えば対応できます。
usn-4007-2:Linux kernel (HWE)のセキュリティアップデート
  • Ubuntu 16.04 LTS用のアップデータがリリースされています。CVE-2019-11191を修正します。
  • 対処方法:アップデータを適用の上,システムを再起動してください。
  • 備考:ABIの変更を伴いますので,カーネルモジュールを自分でコンパイルしている場合は再コンパイルが必要です。カーネルモジュール関連のパッケージ(標準ではlinux-restricted-modules, linux-backport-modules, linux-ubuntu-modulesなど)は依存性により自動的にアップデートされるため,通常はそのままアップデートの適用を行えば対応できます。
usn-4006-2:Linux kernel (HWE)のセキュリティアップデート
  • Ubuntu 18.04 LTS用のアップデータがリリースされています。CVE-2019-11191を修正します。
  • 対処方法:アップデータを適用の上,システムを再起動してください。
  • 備考:ABIの変更を伴いますので,カーネルモジュールを自分でコンパイルしている場合は再コンパイルが必要です。カーネルモジュール関連のパッケージ(標準ではlinux-restricted-modules, linux-backport-modules, linux-ubuntu-modulesなど)は依存性により自動的にアップデートされるため,通常はそのままアップデートの適用を行えば対応できます。
usn-4010-1:Eximのセキュリティアップデート
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2019-June/004942.html
  • Ubuntu 18.10・18.04 LTS用のアップデータがリリースされています。CVE-2019-10149を修正します。
  • 悪意ある加工を施したメッセージを処理させることで,任意のコードの実行が可能でした。
  • 対処方法:通常の場合,アップデータを適用することで問題を解決できます。
usn-4009-1, usn-4009-2:PHPのセキュリティアップデート
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2019-June/004943.html
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2019-June/004944.html
  • Ubuntu 19.04・18.10・18.04 LTS・16.04 LTS・14.04 ESM・12.04 ESM用のアップデータがリリースされています。CVE-2019-11036, CVE-2019-11039, CVE-2019-11040を修正します。
  • 対処方法:通常の場合,アップデータを適用することで問題を解決できます。
usn-3957-3:MariaDBのセキュリティアップデート
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2019-June/004945.html
  • Ubuntu 18.04 LTS用のアップデータがリリースされています。CVE-2019-2614, CVE-2019-2627を修正します。
  • MariaDB 10.1.40のUbuntuパッケージ版です。
  • 対処方法:通常の場合,アップデータを適用することで問題を解決できます。

著者プロフィール

吉田史(よしだふみひと)

システム管理を中心にWindows/PC Unixを併用している。Ubuntu Japanese Teamではパッケージサーバの管理や翻訳などの作業を担当。