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

問い合わせボタン

最新の記事
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 ) 2017年02月22日
Tomcatの脆弱性 ( CVE-2017-6056 ) 2017年02月21日
Katello/Foremanによる運用管理 (Part3) 2017年02月21日
OpenSSLの脆弱性 ( CVE-2017-3733 ) 2017年02月16日
linux kernelの脆弱性( CVE-2017-6001 , (was CVE-2016-6786) ) 2017年02月16日
QEMUの脆弱性( CVE-2017-2630 ) 2017年02月15日
glibcの脆弱性(CVE-2015-8982, CVE-2015-8983, CVE-2015-8984) 2017年02月15日
vimの脆弱性 ( CVE-2017-5953 ) 2017年02月14日
Oracle Javaの脆弱性(Oracle Critical Patch Update Advisory - January 2017) 2017年02月14日
libxml2の脆弱性(CVE-2017-5969) 2017年02月13日
「linux kernel-4.9」でのLSMモジュールについて 2017年02月13日
linux kernelの脆弱性( CVE-2017-5970 ) 2017年02月13日
linux kernelの脆弱性( CVE-2016-8636 ) 2017年02月12日
bind 9 に設定依存の脆弱性 ( CVE-2017-3135 ) 2017年02月09日
bashの自動補完機能の脆弱性( CVE-2017-5932 ) 2017年02月08日
spiceの脆弱性( CVE-2016-9577 , CVE-2016-9578 ) 2017年02月08日
QEMUの脆弱性( CVE-2017-5898 ) 2017年02月08日
linux kernelの脆弱性( CVE-2017-5897 ) 2017年02月08日
linux kernelの脆弱性( CVE-2016-10208 ) 2017年02月06日
ntfs-3gの脆弱性(CVE-2017-0358) 2017年02月02日
QEMUの脆弱性( CVE-2017-2615 ) 2017年02月02日
tcpdumpに複数の脆弱性(CVE-2016-7922 等) 2017年01月30日
libgdに複数の脆弱性情報 (CVE-2016-9317, CVE-2016-6912, CVE-2016-10167, CVE-2016-10168, CVE-2016-10169) 2017年01月29日
OpenSSLに複数の脆弱性 ( CVE-2017-3730 , CVE-2017-3731 , CVE-2017-3732 ) 2017年01月27日
RunCに関しての脆弱性( CVE-2016-9962 )のPoCとSELinuxによるリスクの軽減 2017年01月26日
systemdの重要な脆弱性( CVE-2016-10156 ) 2017年01月25日
linux kernelの複数の脆弱性( CVE-2016-10153, CVE-2016-10154, CVE-2017-5547, CVE-2017-5548, CVE-2017-5549, CVE-2017-5550, CVE-2017-5551) 2017年01月25日
Katello/Foremanによる運用管理 (Part2) 2017年01月24日
linux kernel(KVMを有効にしている場合)で複数の脆弱性( CVE-2016-10150, CVE-2017-2583 ) 2017年01月21日
OpenSCAP 1.2.13のリリース情報 2017年01月16日
Oracle Javaの脆弱性(CVE-2016-5542, CVE-2016-5554, CVE-2016-5582, CVE-2016-5597, CVE-2016-5573) 2017年01月13日
bind に複数の脆弱性 ( CVE-2016-9131 , CVE-2016-9147 , CVE-2016-9444 , CVE-2016-9778 ) 2017年01月12日
Dockerに特権昇格の脆弱性 ( CVE-2016-9962 ) 2017年01月11日
GnuTLS の 脆弱性 (GNUTLS-SA-2017-1 : CVE-2017-5334 , GNUTLS-SA-2017-2 : CVE-2017-5335 , CVE-2017-5336 , CVE-2017-5337 ) 2017年01月11日
OpenSSLの脆弱性(CVE-2016-7056 ) 2017年01月11日
Apache HadoopのYARN NodeManagerの脆弱性 ( CVE-2016-3086 ) 2017年01月11日
KDE Arkによる意図しないファイル実行の可能性 ( CVE-2017-5330 ) 2017年01月11日
Katello/Foremanによる運用管理 (Part1) 2017年01月10日
Libtiff に複数の脆弱性 ( CVE-2016-10092 , CVE-2016-10093 , CVE-2016-10094 , CVE-2016-10095 ) 2017年01月02日
PHPMailerの脆弱性( CVE-2016-10033 , CVE-2016-10045 ) 2016年12月28日
eximの脆弱性情報 ( CVE-2016-9963) 2016年12月25日
Xenの複数の脆弱性 ( XSA-202: CVE-2016-10024 , XSA-203: CVE-2016-10025 , XSA-204: CVE-2016-10013) 2016年12月22日
MySQLの脆弱性情報(CVE-2016-6663)のPoCとSELinux 2016年12月21日
Apache 2.4.25のリリースと複数の脆弱性情報(CVE-2016-0736 , CVE-2016-2161 , CVE-2016-5387 , CVE-2016-8740 , CVE-2016-8743 ) 2016年12月21日
OpenSSHに複数の脆弱性 ( CVE-2016-10009 , CVE-2016-10010 , CVE-2016-10011 , CVE-2016-10012 ) 2016年12月20日
squidの脆弱性情報 ( CVE-2016-10002 , CVE-2016-10003 ) 2016年12月19日
Xenの脆弱性 ( XSA-200: CVE-2016-9932 ) 2016年12月15日
tomcatに情報漏えいの脆弱性( CVE-2016-8745 ) 2016年12月12日
linux kernelの脆弱性( CVE-2016-9576 ) 2016年12月09日
linux kernelの脆弱性( CVE-2016-8655 ) 2016年12月06日
Linuxでの効果的なAntivirus の設定と運用 (第三部 効果的な運用例) 2016年12月06日
KVMでout-of-boundsメモリアクセスの脆弱性(CVE-2016-9777) 2016年12月03日
QEMUの脆弱性( CVE-2016-9776 ) 2016年12月03日
linux kernelの脆弱性( CVE-2016-8650 ) 2016年11月25日
Xenに複数の脆弱性( XSA-191 / XSA-192 / XSA- 193 / XSA-194 / XSA-195 / XSA-196 / XSA- 197 / XSA-198 ) 2016年11月23日
vim/neovimに任意のコード実行の可能性 ( CVE-2016-1248 ) 2016年11月23日
最新の記事 - もっと...