日本のLinuxセキュリティは時代遅れ!? Linuxセキュリティの最先端イベント「Linux Security Summit 2017」レポート―1日目

2017年10月17日(火)
面 和毅中村 雄一

2017年9月14~15日、アメリカのロサンゼルスで「Linux Security Summit 2017」が開催されました。

Linux Security Summit 2017は、主にLinuxのカーネル周りのセキュリティについて新しい機構の提案や既存の機構のアップデート情報を発表し、会場に集まった専門家たちと情報・意見交換をする場となっています(今回は172名が参加)。

今回、筆者も本サミットに参加してきたので、最新のLinuxのセキュリティ機構を紹介する一環として、今回と次回の2回に分けて1日目と2日目のセッションの簡単なダイジェストを紹介します。

なお、実際の発表資料の多くは下記のURLからダウンロードできます。

●Linux-Security-Summitのサイト
http://events.linuxfoundation.org/events/linux-security-summit/program/slides

●James Morris氏(本サミットのオーガナイザー。Oracle社)のブログ
https://blog.namei.org/2017/07/11/linux-security-summit-2017-schedule-published/

ARMv8.3 Pointer Authentication - Mark Rutland, ARM Ltd.

発表資料はこちら

ARM社のMark Rutland氏がARMv8.3における「Pointer Authentication(以下、ポインタ認証)」について解説しました。

通常、攻撃者がバッファーオーバーフローの脆弱性等を悪用して小さいシェルなどの攻撃プログラムを実行する場合には、攻撃プログラムのポインタがリターンアドレスになるようにしています。

この攻撃に対抗するため、ARM社ではARMv8.3から「ポインタ認証」と呼ばれるメモリ保護機能を追加しました。

現状ARM64 Linuxの3Levelではポインタを64bitで扱いますが、実際には下位40bitしか使用されておらず、上位24bitは使用されていない(最上位ビットと同じ)状態になっています。そこで、この上位ビットのサブセットにPAC(Pointer Authentication Code)というメタデータを組み込みます。

PACは、下記の3つから生成されます。

・ポインタの値
・64bitのコンテキスト値
・128bitの秘密鍵

この値を用いて実際にそのポインタが正しくsignされたものかを確認することで、不正な攻撃プログラムへのポインタに飛ばされないようにするのです。

この機能を使用できるように、GCC(GNU Compiler Collection) 7では「-msign-return-address=[non-leaf | all]」というオプションが追加されました。また、ユーザ空間でもこの機能を利用できるようになっています。

Defeating Invisible Enemies: Firmware Based Security in the OpenPOWER Platform - George Wilson, IBM

発表資料はこちら

IBM社のGeorge Wilson氏よりOpenPOWERプラットフォームでのファームウェアベースセキュリティが紹介されました。

IBMは2013年に日立、サムソン、Canonical等をメンバー企業として「OpenPOWERコンソーシアム」を立ち上げました。プロセッサの詳細やファームウェア、ソフトウェアなどのPowerアーキテクチャに関する技術情報を公開してメンバー企業と共に協調型の開発を行っています。

これにより、現在ではOpenPOWER上ではオープンソースのファームウェアが動作し、KVMのハイパーバイザがLinuxゲストを提供しています。

近年では「WikiLeaks」などに始まるハードウェアメーカの対応、また「BlackHat Asia 2017」で発表されたUEFIファームウェア上でのルートキットなどを受けて、ファームウェアのセキュリティも注目が集まっています。

また、本セッションではTPM技術とTCG(Trusted Computing)技術等を用いたファームウェアの検証やセキュアブート・トラステッドブートの実装についても解説されました。

Landlock LSM: Toward Unprivileged Sandboxing - Mickaël Salaün, Developer

発表資料はこちら

ANSSIのMickaël Salaün氏より、Landlock LSMが紹介されました。

Landlockはseccompと同じく、eBPF(enhanced Berkeley Packet Filter)を使用してユーザプロセスにアクセスできるリソースを制限し、サンドボックス化させます。

既存のSELinuxやAppArmorでもアプリケーションをサンドボックス化できますが、そのアプローチは「システム(またはセキュリティポリシー)管理者がポリシーを作成してサンドボックス化させる」ものです。

一方、LandLockやseccompのアプローチは、「非特権(一般)ユーザや開発者がユーザランドのアプリケーションをサンドボックス化させる」ものです。

また、このLandLockではseccompと比べてファイルパスのようなものもアクセス制限の対象となっています。

未だ開発中の機能も多く、安定にはまだ少し時間が掛かるかもしれませんが、機能としては非常に面白く注目すべき技術と思われます。

The State of Kernel Self-Protection - Kees Cook, Google

発表資料はこちら

Google社のKees Cook氏より、Kernel Self-Protectionプロジェクトの現在の状況が紹介されました。

Kernel Self-Projectionは「Linux Kernelには常に脆弱性やバグなどがあるだろう」という前提から、これを修正するだけでなく、バグによる脆弱性を利用した攻撃の効果を減らすことを目的としています。

特にAndroidや組み込み系でのLinux利用が進む中で、このような試み(なかなかバグ修正を適用できないような環境における脆弱性利用の削減)は、ますます必要となってくるものです。この手の研究は過去にPaxやgrsecurity、その他のアカデミックな研究などからLinux Kernelに取り込まれていましたが、このプロジェクトでは更にこれらの取り組みをサポートして推進しています。このプロジェクトではLinux Kernel本体に限定して取り組みを行っています。

また、本セッションでは、2011~2017年までのCVEを参照しながらこの種の取り組みが必要な背景の解説や今年の6/20に話題になった「Stack Clash」の解説、その他の代表的なBuffer Overflow/Underflow、use-after-free等に関する概説と取り組みを解説しました。

さらに、Linux Kernel 4.10/4.11/4.12/4.13での各変更点についても解説しました。

Confessions of a Security Hardware Driver Maintainer - Gilad Ben-Yossef, ARM

発表資料はこちら

ARM HoldingのGilad Ben-Yossef氏より、セキュリティチップなどハードウェア側の対応とソフトウェアとの間の実装のミスマッチと解消に関する最近の取り組みが紹介されました。

特にAndroidではTPMを利用したセキュアブートの話や、DM-Cryptoの実装とDM-Verity(Android 4.4から採用されているパーティションの4kブロックごとのハッシュからハッシュツリーを形成してシステムの改変を検知する機構)をハードウェアの機能でパラレルに動かすことでどの程度速度が改善されるか等を解説しました。

CII Best Practices Badge, 1.5 Years Later - David Wheeler, IDA

発表資料はこちら

IDAのDavid Wheeler氏より、2016年にLinux Foundationがスタートしたコアインフラストラクチャイニシアティブ(CII)の「ベストプラクティス」のバッジプログラムに関して解説されました。また、最近プログラムに追加されたシルバーとゴールドのバッジに関する議論も行われました。

The Smack 10th Year Update - Casey Schaufler, The Smack Project

発表資料はこちら

IntelのCasey Schaufler氏より、10年目を迎えたSmack(LSMを用いたシンプルなセキュリティ実装)の現在と将来について解説されました。

SmackはTizenやAutomotive Grade Linuxで使用されています。特にSmackは「シンプル」をコンセプトにしているため、敢えてこの10年で新機能は加えられておらず、”append”のアクセス許可ができるようになった程度です。

linux-Integrity Subsystem Update - Mimi Zohar, IBM

発表資料はこちら

IBMのMimi Zohar氏より、LinuxのIMA(TPMを用いてファイル改変等を検知するセキュリティ実装)の現状等について解説されました。

最近では”IMA-audit”というIMAを用いた改変のログ出力をSIEMなどのフォレンジックツールに連携する実装が加えられました。また”IMA Namespacing”と呼ばれる、ネームスペースごとにネームスペースidと相関付けて監査ログを出力する機能により、コンテナごとの監査も可能になる取り組みも開始されています。その他、最新のTPM 2.0への対応やUEFIサポートにも取り組まれている報告がされました。

BoF: Extreme Security Module Stacking - Issues and Directions - Casey Schaufler, The Smack Project

発表資料はこちら

Smackの開発者Casey氏によるBoFが行われ、SELinuxやAppArmor、Smack等のセキュリティ実装を同時に実行させる方法(スタック)に関して議論されました。

特にコンテナの対応などを考えると、セキュリティ実装を複数持ってOS本体とコンテナで別々に実行することがセキュリティの強度を高めます。このような観点から、実装に関する議論が白熱しました。個人的な見解では、どちらかと言うとSELinux(RHELやCentOS等広く使われており実質上のデファクトスタンダード)はあまり前のめりではなく、AppArmorやSmack等のいわば二番手の実装の開発者が好んで議論していたように感じられました。

ちなみに、Fedoraの最新バージョンでは、LSMのスタックが可能になっているそうです。

* * *

1日目のレポートは以上です。次回は引き続き2日目の解説と、全体を通した著者の感想を紹介したいと思います。

サイオステクノロジー株式会社 OSS/セキュリティエバンジェリスト
OSSのセキュリティ専門家として20年近くの経験があり、主にOS系のセキュリティに関しての執筆や講演を行う。大手ベンダや外資系、ユーザ企業などで様々な立場を経験。2015年からサイオステクノロジーのOSS/セキュリティエバンジェリストとして活躍し、同社でSIOSセキュリティブログ(http://security.sios.com)を連載中。
CISSP:#366942 近著:『Linuxセキュリティ標準教科書 』(LPI-Japan)」
株式会社 日立製作所

SELinuxから始まりOSSコミュニティ活動を長年行っている。近年は、OSSソリューションセンタにおいて、Keycloakのアップストリーム活動と関連ビジネスを立上げるなど、OSS戦略を推進中。また、The Linux Foundationのボードとして、日本国内のOSSコントリビューションの盛り上げに挑戦中。

Cloud Native Community Japanの設立発起人、OSSセキュリティ技術の会会長。博士(工学)。

連載バックナンバー

仮想化/コンテナイベント

KubeCon報告からKubernetes対応版Dockerまで、Docker Meetup Tokyo #20開催

2018/1/30
コンテナーに関する勉強会「Docker Meetup Tokyo #20」が、2017年12月14日に開催された。11月に開催された「Docker Meetup Tokyo #19」に続く回となった。
仮想化/コンテナ

Red Hatが示したOpenShiftの将来とは

2018/1/24
Red Hatが推進するコンテナープラットフォームであるOpenShiftの1dayカンファレンスが開催された。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています