Ubuntu Weekly Topics

2019年3月29日号 discoのBetaとカーネルフリーズ,ACPIまわりのデバッグ方法

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

discoのBetaとカーネルフリーズ

discoのカーネルフリーズが4月4日に迫る中,興味深いパッチが投稿されています。パッチの中身は「ShiftFS」と呼ばれる,コンテナ環境でのセキュリティ機能を提供するためのラッパーファイルシステムです注1)⁠

注1
詳細はこの記事を参照してくださいCreationline社による日本語訳もあります)⁠

ポイントは「カーネルフリーズの一週間前に,おもむろに,新機能を提供するパッチが投稿されている」という点です。ここから「それが本当にUbuntuに必要なのか」⁠ShiftFSと類似の実装のパフォーマンス差はどれぐらいなのか」⁠コードはそもそも妥当なのか」下がbtrfsだとioctlをパススルーする仕様がとても都合が悪いといった問題の整理議論を進めるにはあまりにもタイミングが悪く,ShiftFSがdiscoに投入される可能性は控えめなものではありますが,特定の処理には強みを発揮するため,どちらに転がるかはまだ分かりません。

また,ELF以前のバイナリ実行ファイルフォーマットである,a.outのサポートを終了させるためのパッチがdisco(19.04)用に準備されています。a.outは古代と言ってもいい時代からUnix環境で使われてきたフォーマットでしたが,Mainlineカーネルでは5.1で事実上利用不能な状態に切り替わり,動作に必要なコードも将来的に除去される予定です注2)⁠discoは5.0カーネルを基本にすることになりますが,5.1で行われる変更を先行して取り込む形となります。

注2
「もうa.outって宇宙で誰も使ってないよね? でも確信までは持てないから,とりあえずコアダンプできないようにするよどうせこれ壊れてて,ろくに動かないし」⁠……というか多分誰も困らないだろうからコアダンプだけでなくサポート自体止めてみようという流れがMainline側に存在し,これをUbuntuでも速やかに取り込んだ,というものです。

繰り返しますが,discoのカーネルフリーズは4月4日です。……しかしながら,a.outサポートの終了についてはack済みなので,おそらく間に合うはずです(万が一問題が出ても,とりあえず「a.outを無効にするビルドオプションを無効にする」という手で回避できる余地もあります)⁠

ちょうど今がベータリリースのタイミングにあたります。いつものことではありますが,⁠リリース前のUbuntu」らしい,さまざまな駆け込みが行われる時期になってきたと言えるでしょう。

その他のニュース

  • DeviceTreeと並ぶ,歴史的経緯と避けられないquirksと,さまざまな血と涙と闇を煮詰めて作ったとしか思えないACPI DSDTとSSDTのACPICAユーティリティによるデバッグ方法注3)⁠⁠なぜか分からないがドライバがロードされない」といった場合に,このアプローチを取ることで,少なくとも「ACPIがバグっている」ことを特定できるようになります。
注3
世の中のPCには,さまざまなデバイスが搭載されています。この多様性そのものは非常にすばらいしものです。ところが,⁠そのPCにどのようなデバイスが搭載されているか」⁠搭載されているにしてもどのような論理構成をしているか」⁠それはメモリ上のどこにマッピングされているか」が適切にカーネル(+ドライバ)に通知されないとデバイスを動作させることはできません。こうした構造を普遍的に表現するためのアプローチはいくつか存在するものの,ACPI(主にPC用)とDeviceTree(主にARM用)がこうした用途に使われる主要な実装です。そしていろいろな原因により,⁠なぜかデバイスが動作しない」という事態が起こります。原因はドライバの実装ミスだったり,ACPIテーブルの問題だったり,なぜか広大なメモリ空間を占有する特定ベンダのGPUカードだったり,アドレス重複により複数搭載することでメモリ空間で自身を自壊させるNICだったりするのですが,⁠なぜそれが動かないのか」を識別することは,それなりの経験を必要とするものでした。ところがこのエントリの手順を使うことで,⁠簡単に」ドライババグなのか,あるいはACPIテーブルの問題なのか,という切り分けができるはずだよ(なのでこれを使ってバグを報告してね!)というのがキモです。……当該の記事とこの注釈を合わせて読んでいる方は『簡単に』という言葉の定義について筆者を問いただしたくなってきたと思われますが,⁠以前の方法(ACPIテーブルを頑張ってダンプしてバイナリを気合いで読む等)に比べると簡単」という側面では確実に真実です。実際,出力されるものの意味をある程度理解できれば相当に気楽な作業となっているはずです。なお,当該のblogエントリを書いたAlex Hungのblogエントリ一覧がこちらで,⁠ACPIは簡単なのでみんなちゃんとバグ報告してね!」という強い意志を感じ取れる状態になっています。

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

usn-3912-1:GDK-PixBufのセキュリティアップデート
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2019-March/004807.html
  • Ubuntu 16.04 LTS用のアップデータがリリースされています。CVE-2017-12447を修正します。
  • 悪意ある加工を施したbmpファイルを処理させることで,メモリ破壊を伴うクラッシュを引き起こすことが可能でした。
  • 対処方法:アップデータを適用の上,セッションを再起動(一度ログアウトして再度ログイン)してください。
usn-3914-1:NTFS-3Gのセキュリティアップデート
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2019-March/004808.html
  • Ubuntu 18.10・18.04 LTS・16.04 LTS用のアップデータがリリースされています。CVE-2019-9755を修正します。
  • 極度に長い相対パスを正しく処理できないため,本来想定されるパスと異なる場所へマウントさせることが可能でした。悪用により特権昇格の可能性があります。
  • 対処方法:通常の場合,アップデータを適用することで問題を空き決できます。
usn-3915-1:Ghostscriptのセキュリティアップデート
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2019-March/004809.html
  • Ubuntu 18.10・18.04 LTS・16.04 LTS・14.04 LTS用のアップデータがリリースされています。CVE-2019-3835, CVE-2019-3838を修正します。
  • 悪意ある加工を施したPostScriptファイルを処理させることにより,任意のコードの実行を含む副作用を誘発することが可能でした。
  • 対処方法:通常の場合,アップデータを適用することで問題を空き決できます。
usn-3913-1:P7ZIPのセキュリティアップデート
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2019-March/004810.html
  • Ubuntu 16.04 LTS用のアップデータがリリースされています。CVE-2016-2335, CVE-2017-17969を修正します。
  • 悪意ある加工を施したアーカイブファイルを処理させることにより,任意のコードの実行を含む副作用を誘発することが可能でした。
  • 対処方法:通常の場合,アップデータを適用することで問題を空き決できます。
usn-3918-1, usn-3918-2:Firefoxのセキュリティアップデート
usn-3917-1:snapdのセキュリティアップデート
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2019-March/004812.html
  • Ubuntu 18.10・18.04 LTS・16.04 LTS・14.04 LTS用のアップデータがリリースされています。CVE-2019-7303を修正します。
  • 悪意あるSnapパッケージ(ないし侵害されたSnap環境)が,ioctl()経由でターミナルのインプットキューに文字列を追加し,コマンドの実行を狙うことが可能でした。
  • 対処方法:通常の場合,アップデータを適用することで問題を空き決できます。ただし,通常のUbuntu環境であればsnapdはすでに(Snap側の更新メカニズムにより)暗黙で2.37.4に更新されていると考えられます。
usn-3916-1:libsolvのセキュリティアップデート
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2019-March/004813.html
  • Ubuntu 18.10用のアップデータがリリースされています。CVE-2018-20532, CVE-2018-20533, CVE-2018-20534を修正します。
  • 悪意ある入力を行うことでDoSが可能でした。
  • 対処方法:アップデータを適用の上,システムを再起動してください。
usn-3919-1:Firefoxのセキュリティアップデート
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2019-March/004815.html
  • Ubuntu 18.10・18.04 LTS・16.04 LTS・14.04 LTS用のアップデータがリリースされています。CVE-2019-9810, CVE-2019-9813を修正します。
  • Firefox 66.0.1のUbuntuパッケージ版です。
  • 対処方法:アップデータを適用の上,Firefoxを再起動してください。

著者プロフィール

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

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