Ubuntu 24.04 LTSのセキュリティの新機能
by Canonical on 17 June 2024
新しいUbuntu 24.04 LTSリリースであるNoble Numbatは、優れた新機能を備えています。Ubuntuの他のリリースと同様、Ubuntu 24.04 LTSにもメインリポジトリの5年間の無償セキュリティメンテナンスが付属します。サポートはさらに5年間延長でき、Ubuntu Proを購入するとUniverseリポジトリも含めることができます。大きなアップグレードなしにシステムのセキュリティを維持したい組織は、Legacy Supportアドオンでサポートを10年以上に延長することもできます。Ubuntu ProとLegacy Supportによるセキュリティ強化も併せ、Ubuntu 24.04 LTSは、リスクの大きい環境でアプリケーションやサービスを開発および展開するためのセキュアな基盤となります。このブログ記事では、土台となるUbuntu 22.04 LTSと比べ、Noble Numbatで強化された点やセキュリティ機能をご紹介します。
非特権ユーザーネームスペースの制約
非特権ユーザーネームスペースは広く使用されているLinuxカーネルの機能であり、セキュリティ上のアプリケーションの分離を強化するとともに、サンドボックス環境の一環としてもよく採用されます。これにより、制約のある環境内でアプリケーションが使用する許可が増えます。アプリケーションの中で信頼性が高い部分だけがこの追加の許可を使用してさらに制約の厳しいサンドボックス環境を作成します。信頼性の低い部分はその中で実行されます。一般的なユースケースは、新しいウェブブラウザで採用されているサンドボックス処理で、(信頼済みの)アプリケーション自体がサンドボックスを作成し、その中で信頼済みでないウェブコンテンツを実行するものです。しかし、このような追加のアクセス許可を提供することで、非特権ユーザーネームスペースはLinuxカーネル内に新たな攻撃対象領域を生み出すことになります。非特権ユーザーネームスペースは、各種のカーネルの脆弱性を悪用するために長い間使われてきました。Ubuntuの最新の中間リリースである23.10では、非特権ユーザーネームスペースの使用を、そのようなアクセスを本当に必要とするアプリケーションのみに制限できます。Ubuntu 24.04 LTSではこの機能がさらに改良され、Ubuntu内とサードパーティーの両方で追加のアプリケーションをカバーするとともに、機能のデフォルトのセマンティクスが改善されました。このような場合にUbuntu 24.04 LTSでは、すべてのアプリケーションに対して非特権ユーザーネームスペースの使用が許可されますが、ネームスペース内での追加アクセス許可へのアクセスは拒否されます。これにより、多くのアプリケーションがこのデフォルトの制約をうまく扱うことができる一方で、ユーザーネームスペースを悪用してLinuxカーネル内の追加の攻撃対象領域にアクセスしようとする悪用の試みは阻止されます。
バイナリ強化
現在のツールチェーンやコンパイラは、各種の防御機構を含むバイナリを作成できるよう、多くの拡張が組み込まれています。起きる可能性がある各種のバッファオーバーフロー条件を検出して回避する機能や、分岐保護など新しいプロセッサの機能を活用し、コード再利用攻撃への防御を強化する機能などがあります。
GNU CライブラリはUbuntu上の多くのアプリケーションで基盤として使用され、特定のタイプのバッファオーバーフロー事例や、_FORTIFY_SOURCEマクロの使用による特定の危険な文字列処理動作をランタイムに検出して防護します。FORTIFY_SOURCEは0から3までのさまざまなレベルに指定でき、数字が増えるほどセキュリティ機能が強化されます。Ubuntuの新しいリリースはすべてFORTIFY_SOURCE=2を使用し、これにはsprintf()やstrcpy()などの文字列処理関数でのバッファオーバーフローの可能性や、さまざまな事例における%n書式指定子による書式文字列の脆弱性を検出するチェックが含まれており、強固な基盤となります。Ubuntu 24.04 LTSでは、FORTIFY_SOURCE=3を使用すると、さらに追加のセキュリティ機能が有効になります。レベル3ではmemmove()、memcpy()、snprintf()、vsnprintf()、strtok()、strncat()など、他の多くの一般的なメモリ管理関数の危険な使用の可能性を検出する機能が大幅に強化されます。この機能はUbuntu 24.04 LTS内のgccコンパイラではデフォルトで有効なため、Ubuntuアーカイブ内でgccによりコンパイルされたすべてのパッケージと、Ubuntu 24.04 LTSのgccでコンパイルされたすべてのアプリケーションには、この追加の保護機能が使用されます。
Armv8-Mハードウェアアーキテクチャ(Ubuntuの「arm64」ソフトウェアアーキテクチャにより提供されます)には、ハードウェアにより強制されるポインタ認証と分岐ターゲット識別の機能があります。ポインタ認証により、スタックに格納されているポインタを攻撃者がコントロールする場所にリダイレクトすることを目的とする、悪意のスタックバッファ改変が検出でき、分岐ターゲット識別は特定の間接分岐命令と、そのターゲットとなり得る場所を追跡するために使用されます。このような正当な場所を追跡することで、既存の間接分岐を使用して、コード内の他のガジェットにジャンプすることを目的とする、ジャンプを使用する悪意のプログラミングの攻撃を検出できます。gccコンパイラは、-mbranch-protectionオプションにより、これらの機能をサポートします。Ubuntu 24.04 LTSでは、dpkgパッケージで-mbranch-protection=standardが有効になったため、Ubuntuアーカイブ内のすべてのパッケージにおいて、使用可能な部分ではこれらのハードウェア機能のサポートが有効です。
AppArmor 4
前に述べた非特権ユーザーネームスペースの制限はすべて、AppArmor必須アクセス制御システムにより支えられています。AppArmorにより、システム管理者はアプリケーションがどのリソースにアクセスを許可されるかを定義し、それ以外のアクセスをすべて拒否することで、最小権限の原則を実装できます。AppArmorは、アプリケーションとシステムのセキュリティプロファイルを定義するために使用されるユーザー空間パッケージと、ポリシーの適用を行うLinuxカーネル内のAppArmor Linuxセキュリティモジュールとで構成されます。Ubuntu 24.04 LTSには最新のAppArmor 4.0リリースが含まれており、セキュリティポリシー(高レベルプロトコルだけでなく)で許可されるネットワークアドレスとポートの指定や、さまざまな条件によってより複雑なポリシーを表現するなど、多くの新機能がサポートされています。Ubuntu 24.04 LTSのAppArmor 4に含まれている、新たに開発された魅力的機能として、アクセス制御の決定を信頼済みのユーザー空間プログラムに委任するというものがあります。ユーザー空間内ではさらに多くのコンテキストが利用可能で、ユーザーやシステム管理者とリアルタイムの形式で対話することも可能なため、これによって非常に高度な意思決定を実装可能です。たとえば、実験的なsnapdプロンプト機能ではこれを活用して、snapがユーザーのホームディレクトリ内でどのファイルにアクセス可能かをユーザーが直接制御できます。最後に、AppArmorにはユーザーネームスペースとio_uringサブシステムへのアクセスを調停する機能が追加されました。このどちらも、悪意のアプリケーションに対するカーネルの攻撃対象領域を歴史的に増やしてきたものです。
古いTLSのバージョンの無効化
プライベート通信での暗号の使用は、現代のインターネットのバックボーンです。TLS(Transport Layer Security)プロトコルは、1999年にTLS 1.0で最初に標準化されたときから、インターネット通信の機密性と整合性に貢献してきました。このプロトコルは、それ以来多くの改訂が行われ、新たなセキュリティ機能が追加されるとともに、標準の以前のバージョンに付きものだった、さまざまなセキュリティ上の問題点を回避してきました。TLSには多くのバージョンが存在し、それぞれで広範なオプションがサポートされているため、現代のインターネットシステムはセキュアな通信リンクを確立するときにオートネゴシエーションのプロセスを使用して、プロトコルのバージョンとパラメータの適切な組み合わせを選択します。Ubuntu 24.04 LTSでは、ユーザーがTLSのダウングレード攻撃にさらされ、機密情報が漏えいすることを避けるため、TLS 1.0、1.1、およびDTLS 1.0はすべて強制的に無効になります(基盤となるopensslまたはgnutlsライブラリを使用するすべてのアプリケーションについて)。
アップストリームカーネルセキュリティの機能
Linux kernel v5.15は、以前のUbuntu 22.04 LTSリリースでLinuxカーネルの基礎として使用されていました。これには、コアのスケジューリング、カーネルスタックのランダム化、非特権のBPF制限など、多くのカーネルのセキュリティ機能があります。それ以降、アップストリームのLinuxカーネルのコミュニティは、カーネルのセキュリティ機能をせっせと追加してきました。Ubuntu 24.04 LTSに含まれているv6.8 Linuxカーネルには、次のような新しいセキュリティ機能があります。
Intelのシャドースタックのサポート
現代のIntel CPUは、特定のタイプのROP(復帰指向プログラミング)と、呼び出しスタックの悪意での破損を目的とする他の攻撃を防止することを目的とする、新しいハードウェア機能がサポートされています。シャドースタックはハードウェアで強制されるスタックの復帰アドレスのコピーで、CPUが直接変更できません。プロセッサが関数呼び出しから復帰するとき、スタックの復帰アドレスがシャドースタックの値と比較されます。双方が異なる場合、ROP攻撃の可能性を防止するため、プロセスは中断されます。コンパイラでのこの機能のサポートは、Ubuntu 19.10からユーザー空間パッケージで有効になっていましたが、カーネルとCライブラリでもサポートされるまで活用できませんでした。Ubuntu 24.04 LTSには、このシャドースタックへの追加サポートが含まれているため、GLIBC_TUNABLES=glibc.cpu.hwcaps=SHSTK環境変数を設定することで、必要に応じてこの機能を有効にできます。
AMD SEV-SNPとIntel TDXによるセキュアな仮想化
コンフィデンシャルコンピューティングは、オペレーティングシステム、ハイパーバイザー、ファームウェアなど特権システムソフトウェアの複雑なコードベースの脆弱性が、コードとデータ両方の機密性と整合性に対して継続的なリスクになる、従来型の脅威モデルとは根本的に一線を画するものです。同様に、悪意のクラウド管理者による未認可アクセスは、VM(仮想マシン)とその環境のセキュリティを危うくするものです。Ubuntu Confidential VMは、シリコンレベルでのTrusted Execution Environments(信頼できる実行環境)のイノベーションを基礎としており、VMのセキュリティアシュアランスの制御を取り戻すことを目的とするものです。
x86アーキテクチャでは、AMDとIntelの両方のプロセッサが、メモリの暗号化と整合性保護の機能を持つ仮想マシンの実行をサポートするハードウェア機能があります(それぞれ、AMD SEV SNPとIntel TDXと呼ばれています)。これらの機能により、仮想マシンに格納されているデータには、ハイパーバイザーからも、インフラストラクチャの演算子からもアクセス不可能となります。これらの機能をゲスト仮想マシンとして使用するためのサポートは、アップストリームLinuxカーネルのバージョン5.19で導入されました。
Ubuntu Confidential VMを使用することで、ユーザーはサードパーティーにより提供されるコンピューティングリソースを使用しながら、メモリ暗号化やその他の機能を使用して、データの整合性と機密性を維持できます。パブリッククラウドでは、Ubuntuは最も広範な機密VMのポートフォリオを提供しています。これらは両方のハードウェア機能のイノベーションを基盤として構築されており、Microsoft Azure、Google Cloud、Amazon AWSのすべてにわたってサービスが提供されています。
エンタープライズのお客様が自社のプライベートデータセンター内でコンフィデンシャルコンピューティングを活用するには、完全に有効化されたソフトウェアスタックが不可欠です。このスタックは、ゲスト側(カーネルとOVMF)およびホスト側(kernel-KVM、QEMU、Libvirt)の両方を包含しています。現在のところ、ホスト側のパッチはまだアップストリームではありません。この問題に対処するため、CanonicalとIntelはUbuntuのお客様がIntelに最適化されたTDX Ubuntuビルドを使用できるよう、戦略的提携を確立しました。このサービスには、Ubuntu 23.10から始まり、24.04やそれ以後までにわたる、必要なすべてのゲストおよびホスト用のパッチが含まれ、まだアップストリームに結合されていないものも含まれています。完全なTDXソフトウェアスタックは、このgithubリポジトリから入手できます。
この共同作業により、当社のお客様はIntel TDXのセキュリティアシュアランスをすぐに活用できます。また、この共同作業により、シリコンのイノベーションとソフトウェアの対応とのギャップを狭めることもできます。このギャップはIntelが第5世代のIntel Xeonスケーラブルプロセッサや、さらにそれ以後のプロセッサで、ハードウェアのイノベーションの境界を広げるにつれ、広がっているものです。
コンパイル時の厳格な境界チェック
ライブラリ内のバイナリと、Ubuntuで配布されるアプリケーションを強化するのと同様に、Linuxカーネル自体も、memcpy()ファミリの関数の境界チェックの改善により、コンパイル時にバッファオーバーフローの可能性を検出するサポートが強化されました。カーネル内では、FORTIFY_SOURCEマクロにより、memcpy()やmemset()などのメモリ管理関数で、デスティネーションオブジェクトが指定された量のメモリを保持できる大きさがあるかどうかをチェックし、十分な大きさがない場合はコンパイル処理をアボートできます。これにより、各種の小さな、しかしオブジェクトがより大きなオブジェクトに埋め込まれている場合などの複雑な事例では正しく処理できなかった、メモリ管理の問題を捕捉できます。これはカーネル内では非常に一般的なパターンで、アップストリーム5.18のカーネルバージョンでは、このような各種の事例を列挙して修正するため導入された変更により、この機能が大幅に改良されました。現在は、コンパイラがサブオブジェクトに対してメモリ操作を行うとき、他のオブジェクトのメンバが意図せずに上書きされないよう厳格なチェックを強制できるようになったため、カーネル内でバッファオーバーフローが起きる脆弱性を防止できるようになりました。
まとめ
Ubuntu 24.04 LTSは、過去のUbuntuリリースを強固な基盤としてさまざまなセキュリティ機能が改良され、これまでで最も安全なリリースになりました。カーネルとユーザー空間、およびディストリビューション全体にわたる追加機能の組み合わせが、あらゆる脆弱性と攻撃対象領域に対処します。最大12年のサポートを受けられるUbuntu 24.04 LTSは、Linuxのサービスやアプリケーションを開発して展開する最も優れた安全な基盤です。Ubuntu Proの利用者には、Ubuntu環境のセキュリティを強化するExpanded Security Maintenance、カーネルのライブパッチ、追加サービスがすべて提供されます。
ニュースレターのサインアップ
関連記事
Firefighting Supportを発表
新しいサービスでCanonicalの専門家が高度なクラウドサポートを提供 Canonicalのマネージドソリューションチームは、自社でインフラストラクチャの管理を行い、トラブルシューティングの必要があるときのみ専門家の対応を求める組織のために、新しいサービス「Firefighting Support」を発表しました。 Firefighting Supportでは、フルマネージドサービスを止めた、または厳しいセキュリティ規制によってサードパーティーに環境へのアクセスを許可できないお客様に対して、マネージドサービスレベルのサポートを提供します。このサービスはノードごとの年間料金で提供され、次のような内容です。 自己管理インフラストラクチャへの移行に理想的 現在の市場では、マネ […]
Linuxにセキュリティパッチを適用する頻度は?
セキュアな環境を維持するには定期的なパッチの適用が不可欠ですが、Linux環境を安全に保つための方法は環境によって異なります。運用の安定性を考えて、どのぐらいの更新頻度が妥当でしょうか? 最も制限が多く、規制が厳しい環境でも、準拠が保証され安全な方法で、セキュリティパッチの適用を自動化できる方針が存在します。セキュリティパッチの適用方針を定義するときは、Canonicalでのソフトウェア更新のリリーススケジュールを理解し、セキュリティパッチの適用の時間枠を知っておくことが不可欠です。私は最近、ライブのウェビナーとセキュリティの質疑応答を主催し、パッチ適用の回数を最小化するとともに、パッチが適用されていない脆弱性が悪用される回数も最小化する方法について解説しました。この記事 […]
Dell Technologies Forum TokyoにCanonicalが出展
Dell Technologies Forum TokyoにCanonicalが出展!10月3日にお会いしましょう Canonicalは、10月3日に東京で開催されるDell Technologies Forumに出展することを大変楽しみにしています。この業界をリードするイベントでは、デジタルの未来を形作る最新の技術について、業界リーダーやテクノロジー愛好者が一堂に会します。 【開催概要】■ 日時: 2024年10月3日(木) 10:00 – 18:40■ 会場: グランドプリンスホテル新高輪 国際館パミール■ 事前登録サイト(英語): Dell Technologies Forum 登録ページ■ 参加費: 無料(事前登録制) 最新ソリューションを体感 Canonical […]