2018」が開催されました。2018」が開催されました。2018は、主にLinuxのカーネル周りのセキュリティについて新しい機構の提案や既存の機構のアップデート情報を発表し、会場に集まった専門家たちと情報交換や意見をもらう場となっています(今回は220名が参加)。2018に参加したので(2日目は午前中のセッションのみ)、各セッションをダイジェストで紹介します。発表に使用された資料は下記のURLからダウンロードできます。Carter氏がより、RTOS用途の組み込み系OSに関するセキュリティとして「Zephyr」と「Fuchsia」でのセキュリティ実装に関して解説されました。Foundationがスポンサーとなり開発が行われているIoTデバイス用のRTOSです。このようなOSは一般的なサーバ/ユーザ向けのOSとは異なり、リソースが極端に限られていることや実行速度が厳格に求められること、またマルチユーザの必要性がないことから、下記のような違いがあります。全てのスレッドは特権で動作しているメモリ保護機能もメモリ仮想化もないとにかくフットプリントやオーバーヘッドを気にしているセキュリティに関しては起動後にアプリケーションを入れたり大きく変更したりすることがないため、出荷前の開発時のセキュリティや静的解析によるコード検査、暗号化、セキュアなアップデートの方法等がターゲットとなっているこのようなRTOSはボード開発と密接に関係して行われることが多く、今回のZephyrも開発者のほとんどがIntelやLinaro、Synopsys等から来ているそうです。等を紹介していました。FuchsiaはGoogleで開発されているLinuxではない新しいOSです。一時期FuchsiaがGitHubに公開されたため、Googleで以降のメインOSになるのではと噂されていました。Fuchsiaでは、セキュリティを実現する要素としてケーパビリティネームスペースサンドボックスが使われています。今回は「Fuchsiaが今後どのように扱われるか」というような情報は特にありませんでしたが、Fuchsiaで今まで扱われていたケーパビリティベースのセキュリティ以外に、今後SELinuxのようなMACを搭載していく予定であるとの話がありました。KernelをC言語の観点からより安全にしていく取り組みが紹介されました。Kernelにはたびたび脆弱性が見つかっています。Variable”)に関してはgccのオプションとして”-finit-local-vars”を加えてWarningを出すようにするswitch~caseでローカル変数の初期化が呼ばれないケースではwarningを出す等を行って、C言語の使用方法から来る危険を減らしていく取り組みが紹介されました。Kernelでの進捗度合いが示されました。Sphereと呼ばれるMSのMCU(組み込み用のマイクロプロセッサー)を軸としたIoTソリューションのセキュリティが紹介されました。Kernelで、同時にメインラインにもたくさんのコミットをしているようです。KernelのサイズをIoTデバイス(最大で4MBのRAMを装備)に合わせるため、不要な部分をカットしたり様々な努力をしたりしているようです。Kernelのサイズをコンパクトにまとめるため、セキュリティ実装でもかなり気を使っているそうです。パーミッションを直接staticなものとしてファイルシステムに定義したり、LSMを使うとサイズが大きすぎるため「AppID」「NetworkID」「ケーパビリティ」を定義したセキュリティモデルを新たに作って実装したりしているようです。ユーザランドはアプリケーションを個々に切り分け、それぞれのアプリケーションで独自にファイルシステムを持てるコンテナのような形になっており、アップデートも個別にできるよう設計されているそうです。Surface)が減っていく」ことです。これはセキュリティの世界では一般常識ですが、今回Microsoftによって改めて言われることで、より多くの方々に認識を新たにしてもらいたいところです。Biggers氏が「fs-verity」について解説しました。2017でARM社のプレゼンに使用されたAndroid上での“DM-verity(パーティションの4kブロックごとのハッシュからハッシュツリーを形成してシステムの改変を検知する機構)”をファイルシステムに発展させ、ファイルの改変を検知・防止しようという機能です。今後はこの機能をIMAと連携してチップセットの暗号化鍵を使用したり、対応するファイルシステムを増やしたりすることを考えているようです。会場からは「パフォーマンスの劣化がどの程度なのかが気になる」という意見が出ていました。Kelly氏らによるパネルディスカッションが行われました。Integration)について紹介しました。Surface)を削減していることから、それほど多くないということです。Spaceからくる攻撃表面はどんどん小さくなっています。Space以外の攻撃元としてFirmware等による入り口やUSB等があり、根本の原因は境界チェックの漏れや整数オーバーフロー等が挙げられます。メモリの境界外読み込み・書き込み・アクセスなどもKernelの脆弱性としてよく出てきます。用いてカーネル中の関節分岐や関節呼び出しの飛び先とリターンアドレスを検証することで、コード再利用攻撃に対抗しようとしています。実際、間接呼び出しの数も55%が5以下の許可されたターゲットを持ち、7%が100以上の許可されたターゲットを持っているので、一定の効果はありそうです。デバイスは、今年の年末までには出るようです。Auditの開発について解説しました。AuditはKernelに組み込まれたロギング機能で、通常はSELinuxやそのほかのLSMからログを出力させるために使用されます。ファイルやディレクトリを指定し、そこへの書き込みなどのシステムコールが発生した時にログへ出力できるため、システム監査等にも用いられます。2016で既に指摘されていた)。そのため、各コンテナでAuditログを取れるようなパッチセットがいくつかコミットされています。ここではそれらの取り組みが紹介されました。Kernelの脆弱性動向について解説しました。Platform」としての扱いも検討されています。Kernelの脆弱性が日々見つかっており、2017年に公開された453のCVEのうち169がコード実行/125が特権昇格・情報漏えいだったようです。「カウント対象となっていない」オフィシャルのバグは多く、2017年には4100のオフィシャルのバグフィックスが行われています。Platformとしては、それらもメンテしなくてはならないことから、非常に厄介な状態になっています。修正をバックポートしたいとき、ある関数に問題があったとしても、その関数が過去バージョンにない(単にないだけではなく、あちこちに点在していただけ)場合には修正が非常に難しくなります。多くのカーネル開発者は「最新の機能」の開発が好きなため、バックポートという地味(しかし重要)な作業は手が足りない状態になっています。これらの問題に対し、Googleでは「バグ検知」「バグ検査」「テストの自動化」というカテゴリでそれぞれツール類を作っています。Boundsなどを発見できる。Kernelに組み込まれており、(CONFIG_KASAN=y)のオプションで選択できる。attackなどを発見できる。現在はまだKernelに組み込まれていないが、いずれ組み込まれる予定。KTSAN(KernelThreadSanitizer)データの競合状態などをチェックしてTOCTOU(time-of-check-time-of-use)やdouble-free等の脆弱性を発見できる。開発中でgithubにプロトタイプがある。バグ検査:syzkallerシステムコールのファジングツール。コードカバレッジを見ながら様々に入力値を変えてくれるテストツールです。VM(デフォルトではqemuからKVMを立ち上げる)を用いてテストを自動的に行う(帰国後にUbuntuマシンに因子ストールしたところ、すんなりと動作した)。自動テスト:syzbotKernel/syzkallerのバージョンを自動的に更新し、自動的にテストするツールです。テストマシンの管理やバグのレポートなども可能です。「これらのテストツールを実行してバグを見つけることと、バグの修正をStableバージョンでも行うために、開発者の皆様の力が必要です」としてセッションは終了しました。Popov氏によるSTACKLEAKの紹介です。STACKLEAKはGrsecurity/PAXで開発されたセキュリティ機構で、システムコールの最後にカーネルスタックを消し、脆弱性を悪用された場合でもカーネルスタックの情報を攻撃者に悪用されないための仕組みです。STACKLEAKを使用した場合と使用してない場合の差は下図のようになります。システムコールを利用して、初期化されていないカーネルスレッドスタックから重要なデータを取得できる脆弱性は往々にして見られます。ここではCVE-2010-2963がサンプルとして出されています。STACKLEAKを使用するとシステムコールの最後でstackleak_erased()によりカーネルスレッドスタック中のデータが“0x1337”から“-0xBEEF”に書き換えられ、ユーザスペースから初期化されていない値を拾ってきます。この値はカーネルスペースで使われていないため、脆弱性により情報が漏えいすることはありません。本セッションでは、STACKLEAKの機能をメインラインカーネルに入れるまでの道のり(特にLinusとの絡み)の部分が(笑いも含めて)語られました。Linusは「きつい口調で」「パッチを送っても無反応で」「たぶん、カーネルハードニングプロジェクトの事をデフォルトで嫌ってるんじゃないか?」といった話と「モチベーションが最低になったけど、奥さんに励まされて何とか回復した」という話が笑いとジョーク交じりで話されました。Kernelコミュニティである」「無視されない様に、どんどんコントリビュートしてくべきだ」という話でまとめられました。Salaün氏によるLandlockの解説です。今回のセッションではLandlockの機能説明とデモ、現在のステータス(LKMLへのパッチの投稿など)の話がありました。2017レポートで解説したので割愛します。Landlockはカーネルに入ってくる可能性が高いセキュリティ機構なので、引き続き注目しておいた方が良いと思われます。Securityのサブシステムアップデート情報です。AppArmorです。AppArmorにはあまりアップデート情報がありませんでしたが、Debianの話題と「ロゴが新しくなった」という話題が取り上げられていました。Moore氏によるSELinuxのアップデート情報です。最初に「SELinuxももう18歳。Androidに搭載されて5年になった」と話がありました。Project”に置かれるようになったことでしょう。これにより、SELinuxの開発はGitHubの情報だけを見れば良くなりました。Schaufler氏によるSmackの更新情報です。LinuxやYocto等で使われています。Smackは、もともとシンプルにデザインされ、現在ではもう枯れたものとして新機能は特にありませんでしたが(これはセッション中のネタにもなっている)、OverlayFSのサポートが新機能として挙げられていました。Integrity(IMA)のアップデート情報を紹介しました。IMAも枯れたものになるため目立った更新情報はありませんでしたが、諸所の機能更新やevmtestなどテストフレームワークなどの情報が出されました。Project(KSPP)の更新情報を紹介しました。KSPPの進みは遅いものの着実に開発が行われていることから、カメに例えて解説されていました。Bypassが修正されています。4.19ではL1TFも修正される予定です。その他にも、まだ組み込まれていない機能が用意されているとのことです。OSについて解説しました。OSはデスクトップをターゲットとしたセキュリティの実装です。仮想ゲスト(通常はXen)を用いて各アプリケーションをそれぞれのドメインのVMで立ち上げ、ドメイン間をアクセス制御することで、ユーザがあるアプリケーションで不用意に変なコードを実行したとしても、他のアプリケーションに影響を与えないようにするものです。筆者が2010年にIPAの研究会で取り上げたもので、歴史的にはかなり枯れた部類のデスクトップOSです。OSの機能概要を解説し、2018年での状況とXen以外のVM(KVM等)のサポートを視野に入れていると話がありました。KernelでSELinuxのStrictポリシーにより、かなりきつめのアクセス制御が掛けられています。このCOPPERHEADは非常にセキュアな作りとなっていますが、反面、アプリケーションを動かすと頻繁に下記のようなエラーを見ることになります。COPPERHEADは5月前後に色々開発元でゴタゴタがあり、現在は旧バージョンのイメージがメンテされない状態になっています。これから使う場合には、新バージョンをインストールする必要があるようです。SystemのTPMとセキュアブートについて解説しました。POWER9のBOOTフロー、FirmwareセキュアブートとOSセキュアブートのフローが紹介されました。NVRAM(不揮発性メモリ)で保護されているキーを使用してセキュアブートを行っているという実装面の話が紹介されていました。まとめ今回は2日目の午前中までしか参加できませんでしたが、午後にも非常に興味深いセッションが用意されていました。各セッションの内容は発表資料やYoutubeの解説動画によりある程度は掴めると思います。2018に参加して感じたのは、やはり日本人の参加が圧倒的に少ない(数人見かけたアジア系の方々も中国系だった)ことです。これは特に「Linuxのセキュリティ実装部分で日本人が本家のコミュニティに貢献できていないのでは」という心配に繋がっています。今回参加しただけでも、かなりのプロジェクトで参加者を募っていたので、もし興味がある分野があれば積極的に参加してみてはいかがでしょうか。OSS/セキュリティエバンジェリストOSSのセキュリティ専門家として20年近くの経験があり、主にOS系のセキュリティに関しての執筆や講演を行う。大手ベンダや外資系、ユーザ企業などで様々な立場を経験。2015年からサイオステクノロジーのOSS/セキュリティエバンジェリストとして活躍し、同社でSIOSセキュリティブログ(http://security.sios.com)を連載中。20/20にて、自社のトラブルを引き合いに信用が大切ということを示す異例のキーノートが行われた。20/20が、ラスベガスで開催された。銀行の未来からクリプトカレンシー、サイバーセキュリティ、人工知能まで多彩なセッションが開催された。ITでは、より付加価値の高いコンテンツを会員サービスとして提供しています。ITのWebサイトにログインすることでさまざまな限定特典を入手できるようになります。IT会員サービスの概要とメリットをチェック他にもこの記事が読まれていますフリーランス/起業イベントスキルアップ、キャリアアップ、自分らしい働き方を実現。AKIBA」がこれからの挑戦者に伝えること2020/1/9フリーランス/起業イベントこれからの新しい働き方に備え、1%の新しい行動を始めよう。誠にありがとうございます。下記日程にて、メンテナンスを行います。ご理解いただけますよう、お願い申し上げます。状況により前後する場合がございます。※上記以外の会員機能(サイトへのログインなど)はご利用いただけます。VeloCloudが選ばれる理由SD-WANとはなにか。Linuxエンジニア育成への思いF5とNGINXの組み合わせで、サービス公開をよりセキュアに。ITがお届けするポッドキャストです。