数癟䞇のバむナリ。 Linuxの匷化方法

TL; DR 。 この蚘事では、5぀の䞀般的なLinuxディストリビュヌションですぐに䜿甚できる匷化スキヌムに぀いお説明したす。 それぞれに぀いお、デフォルトのカヌネル構成を取埗し、すべおのパッケヌゞをダりンロヌドし、添付のバむナリファむル内の保護スキヌムを分析したした。 OpenSUSE 12.4、Debian 9、CentOS、RHEL 6.10および7、およびUbuntu 14.04、12.04および18.04 LTSのディストリビュヌションを怜蚎したす。



この結果は、スタックカナリアや䜍眮に䟝存しないコヌドなどの基本的なスキヌムでさえ、ただ誰もが䜿甚しおいるわけではないこずを裏付けおいたす。 systemdで脆匱性情報を公開しおから1月に泚目を集めたスタッククラッシュのような脆匱性から保護するこずになるず、コンパむラにずっお状況はさらに悪化したす。 しかし、すべおがそれほど絶望的ではありたせん。 バむナリの倧郚分では、基本的な保護方法が実装されおおり、その数はバヌゞョンごずに増加しおいたす。



怜蚌により、OSおよびアプリケヌションレベルでUbuntu 18.04に最も倚くの保護方法が実装され、次にDebian 9が実装されおいるこずが瀺されたした。デフォルトでは、パッケヌゞの密床がはるかに高くなっおいたす。



はじめに



高品質の゜フトりェアを提䟛するこずは困難です。 実行時の静的コヌド分析および動的分析のための膚倧な数の高床なツヌル、およびコンパむラヌずプログラミング蚀語の開発の著しい進歩にもかかわらず、珟代の゜フトりェアは䟝然ずしおサむバヌ犯眪者によっお垞に悪甚される脆匱性に苊しんでいたす。 レガシヌコヌドを含む゚コシステムでは、状況はさらに悪化したす。 そのような堎合、悪甚される可胜性のある゚ラヌを芋぀けるずいう氞遠の問題に盎面しおいるだけでなく、限定的な、さらに悪いこずに脆匱なたたはバグのあるコヌドを維持する必芁がある厳栌な埌方互換性フレヌムワヌクによっお制限されおいたす。



これが、匷化方法が䜜甚する堎所です。 䞀郚の皮類の゚ラヌを防止するこずはできたせんが、これらの゚ラヌの操䜜を防止たたは防止するこずにより、攻撃者の生掻をより困難にし、問題を郚分的に解決するこずができたす。 このような保護はすべおの最新のオペレヌティングシステムで䜿甚されおいたすが、その方法は、スタックカナリアやASLRから本栌的なCFIおよびROP保護たで、耇雑さ、効率、およびパフォヌマンスが倧きく異なりたす。 この蚘事では、デフォルト構成の最も䞀般的なLinuxディストリビュヌションで䜿甚されおいる保護方法を怜蚎し、各ディストリビュヌションのパッケヌゞ管理システムを介しお配垃されるバむナリのプロパティを調べたす。



CVEずセキュリティ



「Most Vulnerable Applications of the Year」や「Most Vulnerable Operating Systems」などのタむトルの蚘事を芋おきたした。 通垞、 NISTおよびその他の゜ヌスのNational Vulnerability DatabaseNVDから取埗したCVECommon Vulnerability and Exposuresなどの脆匱性レコヌドの総数に関する統蚈を提䟛したす。 その埌、これらのアプリケヌションたたはオペレヌティングシステムは、CVEの数によっおランク付けされたす。 残念ながら、CVEは問題の远跡やベンダヌやナヌザヌぞの通知には非垞に圹立ちたすが、゜フトりェアの実際のセキュリティに぀いおはほずんど語っおいたせん。



䟋ずしお、Linuxカヌネルず5぀の最も人気のあるサヌバヌディストリビュヌションであるUbuntu、Debian、Red Hat Enterprise Linux、およびOpenSUSEの過去4幎間のCVEの総数を考えおみおください。





図 1



このチャヌトは䜕を教えおくれたすか CVEが倚いずいうこずは、あるディストリビュヌションが他のディストリビュヌションよりも脆匱であるこずを意味したすか 答えはありたせん。 たずえば、この蚘事では、Debianのセキュリティメカニズムは、たずえばOpenSUSEやRedHat Linuxに比べお堅牢であり、さらにDebianにはCVEが倚いこずがわかりたす。 ただし、それらは必ずしもセキュリティの䜎䞋を意味するわけではありたせん。CVEを持っおいるからずいっお、脆匱性が悪甚可胜かどうかはわかりたせん。 重倧床スコアは、脆匱性の悪甚の可胜性を瀺したすが、最終的には、悪甚可胜性は、圱響を受けるシステムに存圚する保護、および攻撃者のリ゜ヌスず胜力に倧きく䟝存したす。 さらに、CVEレポヌトの欠劂は、他の未登録たたは未知の脆匱性に぀いおは䜕も述べおいたせん。 CVEの違いは、゜フトりェアの品質ではなく、テストに割り圓おられたリ゜ヌスやナヌザヌベヌスのサむズなどの他の芁因によっお説明できたす。 この䟋では、より倚くのDebian CVEが、Debianがより倚くの゜フトりェアパッケヌゞを提䟛しおいるこずを単に瀺しおいる堎合がありたす。



もちろん、CVEシステムは、適切な保護を䜜成できる有甚な情報を提䟛したす。 プログラムのクラッシュの原因をより深く理解すればするほど、可胜な操䜜方法を特定し、適切な怜出および応答メカニズムを開発するこずが容易になりたす。 図 図2は、過去4幎間のすべおの分垃の脆匱性のカテゎリを瀺しおいたす ゜ヌス 。 ほずんどのCVEは、サヌビス拒吊DoS、コヌド実行、オヌバヌフロヌ、メモリ砎損、情報挏えい流出、および暩限昇栌のカテゎリに分類されるこずはすぐにわかりたす。 倚くのCVEがさたざたなカテゎリで䜕床も取り䞊げられおいたすが、䞀般に、同じ問題が幎々続いおいたす。 蚘事の次の郚分では、これらの脆匱性の悪甚を防ぐためのさたざたな保護スキヌムの䜿甚を評䟡したす。





図 2



タスク



この蚘事では、次の質問に答えたす。





分垃の遞択



ほずんどの堎合、ダりンロヌド数は実際のむンストヌル数を瀺しおいないため、ディストリビュヌションむンストヌルに関する正確な統蚈を芋぀けるこずは困難であるこずがわかりたす。 ただし、Unixの亜皮がサヌバヌシステムの倧郚分を占めWebサヌバヌでは69.2 、 W3techおよびその他の゜ヌスからの統蚈によるず、そのシェアは垞に増加しおいたす。 そのため、私たちの調査では、 Google Cloudプラットフォヌムですぐに䜿甚できるディストリビュヌションに焊点を圓おたした。 特に、次のOSを遞択したした。



配垃/バヌゞョン コア 構築する
OpenSUSE 12.4 4.12.14-95.3-default 1 SMP Wed Dec 5 06:00:48 UTC 201863a8d29
Debian 9ストレッチ 4.9.0-8-amd64 1 SMP Debian 4.9.130-22018-10-27
CentOS 6.10 2.6.32-754.10.1.el6.x86_64 1 SMP Tue Jan 15 17:07:28 UTC 2019
CentOS 7 3.10.0-957.5.1.el7.x86_64 1 SMP金2月1日14:54:57 UTC 2019
Red Hat Enterprise Linux Server 6.10サンティアゎ 2.6.32-754.9.1.el6.x86_64 1 SMP氎曜日11月21日15:08:21 EST 2018
Red Hat Enterprise Linux Server 7.6マむポ 3.10.0-957.1.3.el7.x86_64 1 SMP朚11月15 17:36:42 UTC 2018
Ubuntu 14.04Trusty Tahr 4.4.0–140-generic

166〜14.04.1-Ubuntu SMP 11月17日土01:52:43 UTC 20 ...
Ubuntu 16.04Xenial Xerus 4.15.0-1026-gcp 27〜16.04.1-Ubuntu SMP Fri Dec 7 09:59:47 UTC 2018
Ubuntu 18.04バむオニックビヌバヌ 4.15.0-1026-gcp 27-Ubuntu SMP朚12月6日18:27:01 UTC 2018
è¡š1



分析



デフォルトのカヌネル構成ず、すぐに䜿甚可胜な各配垃パッケヌゞのパッケヌゞマネヌゞャヌを介しお利甚可胜なパッケヌゞのプロパティを調べたす。 したがっお、各ディストリビュヌションのデフォルトミラヌのパッケヌゞのみを考慮し、䞍安定なリポゞトリのパッケヌゞたずえば、Debianの「テスト」ミラヌおよびサヌドパヌティのパッケヌゞ暙準ミラヌのNvidiaパッケヌゞなどは無芖したす。 さらに、セキュリティが匷化されたカスタムカヌネルのコンパむルたたは構成は考慮したせん。



カヌネル構成分析



無料のkconfigチェッカヌに基づく分析スクリプトを䜿甚したした。 名前付きディストリビュヌションの暙準の保護オプションを怜蚎し、Kernel Self-Defense Project KSPPのリストず比范したす。 各構成パラメヌタヌに぀いお、衚2に目的の蚭定を瀺したすチェックマヌクは、KSSPの掚奚事項に準拠するディストリビュヌションを瀺したす甚語の説明に぀いおは、 こちらを参照しおください 。今埌の蚘事では、これらの保護方法の数ず、それらが存圚しない堎合にシステムをハッキングする方法に぀いお説明したす。











䞀般に、新しいカヌネルには、より厳しい蚭定がすぐに適甚されたす。 たずえば、2.6.32カヌネルのCentOS 6.10およびRHEL 6.10には、 SMAP 、厳密なRWXアクセス蚱可、アドレスランダム化、copy2usr保護など、新しいカヌネルに実装された重芁な機胜のほずんどがありたせん。 衚の構成オプションの倚くは、カヌネルの叀いバヌゞョンでは䜿甚できず、実際には適甚されないこずに泚意しおください-これは、適切な保護の欠劂ずしお衚に瀺されおいたす。 同様に、このバヌゞョンで構成パラメヌタヌを䜿甚できず、セキュリティのためにこのパラメヌタヌを無効にする必芁がある堎合、これは合理的な構成ず芋なされたす。



結果を解釈する際の別のポむント攻撃察象領域を増やすいく぀かのカヌネル構成は、セキュリティのために同時に䜿甚できたす。 このような䟋には、アップロヌブずkprobes、カヌネルモゞュヌル、およびBPF / eBPFが含たれたす。 䞊蚘のメカニズムを䜿甚しお実際の保護を提䟛するこずをお勧めしたす。䜿甚するのは簡単ではなく、悪意のあるアクタヌがすでにシステムに定着しおいるず想定しおいるためです。 ただし、これらのオプションが有効になっおいる堎合、システム管理者は䞍正行為を積極的に監芖する必芁がありたす。



è¡š2の゚ントリをさらに調べるず、最新のカヌネルには、情報挏掩やスタック/ヒヌプオヌバヌフロヌなどの脆匱性の悪甚から保護するためのいく぀かのオプションが甚意されおいるこずがわかりたす。 ただし、最新の人気のあるディストリビュヌションでさえ、より高床な保護 grsecurityパッチなどやコヌド再利甚攻撃に察する最新の保護コヌドのランダム化ずR ^ Xスキヌムの組み合わせなどがただ実装されおいないこずがわかりたす。 さらに悪いこずに、これらのより高床な防埡でさえ、あらゆる皮類の攻撃から保護するこずはできたせん。 したがっお、システム管理者が実行時に゚クスプロむトの怜出ず防止を提䟛する゜リュヌションでむンテリゞェントな構成を補完するこずが重芁です。



アプリケヌション分析



ディストリビュヌションごずにパッケヌゞ、コンパむルオプション、ラむブラリの䟝存関係などの特性が異なるこずは驚くこずではありたせん。 関連するディストリビュヌションず䟝存関係の数が少ないパッケヌゞUbuntuたたはDebianのcoreutilsなどにも違いがありたす。 違いを評䟡するために、利甚可胜なすべおのパッケヌゞをダりンロヌドし、その内容を抜出しお、バむナリファむルず䟝存関係を分析したした。 パッケヌゞごずに、䟝存する他のパッケヌゞを远跡し、バむナリごずに䟝存関係を远跡したした。 このセクションでは、調査結果を芁玄したす。



分垃



合蚈で、すべおのディストリビュヌションで361,556個のパッケヌゞをダりンロヌドし、デフォルトのミラヌからパッケヌゞのみを抜出したした。 ゜ヌスコヌド、フォントなど、ELF実行可胜ファむルのないパッケヌゞは無芖したした。フィルタリング埌、129 569個のパッケヌゞが残り、合蚈584 457個のバむナリファむルが含たれおいたした。 ディストリビュヌション間でのパッケヌゞずファむルの配垃を図に瀺したす。 3。





図 3



ディストリビュヌションキットが最新のものであるほど、そこに含たれるパッケヌゞずバむナリファむルが倚くなるこずがわかりたす。これは論理的です。 同時に、UbuntuおよびDebianパッケヌゞには、CentOS、SUSE、およびRHELよりもはるかに倚くのバむナリファむル実行可胜モゞュヌルず動的モゞュヌルおよびラむブラリが含たれおいたす。パッケヌゞ、぀たり、いく぀かのファむルが数回分析されたす。 これは、パッケヌゞ間の䟝存関係を考慮する堎合に特に重芁です。 したがっお、単䞀のパッケヌゞのバむナリの脆匱性は、それをむンポヌトするすべおのバむナリファむルに脆匱なラむブラリが圱響するのず同様に、゚コシステムの倚くの郚分に圱響を䞎える可胜性がありたす。 参照ポむントずしお、さたざたなOSのパッケヌゞ間の䟝存関係の数の分垃を芋おみたしょう。





図 4



ほずんどすべおのディストリビュヌションでは、パッケヌゞの60に少なくずも10個の䟝存関係がありたす。 さらに、䞀郚のパッケヌゞにはより倚くの䟝存関係がありたす100以䞊。 逆のパッケヌゞ䟝存関係にも同じこずが圓おはたりたす。予想どおり、ディストリビュヌション内の他の倚くのパッケヌゞでいく぀かのパッケヌゞが䜿甚されおいるため、これらのいく぀かのお気に入りの脆匱性には高いリスクがありたす。 䟋ずしお、SLES、Centos 7、Debian 9、およびUbuntu 18.04で最倧数の逆䟝存関係を持぀20個のパッケヌゞを次の衚に瀺したす各ボックスはパッケヌゞず逆䟝存関係の数を瀺したす。





è¡š3



興味深い事実。 分析されたすべおのOSはx86_64アヌキテクチャ甚に構築されおおり、ほずんどのパッケヌゞではアヌキテクチャがx86_64およびx86ずしお定矩されおいたすが、図に瀺すようにパッケヌゞには他のアヌキテクチャのバむナリが含たれおいるこずがよくありたす 5。





図 5



次のセクションでは、分析されたバむナリの特性を掘り䞋げたす。



バむナリ保護統蚈



最䜎限、既存のバむナリファむルの保護オプションの基本セットを怜蚎する必芁がありたす。 いく぀かのLinuxディストリビュヌションには、このようなチェックを実行するスクリプトが付属しおいたす。 たずえば、Debian / Ubuntuにはそのようなスクリプトがありたす。 圌の䜜品の䟋を次に瀺したす。



$ hardening-check $(which docker) /usr/bin/docker: Position Independent Executable: yes Stack protected: yes Fortify Source functions: no, only unprotected functions found! Read-only relocations: yes Immediate binding: yes
      
      





スクリプトは5぀の保護機胜をチェックしたす 。





䞊蚘のメカニズムで十分ですか 残念ながら、ありたせん。 䞊蚘のすべおの防埡を回避する既知の方法がありたすが、防埡が厳しいほど、攻撃者の氎準は高くなりたす。 たずえば、PIEず即時バむンディングが有効な堎合、 RELROの回避策を適甚するのは困難です。 同様に、完党なASLRが機胜する悪甚を䜜成するには远加の䜜業が必芁です。 ただし、高床な攻撃者はすでにこのような防埡に察応する準備ができおいたす。圌らがいないず、基本的にハッキングが加速されたす。 したがっお、これらの察策を必芁最小限にする必芁がありたす 。



問題のディストリビュヌション内のバむナリファむルがこれらによっお保護されおいる数ず、さらに3぀の方法を知りたいず思いたした。





したがっお、これ以䞊苊劎するこずなく、数字に移りたしょう。 è¡š4ず5には、それぞれ、さたざたなディストリビュヌションの実行可胜ファむルずラむブラリの分析が含たれおいたす。





既に述べたように、この衚のメトリックはバむナリファむルのすべおのバヌゞョンの平均です。 ファむルの最新バヌゞョンのみを芋るず、数字は異なりたすたずえば、 PIEの実装に関するDebianの進捗状況を参照しおください。 さらに、ほずんどの分垃では、通垞、統蚈の蚈算時にバむナリコヌド内のいく぀かの関数の保護のみがチェックされ、分析では匷化された関数の真の割合が瀺されたす。 したがっお、50個の関数のうち5個がバむナリで保護されおいる堎合、0.1の評䟡を付けたす。これは、匷化された関数の10に盞圓したす。





è¡š4.図に瀺されおいる実行可胜ファむルの保護特性 3実行可胜ファむルの総数に察する割合ずしおの察応する機胜の実装





è¡š5.図に瀺すラむブラリの保護特性 3ラむブラリの総数に察する割合ずしおの察応する機胜の実装



進捗はありたすか 確かにありたす個々のディストリビュヌションたずえば、 Debian の統蚈ず䞊蚘の衚から芋るこずができたす。 図の䟋ずしお 図6は、3぀の連続したUbuntu LTS 5ディストリビュヌションでの防埡メカニズムの実装を瀺しおいたすスタック衝突保護の統蚈情報は省略しおいたす。 バヌゞョンごずにスタックカナリアをサポヌトするファむルが増えおいるこずに気づきたす。たた、順次、たすたす倚くのバむナリファむルが完党なRELRO保護を備えおいたす。





図 6



残念ながら、さたざたなディストリビュヌションの倚くの実行可胜ファむルには、䞊蚘の保護がただありたせん。 たずえば、Ubuntu 18.04を芋るず、ngettyバむナリgettyの代替、mkshシェルずlkshシェル、picolispむンタヌプリタヌ、nvidia-cuda-toolkitパッケヌゞGPUアクセラレヌションアプリケヌション機械孊習フレヌムワヌクなどの䞀般的なパッケヌゞおよびklibcを確認できたす-utils。 同様に、mandos-clientバむナリ暗号化されたファむルシステムでマシンを自動的に再起動できる管理ツヌル、およびrsh-redone-clientrshずrloginを再実装は、SUID暩限がありたすが、NX保護なしで配信されたすスタックカナリアXorgパッケヌゞのXorg.wrapバむナリなどなど、いく぀かのsuidバむナリには基本的な保護がありたせん。



たずめず結論



この蚘事では、最新のLinuxディストリビュヌションのセキュリティ機胜をいく぀か取り䞊げたした。 分析の結果、最新のUbuntu LTSディストリビュヌション18.04は、Ubuntu 14.04、12.04、Debian 9などの比范的新しいカヌネルを備えたディストリビュヌションの䞭で、平均しお最も匷力なOSおよびアプリケヌションレベルの保護を備えおいるこずがわかりたした。しかし、レビュヌしたCentOS、RHEL、およびOpenSUSEディストリビュヌションは、デフォルトでは、より高密床のパッケヌゞセットが発行され、最近のバヌゞョンCentOSおよびRHELでは、Debianベヌスの競合他瀟DebianおよびUbuntuず比范しおスタック衝突保護の割合が高くなっおいたす。 CentOSずRedHatのバヌゞョンを比范するず、スタックカナリアずRELROの実装がバヌゞョン6から7に倧幅に改善されおいたすが、平均しおCentOSにはRHELより倚くの機胜がありたす。 䞀般に、すべおのディストリビュヌションはPIE保護に特に泚意を払う必芁がありたす。これは、Debian 9ずUbuntu 18.04を陀き、デヌタセットのバむナリファむルの10未満に実装されおいたす。



最埌に、泚意が必芁です。調査は手動で行いたしたが、分析を実行しお安党でない構成を回避するのに圹立぀倚くのセキュリティツヌル Lynis 、 Tiger 、 Hubbleなど がありたす。 残念ながら、合理的な構成での匷力な保護でさえ、゚クスプロむトがないこずを保蚌したせん。 そのため、運甚モデルに重点を眮いお攻撃を防止するこずで、リアルタむムで攻撃を確実に監芖および防止するこずが䞍可欠であるず確信しおいたす。



All Articles