2024.12.10
“放置系”なのにサイバー攻撃を監視・検知、「統合ログ管理ツール」とは 最先端のログ管理体制を実現する方法
Intel MPK入門(全1記事)
リンクをコピー
記事をブックマーク
西村啓佑氏:西村が「Intel MPK入門」というタイトルで発表します。よろしくお願いします。
本日の発表内容です。Intel MPK(Memory Protection Keys)を一言で言うと、プロセス内のメモリアクセスの権限を効率的に制御する仕組みです。従来はPage Tableの設定がすなわちアクセス権限の設定なんですが、MPKはPage Tableを拡張して、新しい方法で権限の制御をすることが可能です。
さらに効率性に関しては、Page Tableの設定はRing 3からはできずにTLBinvalidationとかが発生するんですが、MPKはRing 3にいながらアクセスできる範囲を設定可能です。
ちょっとわかりづらいと思うので、ポンチ絵を用意しました。mprotect()を利用する場合は、システムコールなので必ずコンテキストスイッチが発生します。この図は、オレンジ色のメモリ領域のリード領域を落とそうとしているポンチ絵なんですが、2回コンテキストスイッチが発生しています。
一方、MPKを使う場合は、あらかじめPage TableにPkeyと呼ばれる属性を設定する必要があるんですが、ユーザーランドで実行可能なwrpkruという命令を発行するだけで、先ほどと同じような結果を得られます。このwrpkruは書き換えをする命令なんですが、このPKRUの引数に適切な値を設定することでこのようなことが実現できます。
実際ハードウェアではどう実現されているかですが、主に2つの観点からなっています。
1つ目がPage Tableのエントリの拡張ですね。各Page Tableのエントリは、0から15のいずれかのPkeyを設定できるように拡張されています。これはSDM(Intel® 64 and IA-32 Architectures Software Developer Manuals)から持ってきた図です。この赤い部分がプロテクションキーと呼ばれるところで、ここに0から15のいずれかの値を新しく代入します。
さらにもう1つ、PKRUレジスタというアプリケーションから触れるレジスタで、wrpkru命令で設定できるものがあるんですが、このレジスタに各Pkeyに対するアクセス権限を設定します。現状では16Keyとされています。具体的にどうアクセス権限を設定していくかですが、Page Tableの設定にPKRUの内容を踏まえたものが実際のアクセス権限になります。
この図を見ると、書いているとおりという感じなんですが、注目すべき点はこれです。Page TableにWriteの権限がないんですが、Pkeyで仮にWrite Disableをオフにしていたとしても、実際のアクセス権限にWriteが入ってくることはありません。
また、ちょっとこれはおもしろいポイントなんですが、MPKを用いることで読めないけれど実行はできるという、すごくおもしろいメモリ空間を作れます。これはmprotect()などで内部的に使われているそうです。
次にソフトウェアがどれぐらいサポートされているかを説明します。Linuxでは、基本的に4.9からユーザーが使えるシステムコールが3つ入ってきました。pkey_alloc()、pkey_mprotect()が主に使われる命令ですが、pkey_alloc()はカーネル内部のビットマップ構造体を参照して、1ビット分のpkeyを発行するだけです。
pkey_mprotect()は、Page Tableのプロテクションキーに引数のPkeyをセットします。前後して申し訳ないんですが、このプロテクションキーは上の図ですね。赤で囲ったプロテクションキーに設定します。
また、PKRUを読み書きするwrpkru、rdpkruなどのアセンブリの命令のラッパの関数もglibcから提供されています。アプリケーション的な観点では、JITエンジンの一部やOpenSSLに適用する研究もあるんですが、有名なアプリケーションOSS側で導入されている話は今のところ私は把握していません。
ソフトウェア全体のアーキテクチャに影響を与える機能なので、簡単に導入するのは難しいと思うんですが、JITエンジンやハートブリードとかがあったSSLのライブラリなど、そういったものを導入するモチベーションはあってもいいと思います。
効率性について、先ほど紹介したシステムレイヤ的なサポートにどれぐらいのサイクルがかかるかという情報があったので、ここで紹介します。mprotect()と、この3つを比較すると2回以上アクセス権限を変更する場合、すごくザックリとした見積もりですが、MPKのほうが高速になると言えると思います。
残り時間は、MPKに関する研究を3つだけ紹介したいと思います。1つ目が、ATC(International Conference on Advanced Technologies for Communications)の2019年に発表された「libmpk」という研究です。15ページのペーパーを一言で言うとすると、高機能なMPKのライブラリを作るという研究です。
例えばハードウェアでは、Pkeyの数は16個に制限されているんですが、ソフトウェアレイヤーで仮想化することで、16個以上のPkeyをサポートできます。また、確保したKeyをフリーしたとしてもPage Tableに設定されたpkey_mprotect()の値は変更されません。
変更すると、このシステムコールが発行された時にPage Tableのトラバーサルが発生して、パフォーマンスがけっこう厳しくなるのでPkeyは変更しません。そこでキーのUse-after-freeの攻撃が考えられると思うんですが、そのMitigationをライブラリのレイヤーでやろうというのがこの研究です。
ただこの研究は、「制御が乗っ取られて意図しないwrpkruが実行されないこと」が前提になっています。
一方で、UsenixのSecurity(USENIX Security Symposium)で発表された「ERIM」は、アプリケーションをUntrustedなコンポーネントとtrustedなコンポーネントに分けて、MPKでアイソレーションする研究です。実行可能なページをスキャンすることで、wrpkru命令などの出現を検出して、それをよしなに書き換えることで乗っ取りに対して堅牢になります。
この書き換えの戦略は、ディスアセンブルしてよしなにするという、ちょっとアドホックな感じなんですが、20万個ぐらいのバイナリで試したらほとんど全部動いたということなので、基本的な正確性に関しては問題ないかと思います。
性能に関しては評価が載っているんですが、例えばNGINXの性能だとNativeの95パーセントぐらいが出そうです。もちろんかなりアプリケーションに依存するんですが、このような結果が出ています。ただこれはWriteとExecutionが同居していないことが前提なので、JITエンジンでこれを単純に適用するのは難しいのかなと思います。
もう1つ紹介するのがlibhermitmpkという研究です。これはVEE(Virtual Execution Environments)で2020年に発表された内容なんですが、これもすごくおもしろくて、一言で言うと、Unikernelの内部をMPKでアイソレーションします。ライブラリOSは基本的にシングルアドレススペースというのが売りで、それによってパフォーマンスを得ています。
裏を返すと、セキュリティとのトレードオフがあると言えますが、これはMPKを導入することによって、そのトレードオフをもっと良い点で探そうと考えている研究です。
最後に関連するトピックはこのようなものがあります。例えばソフトウェアベースのSFIもMPKとちょっと似たようなことを達成しようとしている研究です。VM-FUNCというMPKと同時期に流行っているCPUに導入された新しい機能もあります。
今回の発表のまとめです。MPKという効率的にプロセス内のメモリアクセス権限制御をする機能を紹介しました。これはRing 3で動作できて、コンテキストスイッチがいらないので高速です。Linuxなどではサポートされていますが、実際にどれぐらい使われているのかはちょっと不明です。これからの応用や研究や開発に期待したいと思います。こちらが参考文献です。以上です。ありがとうございます。
2024.12.10
メールのラリー回数でわかる「評価されない人」の特徴 職場での評価を下げる行動5選
2024.12.09
10点満点中7点の部下に言うべきこと 部下を育成できない上司の特徴トップ5
2024.12.09
国内の有名ホテルでは、マグロ丼がなんと1杯「24,000円」 「良いものをより安く」を追いすぎた日本にとって値上げが重要な理由
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.12.10
職場であえて「不機嫌」を出したほうがいいタイプ NOと言えない人のための人間関係をラクにするヒント
2024.12.12
会議で発言しやすくなる「心理的安全性」を高めるには ファシリテーションがうまい人の3つの条件
2024.12.06
嫌いな相手の行動が気になって仕方ない… 臨床心理士が教える、人間関係のストレスを軽くする知恵
PR | 2024.11.26
なぜ電話営業はなくならない?その要因は「属人化」 通話内容をデータ化するZoomのクラウドサービス活用術
2024.12.11
大企業への転職前に感じた、「なんか違うかも」の違和感の正体 「親が喜ぶ」「モテそう」ではない、自分の判断基準を持つカギ
PR | 2024.11.22
「闇雲なAI導入」から脱却せよ Zoom・パーソル・THE GUILD幹部が語る、従業員と顧客体験を高めるAI戦略の要諦