現在位置: ホーム / セキュリティ ブログ / RunCに関しての脆弱性( CVE-2016-9962 )のPoCとSELinuxによるリスクの軽減

RunCに関しての脆弱性( CVE-2016-9962 )のPoCとSELinuxによるリスクの軽減

RunCに関しての脆弱性( CVE-2016-9962 )のPoCと、SELinuxによってシステムのリスクがどの程度軽減できるかを検証しています。具体的な検証記事は、他サイトの紹介になります。

セミナー情報

event_2017_02_08


こんにちは。SIOS OSSエバンジェリスト/セキュリティ担当の面です。

01/11/2017に、RunCに関しての脆弱性情報 ( CVE-2016-9962 )が出ましたが、この脆弱性を緩和するためにSELinuxが使用できるのではないかという話がこちらのサイトに出ていました。これに関してのPoCとSELinuxでどの程度守れるかについてを実際に行った記事が有りますので紹介します。



PoC記事のサイト

PoC初回(SELinuxで防げないと思われた回): http://www.secureoss.jp/post/omok-selinux-docker-20170118/

PoC二回目(SELinuxで防げた回): http://www.secureoss.jp/post/omok-selinux-docker-20170123/

CVE-2016-9962の説明

今回のCVE-2016-9962の問題を簡単に説明すると、runcでコンテナXを動かした時に、別のターミナルで"runc exec X sh"すると、その起動するタイミングでベースOSのファイルにアクセスできちゃうという問題になります。

実際にはrunc execのタイミングで行わなければならないのでハードルがそこそこ高いです。また、別のプロセスの情報を読まなくてはならないため、CAP_SYS_PTRACEのケーパビリティをコンテナに与える必要が有りますので、これも現実にはハードルになります。

PoC

PoCの方法はリンク先の最初のブログ記事に載っています(英語ですがわかりやすいと思います)。

具体的には

  • PoCのため"runc exec X sh"がすぐに完了しないようにruncのソースを書き換えて待ち時間をわざと作る。

  • コンテナにCAP_SYS_PTRACEを与えて起動するようにする。

  • ターミナルを"runc run X"で最初に起動する。

  • 別のターミナルで"runc exec X sh"を実行する

  • 最初のターミナルで"runc exec"の情報をたどるとホストOSのファイルにたどり着ける

  • これらホストOSの情報を見たり触ったりすることで危険です!!

というものになります。

PoC結果とSELinuxの効力

第一回目のブログを見ていただいてわかる通り、PoC自体は成功してホストOSの情報が読める状態になっていました。当初はSELinuxの効力が発揮されてないように見受けられました。

その後、SELinuxの本家MLなどで話をして、runcのSELinuxポリシ自体がPoCのような状況(ターミナルから直接runcを実行する状況)は考慮しておらず、systemdなどで起動する一般のやり方を対象にポリシが書かれていることがわかりました。

そのため、第二回目ではSELinuxのポリシを追加し、PoC専用で、ターミナルからruncを直接実行する場合でもSELinuxの支配を受けるようにしました。

結果として、SELinuxのポリシをPoC専用に追加した場合には、SELinuxの支配下になるため、ホストOSの重要なファイルにアクセスできない(lsなどの結果すら出力されない)状態になるという事がわかりました。

まとめ

今回のPoCで、SELinuxを有効にした場合であれば、runcの脆弱性を利用された場合でも、重要なファイルへのアクセスが出来ないため、悪用される度合いを軽減できることがわかりました。

これを参考に、皆様の環境のLinuxサーバでもSELinuxを有効にして頂ければと思います。特にDockerやコンテナ環境では、セキュリティを担保するためにSELinuxは有効な手段になります。

OSSに関するお困りごとは サイオス OSSよろず相談室まで

サイオスOSSよろず相談室 では、OSSを利用する中で発生する問題に対し、長年培ってきた技術力・サポート力をもって企業のOSS活用を強力に支援します。Red Hat Enterprise Linux のほか、CentOS をご利用されている環境でのサポートも提供いたします。

OSSよろず相談室

サイオスOSSよろず相談室(2)

問い合わせボタン

最新の記事
Apache httpd に複数の脆弱性 ( CVE-2017-3167, CVE-2017-3169, CVE-2017-7659, CVE-2017-7668, CVE-2017-7679 ) 2017年06月20日
Apache mod_http2の脆弱性 ( CVE-2017-7659 ) 2017年06月20日
linux kernelにStack Guard Page迂回の脆弱性( CVE-2017-1000364 ) 2017年06月20日
glibcにStack Guard Page迂回の脆弱性(CVE-2017-1000366) 2017年06月20日
GnuTLS の 脆弱性 (GNUTLS-SA-2017-4 : CVE-2017-7507 ) 2017年06月17日
bind 9 に緊急を含む複数の脆弱性 ( CVE-2017-3140 , CVE-2017-3141 ) 2017年06月15日
linux kernelの脆弱性( CVE-2017-1000380 ) 2017年06月14日
libgcryptの脆弱性( CVE-2017-9526 ) 2017年06月12日
cronの脆弱性(CVE-2017-9525) 2017年06月11日
SambaにDoSの脆弱性(CVE-2017-9461) 2017年06月07日
Tomcatの脆弱性 ( CVE-2017-5664 ) 2017年06月07日
sudoに任意のコマンド実行と情報漏えいの脆弱性( CVE-2017-1000368 ) 2017年06月06日
wiresharkに複数の脆弱性(CVE-2017-9343, CVE-2017-9344, CVE-2017-9345, CVE-2017-9346, CVE-2017-9347, CVE-2017-9348, CVE-2017-9349, CVE-2017-9350, CVE-2017-9351, CVE-2017-9352, CVE-2017-9353, CVE-2017-9354 ) 2017年06月03日
Xenの複数の脆弱性 (XSA-213: CVE-2017-8903 / XSA-214: CVE-2017-8904 / XSA-215: CVE-2017-8905) 2017年06月03日
Keycloak Node.js adapterの脆弱性( CVE-2017-7474 ) 2017年06月02日
FreeRADIUSの脆弱性 ( CVE-2017-9148 ) 2017年06月01日
OpenLDAPの脆弱性 ( CVE-2017-9287 ) 2017年05月31日
sudoに完全な特権昇格の脆弱性( CVE-2017-1000367 ) 2017年05月31日
linux kernelの脆弱性( CVE-2017-9242 ) 2017年05月27日
Zabbixの脆弱性( CVE-2017-2824 ) 2017年05月27日
最新の記事 - もっと...