現在位置: ホーム / セキュリティ ブログ / 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)

問い合わせボタン

最新の記事
YARAの脆弱性( CVE-2017-8294 ) 2017年04月29日
linux kernelの脆弱性( CVE-2017-7895 ) 2017年04月29日
linux kernelの脆弱性( CVE-2017-7477 ) 2017年04月25日
linux kernelの脆弱性( CVE-2017-8106 ) 2017年04月25日
MySQLの脆弱性情報(Oracle Critical Patch Update Advisory April) 2017年04月24日
QEMUの脆弱性( CVE-2017-7980 ) 2017年04月24日
Oracle Javaの脆弱性(Oracle Critical Patch Update Advisory - April 2017) 2017年04月22日
Nessusの脆弱性(CVE-2017-7849, CVE-2017-7850) 2017年04月20日
OpenIDMに複数の脆弱性情報(CVE-2017-7589, CVE-2017-7590, CVE-2017-7591) 2017年04月19日
linux kernelの脆弱性( CVE-2017-7645 ) 2017年04月19日
LightDMに特権昇格の脆弱性 (CVE-2017-7358 ) 2017年04月19日
linux kernelの脆弱性( CVE-2017-7889 ) 2017年04月17日
GnuTLS の 脆弱性 (GNUTLS-SA-2017-3 : CVE-2017-7869 ) 2017年04月14日
wiresharkに複数の脆弱性(CVE-2017-7700, CVE-2017-7701, CVE-2017-7702, CVE-2017-7703, CVE-2017-7704, CVE-2017-7705, CVE-2017-7745, CVE-2017-7746, CVE-2017-7747, CVE-2017-7748 ) 2017年04月14日
linux kernelの脆弱性( CVE-2017-2618 ) 2017年04月14日
bind 9 に複数の脆弱性 ( CVE-2017-3136 , CVE-2017-3137 , CVE-2017-3138 ) 2017年04月13日
linux kernelの脆弱性( CVE-2017-7616, CVE-2017-7618 ) 2017年04月11日
Tomcatに複数の脆弱性 ( CVE-2017-5647, CVE-2017-5648, CVE-2017-5650, CVE-2017-5651 ) 2017年04月11日
linux kernelの脆弱性( CVE-2017-7286, CVE-2017-7319 ) 2017年04月11日
binutilsの脆弱性( CVE-2017-7614 ) 2017年04月10日
elfutilsに複数の脆弱性(CVE-2017-7607, CVE-2017-7608, CVE-2017-7609, CVE-2017-7610, CVE-2017-7611, CVE-2017-7612, CVE-2017-7613 ) 2017年04月10日
linux kernelの脆弱性( CVE-2017-2671 ) 2017年04月05日
Xenの脆弱性 ( XSA-212: CVE-2017-7228 ) 2017年04月05日
linux kernelの脆弱性( CVE-2016-10229 ) 2017年04月04日
linux kernelの脆弱性( CVE-2017-7374 ) 2017年04月01日
linux kernelの脆弱性( CVE-2017-2647 ) 2017年04月01日
linux kernelの脆弱性( CVE-2017-7308 ) 2017年03月30日
curlの脆弱性 ( CVE-2017-2628 ) 2017年03月30日
linux kernelの脆弱性( CVE-2017-7277 ) 2017年03月29日
ntpに複数の脆弱性(CVE-2017-6451, CVE-2017-6452, CVE-2017-6455, CVE-2017-6458, CVE-2017-6459, CVE-2017-6460, CVE-2017-6462, CVE-2017-6463, CVE-2017-6464 ) 2017年03月28日
linux kernelの脆弱性( CVE-2017-7273 ) 2017年03月28日
AppArmorの脆弱性( CVE-2017-6507 ) 2017年03月26日
linux kernelの脆弱性( CVE-2017-7261 ) 2017年03月25日
Sambaに共有以外のファイルにアクセスされる脆弱性(CVE-2017-2619) 2017年03月24日
Subscription-managerの脆弱性( CVE-2017-2663 ) 2017年03月22日
binutilsに複数の脆弱性( CVE-2017-6965, CVE-2017-6966, CVE-2017-6969, CVE-2017-7209 , CVE-2017-7210 , CVE-2017-7223, CVE-2017-7224, CVE-2017-7225, CVE-2017-7226, CVE-2017-7227 ) 2017年03月22日
linux kernelの脆弱性( CVE-2017-7187 ) 2017年03月21日
linux kernelの脆弱性( CVE-2017-6353 , CVE-2017-5986 ) 2017年03月21日
kernelの脆弱性( CVE-2017-7184 ) 2017年03月20日
pcreの脆弱性( CVE-2017-7186 ) 2017年03月20日
binutilsの脆弱性( CVE-2017-6965 , CVE-2017-6966 , CVE-2017-6969 ) 2017年03月19日
MySQL(MariaDB) 5.5/5.6のmysql clientの脆弱性( Riddle : CVE-2017-3305 ) 2017年03月18日
linux kernelの脆弱性( CVE-2017-6951 ) 2017年03月17日
Apache Struts2の脆弱性 ( CVE-2017-5638 ) 2017年03月15日
linux kernelの脆弱性( CVE-2017-6874 ) 2017年03月15日
tomcatに情報漏えいの脆弱性( CVE-2016-8747 ) 2017年03月14日
QEMUの脆弱性( CVE-2016-9603 ) (Xen: XSA-211) 2017年03月14日
lxcの脆弱性(CVE-2017-5985) 2017年03月10日
wgetの脆弱性(CVE-2017-6508) 2017年03月08日
linux kernelに特権昇格の脆弱性( CVE-2017-2636 ) 2017年03月08日
( PoC ) linux kernel特権昇格脆弱性( CVE-2017-6074 ) の暫定回避策の確認 2017年03月06日
linux kernelの脆弱性( CVE-2016-9083 , CVE-2016-9084 ) 2017年03月03日
linux kernelに複数の脆弱性( CVE-2017-6345 , CVE-2017-6346 , CVE-2017-6347 , CVE-2017-6348 ) 2017年03月01日
Katello/Foremanによる運用管理 (Part4) 2017年02月28日
util-linux / coreutils の脆弱性(CVE-2017-2616) 2017年02月24日
linux kernelの脆弱性( CVE-2017-6214 ) 2017年02月24日
linux kernelに特権昇格の脆弱性( CVE-2017-6074 ) 2017年02月23日
curlの脆弱性 ( CVE-2017-2629 ) 2017年02月22日
QEMUの脆弱性( CVE-2017-2620 ) (Xen: XSA-209) 2017年02月22日
Tomcatの脆弱性 ( CVE-2017-6056 ) 2017年02月21日
最新の記事 - もっと...