kledgeb UbuntuやLinuxの最新情報を紹介

Ubuntu 24.04 その33 - Ubuntu 24.04 LTSで導入された新しいセキュリティー機能とセキュリティーの強化

新しいセキュリティー機能と安全性の向上

「Ubuntu 24.04 LTS」では安全性向上のため、新しいセキュリティー機能が導入されています。


  • What’s new in security for Ubuntu 24.04 LTS?

ここでは前LTSリリースの「Ubuntu 22.04 LTS」と比較し、「Ubuntu 24.04 LTS」で新たに導入されたセキュリティー機能を紹介します。

1. 非特権プロセスによるユーザー名前空間の利用制限

非特権プロセスによるユーザー名前空間(Unprivileged user namespace)は「Linux kernel」が提供している機能で、ユーザーが一般的に使用する多くのソフトウェアから利用されている機能です。

  • user_namespaces - overview of Linux user namespaces

サンドボックスでも利用されている

例えばブラウザーでサンドボックスを構築する際、非特権のユーザー名前空間が利用されています。
信頼できるブラウザー自身がサンドボックスを構築し、そのサンドボックス内で信頼性の低いウェブコンテンツをレンダリングします。

  • Linux Sandboxing

このようにアプリは非特権のユーザー名前空間を活用することで権限を分離し、セキュリティー強度を向上させることができます。

攻撃対象になっている

しかし「Linux kernel」の脆弱性を悪用するために、このユーザー名前空間が不正に利用されてきた経緯があります。
そこでこの種の攻撃に対し「Ubuntu」では、ユーザー名前空間の利用を制限する緩和策が導入されました。

Ubuntu 23.10で導入された

まずユーザー名前空間の利用を制限する緩和策は、「Ubuntu 23.10」で導入されました。

  • 非特権プロセスによるユーザー名前空間の利用制限とAppArmor

「Ubuntu 23.10」では「Ubuntu」が正当なアプリであると判断したアプリにのみ、ユーザー名前空間の利用を許可する仕組みが導入されました。

Ubuntu 24.04 LTSで対応を改善

「Ubuntu 24.04 LTS」ではサードパーティー製のアプリ含めアプリの正当性を確認する作業が進められ、サポートするアプリの範囲が改善されました。

また「Ubuntu 23.10」のようにユーザー名前空間の利用を制限する方法ではなく、アプリにはユーザー名前空間の利用を許容し、その中の権限に対して制限がかけられるようになりました。
つまり制限の粒度が変更され、以前の方法よりも適切に攻撃対象となるユーザー名前空間経由のカーネルインターフェースの悪用を緩和できるようになりました。

2. 実行可能ファイルのセキュリティー強化

ソフトウェアのビルドに使用する最近のツールチェインやコンパイラーでは、様々な防御メカニズムが備わっています。
例えばコード再利用攻撃に対抗するブランチ保護といったモダンなCPUが提供する仕組みの活用に加え、バッファオーバーフローの可能性を検出及び回避する仕組みが備わっています。

GNU C Library

「GNU C library」は多くのアプリで利用される礎となるライブラリーの1つです。

  • The GNU C Library

「GNU C library」ではバッファオーバーフローを実行時に検出する機能や、バッファオーバーフローから保護する機能、バッファオーバーフローが発生しうる特定のケースを検出する機能を備えています。

_FORTIFY_SOURCE

また特定の文字列操作に対してバッファオーバーフローを検出する「_FORTIFY_SOURCE」マクロが提供されています。

  • D.2 Fortification of function calls

「_FORTIFY_SOURCE」ではバッファオーバーフローをチェックするレベルを0〜3の間で指定できるようになっています。

昨今リリースされてきた「Ubuntu」ではこのレベルに「2」が指定されていました。
これにより「sprintf()」や「strcpy()」といった文字列操作を行う関数や、「printf()」のようにフォーマットを指定して文字列操作を行う関数でバッファオーバーフローを検出するようになっていました。

Ubuntu 24.04 LTSでさらなる強化

「Ubuntu 24.04 LTSで」では「_FORTIFY_SOURCE」のレベルが「3」に変更され、さらにセキュリティーが強化されました。
これにより以下の関数を含むメモリー処理周りの危険な扱われ方も、検出できるようになりました。

  • memmove()
  • memcpy()
  • snprintf()
  • vsnprintf()
  • strtok()
  • strncat()

「Ubuntu 24.04 LTS」の「GCC」コンパイラーでは、この機能がデフォルトで有効になっています。
言い換えれば「Ubuntu 24.04 LTS」上でアプリをビルドすれば、この機能の恩恵に与れるようになります。

Armv8-Mアーキテクチャーのセキュリティー強化

次に「Armv8-M(arm64)」アーキテクチャーのセキュリティーが強化されました。
このアーキテクチャーでは、ハードウェアベースのポインター認証の強制や、ブランチターゲットを識別する機能を提供しています。

ポインター認証は、攻撃者がスタック上に保持されているポインターを別の位置に変更する悪意あるスタックバッファーの改ざんを検出する機能です。
またブランチターゲットの識別は、間接的なブランチ命令や攻撃者がターゲットとするであろう位置の追跡に活用される機能です。

「GCC」コンパイラーには、これらの機能を有効にする「-mbranch-protection」オプションがあります。
「Ubuntu 24.04 LTS」の「dpkg」パッケージでは、「-mbranch-protection=standard」が指定されるようになり、この機能がデフォルトで有効になっています。
そのため「Ubuntu」公式リポジトリーから提供されるすべてのパッケージでこの機能が活用できるようになっています。

3. AppArmor

「AppArmor」はソフトウェアのアクセス制御を行うソフトウェアです。
先ほど紹介した非特権プロセスによるユーザー名前空間に対する制限は、この「AppArmor」を通じて行われています。
「AppArmor」を活用することで管理者は、アプリがアクセス可能なシステムリソースを意図的に制限し、セキュリティー強度を向上させることができます。

  • AppArmor

AppArmor 4.0

「Ubuntu 24.04 LTS」には最新版の「AppArmor 4.0」が搭載されています。
「AppArmor 4.0」ではセキュリティーポリシーが強化され、アプリがアクセス可能なネットワークリソースをネットワークアドレスやポートで指定できるなど、機能が強化されています。
従来よりもより高度で柔軟なセキュリティーポリシーを定義できるようになりました。

アクセス制御の強化

「AppArmor」は「Linux kernel」内でユーザー名前空間や「io_uring」サブシステムへのアクセスを仲介できるようになりました。
いずれも悪意あるソフトウェアの攻撃対象になる機能です。
「AppArmor」によりそれらの攻撃を緩和することができます。

4. 古いTLSバージョンの無効化

「TLS」は認証及び暗号化通信に利用される仕組み(プロトコル)です。

  • Transport Layer Security

1999年に「TLS 1.0」が標準化され、その後時代と共に「TLS」はバージョンアップし、セキュリティー機能が強化されてきました。
古いバージョンの「TLS」は脆弱であり、使用が推奨されるものではありません。

古いバージョンは利用不可に

「Ubuntu 24.04 LTS」では、以下のバージョンは強制的に無効化されており、利用することはできません。

  • TLS 1.0
  • TLS 1.1
  • DTLS 1.0

これによりTLSダウングレード攻撃にも対抗できるようになりました。

5. Linux kernelのセキュリティー強化

「Ubuntu 22.04 LTS」ではリリース時に「Linux kernel 5.15」が採用されていました。
「Linux kernel 5.15」ではコアスケジューリングやカーネルスタックのランダム化、非特権BPFの利用制限など、複数のセキュリティー機能が取り込まれています。

  • What’s new in Security for Ubuntu 22.04 LTS?

「Ubuntu 24.04 LTS」ではさらにセキュリティーが強化された「Linux kernel 6.8」が採用されています。

Intel shadow stackのサポート

モダンな「Intel CPU」は、特定の「ROP(Return-oriented programming)」攻撃に対抗する機能や、コールスタックを対象とした攻撃に対抗するセキュリティー機能が備わっています。

「Intel shadow stack」は、CPUから直接変更できないスタックの復帰アドレスをコピーし、関数呼び出しから戻ってきた時にスタックの復帰アドレスとコピーしたスタックの復帰アドレスを比較して、改ざんされていないか検出する機能です。
改ざんされていればプロセスは終了させられます。

この機能は「Ubuntu 19.10」のコンパイラ及びユーザースペースのパッケージでサポートが有効になっています。
しかしカーネルやCライブラリーではこの機能がサポートされておらず、この機能を活用することができませんでした。

「Ubuntu 24.04 LTS」では、以下の環境変数を指定することで必要に応じてこの機能を有効化できるようになりました。

GLIBC_TUNABLES=glibc.cpu.hwcaps=SHSTK

AMD SEV-SNP と Intel TDX による仮想環境のセキュリティー強化

「AMD CPU」及び「Intel CPU」は仮想マシンのセキュリティーを強化する機能を備えています。
それぞれ機能は「AMD SEV-SNP」や「Intel TDX」と呼ばれています。
この機能によりメモリーの暗号化や整合性の維持など、仮想マシンのセキュリティー強度を向上させることができます。

さてこの機能は「Linux kernel 5.19」でサポートされましたが、この機能を活用するには「Linux kernel」だけでなくゲスト側及びホスト側の双方で、ソフトウェアスタックの対応も必要になります。
「Ubuntu」ではゲスト側及びホスト側の双方でこの機能を活用できるよう、ソフトウェアスタックの対応もなされています。

コンパイル時の厳密な境界チェック

「Linux kernel」で「memcpy()」などメモリー周りの関数で、コンパイル時にバッファオーバーフローを検出する機能が強化されました。

「FORTIFY_SOURCE」マクロにより、メモリーを別のバッファーにコピーする時など、メモリー周りの処理でコンパイル時にバッファオーバーフローのチェックが行われます。
問題が発見された場合は、コンパイルが中止されます。

この機能が「Linux kernel 5.19」で強化され、今まで複雑なパターンで適切に検出できていなかったケースでも検出できるよう、大幅にチェック機能が強化されました。

Ubuntu
スポンサー
コメント
コメントポリシー
コメントをする前に UbuntuのCode of Conduct(CoC/行動規範) を確認し、CoCに沿ったコメントをお願いします。
コメントの使い方は、コメントの使い方を参照してください。
同一カテゴリーの記事
SNS
人気の記事
  • Ubuntu 26.04 その74 - Chromium 系ブラウザーにより、Qt6 で構築されたアプリがクラッシュする現象
    Qt6 で構築されたアプリがクラッシュする現象 Chromium 系ブラウザーにより、Qt6 で構築されたアプリがクラッシュする現象が報告されています。
  • Ubuntu 24.04 その104 - Ubuntu 26.04 LTS へアップグレードするには・アップグレードの注意事項
    Ubuntu 26.04 LTS へアップグレードするには 現在 Ubuntu 24.04 LTS を利用しているユーザーは、Ubuntu 26.04 LTS へアップグレードできます。
  • Ubuntu 26.10 その35 - RISC-V 向け Ubuntu Desktop 登場
    RISC-V 向け Ubuntu Desktop 登場 Ubuntu Desktop 26.10 では、RISC-V 向けデスクトップイメージがリリースされます。
  • Ubuntu 24.04 その103 - Ubuntu 26.04 LTS へアップグレード可能に・2年分の変化が一気にやってくる
    Ubuntu 26.04 LTS へアップグレード可能に 2026年9月29日、Ubuntu 24.04 LTS から Ubuntu 26.04 LTS へアップグレード可能になりました。
  • Ubuntu 26.10 その34 - Ubuntu と Rust に対する取り組み(2026年10月)
    Ubuntu と Rust に対する取り組み 2026年10月1日、Ubuntu と Rust に対する取り組みが以下で紹介されました。
  • Ubuntu 26.10 その33 - Ubuntu 26.10 β版がリリースされました・ディスクイメージのダウンロード
    Ubuntu 26.10 β版がリリースされました 2026年10月1日、Ubuntu 26.10 β版 がリリースされました。
  • Ubuntu 26.10 その38 - Ubuntu 26.10 がリリースされました・ディスクイメージのダウンロード
    Ubuntu 26.10 リリース 2026年10月15日、Ubuntu 26.10 がリリースされました。
  • Ubuntu 26.04 その76 - CVE-2026-92392 含む curl の脆弱性22件修正・アップデートを
    curl の脆弱性22件修正 CVE-2026-92392 含む22件の curl の脆弱性に対応したセキュリティーアップデートがリリースされました。
  • Linux その440 - uutils coreutils 0.11.0 でコマンド実行時のエラーメッセージを大幅に改良
    コマンド実行時のエラーメッセージを大幅に改良 uutils coreutils 0.11.0 で、コマンド実行時のエラーメッセージが大幅に改良されました。
  • Ubuntu 26.10 その32 - Snapdragon X2 に対応した Ubuntu 26.10 実験版登場
    Snapdragon X2 に対応した Ubuntu 26.10 実験版登場 2026年9月29日、Snapdragon X2 に対応した Ubuntu 26.10 実験版が登場しました。
記事のピックアップ
オプション