Vulners.comによるLinux脆弱性監査

脆弱性は、セキュリティコンテンツの検索エンジンとして考案されました。脆弱性、セキュリティ情報、エクスプロイト、プラグイン、検出器、その他の有用な情報です。 しかし、私たちは考えました:すでに主要なLinuxディストリビューションのセキュリティ情報を解析している場合、システムに関するデータを取得し、出力で脆弱性のリストを提供するサービスを作成してみませんか。 また、通常の脆弱性スキャナーが行うように、より高速で無料です。









Linuxの脆弱性に関する情報はどこで入手できますか? このため、ベンダーの速報を解析します。 Debian DSA-3638セキュリティ速報を例として使用して、解析プロセスを示します。



ベンダーページの初期情報:



https://security-tracker.debian.org/tracker/DSA-3638-1









ソースパッケージcurlはオペレーティングシステムバージョンjessieで脆弱であり、この脆弱性はパッケージバージョン7.38.0-4 + deb8u4で修正されていることがわかります。 しかし、この情報は脆弱性を正しく判断するには不十分です。 この場合のcurlはソースパッケージです。つまり、バイナリパッケージはそのベースに基づいて収集されます。 したがって、curlパッケージからコンパイルされたすべてのバイナリパッケージを見つける必要があります。



packages.debian.org/source/jessie/curl









その結果、バージョン7.38.0-4 + deb8u4の下にリストされているすべてのパッケージに脆弱性があると考えています。



https://vulners.com/api/v3/search/id?id=DSA-3638



{ "result": "OK", "data": { "documents": { "DSA-3638": { "objectVersion": "1.0", "modified": "2016-08-03T00:00:00", "affectedPackage": [ { "packageName": "libcurl3-nss", "packageVersion": "7.38.0-4+deb8u4", "packageFilename": "libcurl3-nss_7.38.0-4+deb8u4_all.deb", "arch": "all", "operator": "lt", "OSVersion": "8", "OS": "Debian GNU/Linux" }, { "packageName": "curl", "packageVersion": "7.38.0-4+deb8u4", "packageFilename": "curl_7.38.0-4+deb8u4_all.deb", "arch": "all", "operator": "lt", "OSVersion": "8", "OS": "Debian GNU/Linux" ...
      
      





監査はどのように機能しますか? まず、パッケージとOSに関する情報を収集してサーバーに送信する必要があります。 OSバージョンは、ファイル/ etc / os-release、/ etc / centos-release、および特定のオペレーティングシステムに固有のその他のファイルに含まれています。 rpmベースのシステムのインストール済みパッケージに関する情報源として、標準のrpm -qaコマンドで十分です。 debベースのシステムの場合、コマンドの出力はより複雑です-dpkg-query -W -f = '$ {Package} $ {Version} $ {Architecture} \ n'



応答として、サーバーは見つかった脆弱性に関する情報を返します。 計算は非常に高速です。 750個のパッケージを160msで処理します サーバーで何らかの魔法が起こっていると思うかもしれません。 しかし、これはそうではなく、すべてが実際には非常に単純であるため、実際にはすべての脆弱性スキャナーが機能します。



パッケージを検討してください-Debian Linux用curl 7.38.0-4 + deb8u3 amd64。 パッケージ名はcurlです。 脆弱なパッケージのリストの中でこのパッケージを含むすべてのニュースレターをシステムで探します。 そのようなすべての投票が見つかったら、それぞれを調べて、affectedPackageフィールドにリストされている条件の少なくとも1つが満たされているかどうかを確認する必要があります。 DSA-3638パッケージを例として取り上げます。



 { "OS": "Debian GNU/Linux", "operator": "lt", "packageFilename": "libcurl3-nss_7.38.0-4+deb8u4_all.deb", "OSVersion": "8", "packageVersion": "7.38.0-4+deb8u4", "packageName": "libcurl3-nss", "arch": "all" }
      
      





次の場合に脆弱性が存在することを示します。



-オペレーティングシステム-Debian GNU / Linux(「OS」:「Debian GNU / Linux」)

-このオペレーティングシステムのバージョンは8です(「OSVersion」:「8」)

-libcurl3-nssという名前のパッケージがインストールされます( "packageName": "libcurl3-nss")

-脆弱なパッケージアーキテクチャ-任意

-このパッケージのバージョンは7.38.0-4 + deb8u4未満です(「operator」:「lt」および「packageVersion」:「7.38.0-4 + deb8u4」)



すべての条件が満たされている場合、パッケージはこの脆弱性DSA-3638の影響を受けます。 システム内の各パッケージについて、ニュースレターからすべての条件を確認し、システムの脆弱性のリストを取得します。 ご覧のとおり、これには困難や魔法はありません。



バージョンを数字または文字列として比較することはできないことに注意してください。 システム(debian、redhat、solaris)ごとに、バージョン構造が異なります。 したがって、それらの比較の仕組みは異なります。 スキャンの信頼性を確保するために、オペレーティングシステム自体で行われているのと同じアルゴリズムに従って正確にバージョン比較を実装する必要があります。 幸いなことに、これには秘密はありません。 同じdebianの比較関数の既製の例があります。



本日、サーバーの脆弱性をチェックできるWebインターフェース 、自動化のための本格的なAPI、および将来のクラウドベースの脆弱性管理ソリューションのためのPoCエージェントを提供する準備が整いました。 次のLinuxディストリビューションがサポートされています:RedHat、CentOS、Fedora、Oracle Linux、Ubuntu、Debian。



グラフィカルインターフェイスは、[監査]タブで使用できます







見つかった脆弱性:







同様に、Audit APIを使用して作業できます。 インストールされたパッケージのリストとOSバージョンを指定すると、脆弱性のリストと、脆弱性が実際に存在すると信じる理由の説明を受け取ります。 結果をスキャナーの結果と比較し、相違点についてベンダーに問い合わせてください。 まあ、または私たちを蹴って、どこかで台無しにした;-)



 curl -H "Accept: application/json" -H "Content-Type: application/json" -X POST -d '{"os":"centos","package":["pcre-8.32-15.el7.x86_64", "samba-common-4.2.3-11.el7_2.noarch", "gnu-free-fonts-common-20120503-8.el7.noarch", "libreport-centos-2.1.11-32.el7.centos.x86_64", "libacl-2.2.51-12.el7.x86_64", "sos-3.2-35.el7.centos.noarch" ],"version":"7"}' https://vulners.com/api/v3/audit/audit/ { "result": "OK", "data": { "reasons": [ { "providedPackage": "sos-3.2-35.el7.centos.noarch", "operator": "lt", "bulletinID": "CESA-2016:0188", "providedVersion": "0:3.2-35.el7.centos", "bulletinPackage": "sos-3.2-35.el7.centos.3.noarch.rpm", "bulletinVersion": "3.2-35.el7.centos.3", "package": "sos-3.2-35.el7.centos.noarch" }, { "providedPackage": "pcre-8.32-15.el7.x86_64", "operator": "lt", "bulletinID": "CESA-2016:1025", "providedVersion": "0:8.32-15.el7", "bulletinPackage": "pcre-8.32-15.el7_2.1.x86_64.rpm", "bulletinVersion": "8.32-15.el7_2.1", "package": "pcre-8.32-15.el7.x86_64" }, { "providedPackage": "samba-common-4.2.3-11.el7_2.noarch", "operator": "lt", "bulletinID": "CESA-2016:1486", "providedVersion": "0:4.2.3-11.el7_2", "bulletinPackage": "samba-common-4.2.10-7.el7_2.noarch.rpm", "bulletinVersion": "4.2.10-7.el7_2", "package": "samba-common-4.2.3-11.el7_2.noarch" }, { "providedPackage": "samba-common-4.2.3-11.el7_2.noarch", "operator": "lt", "bulletinID": "CESA-2016:0612", "providedVersion": "0:4.2.3-11.el7_2", "bulletinPackage": "samba-common-4.2.10-6.el7_2.noarch.rpm", "bulletinVersion": "4.2.10-6.el7_2", "package": "samba-common-4.2.3-11.el7_2.noarch" }, { "providedPackage": "samba-common-4.2.3-11.el7_2.noarch", "operator": "lt", "bulletinID": "CESA-2016:0448", "providedVersion": "0:4.2.3-11.el7_2", "bulletinPackage": "samba-common-4.2.3-12.el7_2.noarch.rpm", "bulletinVersion": "4.2.3-12.el7_2", "package": "samba-common-4.2.3-11.el7_2.noarch" } ], "vulnerabilities": [ "CESA-2016:1486", "CESA-2016:1025", "CESA-2016:0448", "CESA-2016:0612", "CESA-2016:0188" ], "cvelist": [ "CVE-2015-5370", "CVE-2015-7560", "CVE-2016-2119", "CVE-2016-2118", "CVE-2015-7529", "CVE-2016-2112", "CVE-2016-2113", "CVE-2016-3191", "CVE-2015-8386", "CVE-2015-8388", "CVE-2015-8385", "CVE-2016-2110", "CVE-2015-5073", "CVE-2015-8391", "CVE-2015-2328", "CVE-2016-2115", "CVE-2015-3217", "CVE-2016-2114", "CVE-2016-2111" ], "cvss": { "vector": "AV:NETWORK/AC:LOW/Au:NONE/C:PARTIAL/I:PARTIAL/A:COMPLETE/", "score": 9.0 }, "packages": { "pcre-8.32-15.el7.x86_64": { "CESA-2016:1025": [ { "providedPackage": "pcre-8.32-15.el7.x86_64", "operator": "lt", "bulletinID": "CESA-2016:1025", "providedVersion": "0:8.32-15.el7", "bulletinPackage": "pcre-8.32-15.el7_2.1.x86_64.rpm", "bulletinVersion": "8.32-15.el7_2.1", "package": "pcre-8.32-15.el7.x86_64" } ] }, "sos-3.2-35.el7.centos.noarch": { "CESA-2016:0188": [ { "providedPackage": "sos-3.2-35.el7.centos.noarch", "operator": "lt", "bulletinID": "CESA-2016:0188", "providedVersion": "0:3.2-35.el7.centos", "bulletinPackage": "sos-3.2-35.el7.centos.3.noarch.rpm", "bulletinVersion": "3.2-35.el7.centos.3", "package": "sos-3.2-35.el7.centos.noarch" } ] }, "samba-common-4.2.3-11.el7_2.noarch": { "CESA-2016:1486": [ { "providedPackage": "samba-common-4.2.3-11.el7_2.noarch", "operator": "lt", "bulletinID": "CESA-2016:1486", "providedVersion": "0:4.2.3-11.el7_2", "bulletinPackage": "samba-common-4.2.10-7.el7_2.noarch.rpm", "bulletinVersion": "4.2.10-7.el7_2", "package": "samba-common-4.2.3-11.el7_2.noarch" } ], "CESA-2016:0448": [ { "providedPackage": "samba-common-4.2.3-11.el7_2.noarch", "operator": "lt", "bulletinID": "CESA-2016:0448", "providedVersion": "0:4.2.3-11.el7_2", "bulletinPackage": "samba-common-4.2.3-12.el7_2.noarch.rpm", "bulletinVersion": "4.2.3-12.el7_2", "package": "samba-common-4.2.3-11.el7_2.noarch" } ], "CESA-2016:0612": [ { "providedPackage": "samba-common-4.2.3-11.el7_2.noarch", "operator": "lt", "bulletinID": "CESA-2016:0612", "providedVersion": "0:4.2.3-11.el7_2", "bulletinPackage": "samba-common-4.2.10-6.el7_2.noarch.rpm", "bulletinVersion": "4.2.10-6.el7_2", "package": "samba-common-4.2.3-11.el7_2.noarch" } ] } } }
      
      





そして最後に、将来のクラウドベースの脆弱性管理ソリューションのエージェントです。 すべてのコンポーネントの作業の透明性を支持するため、エージェントを完全に機能させました。 システムからデータを収集して分析および表示のためにVulnersサーバーに送信するだけでなく、サーバーから脆弱性の計算リストを受信し、コンソールに表示します。 エージェントソリューションは偶然選択されませんでした。 エージェントの自動キャストに関する問題を一度解決すれば、最も高速で信頼性の高い結果が得られます。 アカウントを作成したり、スキャナーのネットワークアクセスを開いたり、パラメーターを計算したり、スキャンでチャンネルが詰まらない時間を把握したりする必要はありません。 現時点では、これは単なるPythonスクリプトですが、将来的にはシステムの完全なパッケージが提供される予定です。



 $ git clone https://github.com/videns/vulners-scanner $ cd vulners-scanner $ ./linuxScanner.py _ __ ___ _| |_ __ ___ _ __ ___ \ \ / / | | | | '_ \ / _ \ '__/ __| \ V /| |_| | | | | | __/ | \__ \ \_/ \__,_|_|_| |_|\___|_| |___/ ========================================== Host info - Host machine OS Name - centos, OS Version - 7 Total found packages: 1026 Vulnerable packages: krb5-libs-1.13.2-10.el7.x86_64 CESA-2016:0532 - 'Moderate krb5 Security Update', cvss.score - 6.8 openssh-server-6.6.1p1-23.el7_2.x86_64 CESA-2016:0465 - 'Moderate openssh Security Update', cvss.score - 7.7 libtdb-1.3.6-2.el7.x86_64 CESA-2016:0612 - 'Critical ipa Security Update', cvss.score - 0.0 kernel-tools-3.10.0-327.4.5.el7.x86_64 CESA-2016:1033 - 'Important kernel Security Update', cvss.score - 0.0 CESA-2016:1633 - 'Important kernel Security Update', cvss.score - 4.3 CESA-2016:0185 - 'Important kernel Security Update', cvss.score - 7.2 CESA-2016:1539 - 'Important kernel Security Update', cvss.score - 7.2 CESA-2016:1277 - 'Important kernel Security Update', cvss.score - 7.2 openssl-libs-1.0.1e-51.el7_2.2.x86_64 CESA-2016:0301 - 'Important openssl Security Update', cvss.score - 0.0 CESA-2016:0722 - 'Important openssl Security Update', cvss.score - 10.0 nss-softokn-3.16.2.3-13.el7_1.x86_64 CESA-2016:0685 - 'Moderate nss-softokn Security Update', cvss.score - 6.8 ...
      
      





ご覧のとおり、Linuxのセキュリティ分析は、高価な脆弱性スキャナーなしで、より効率的かつ迅速に実行できます。 必ずVulnersをお勧めします。 ただし、たとえばプライバシーが心配な場合など、サーバーに何も送信したくない場合は、この機能を自分で実装できます。 これは難しくありません。 比較関数を実装し、オペレーティングシステム上でデータの完全なセット( CentOSセットなど)をダウンロードし、上記で示したようにデータを処理する必要があります。 エージェントのソースコードでデータを収集する方法を確認できます。 私たちにはオープンエージェントがおり、あなたと一緒に開発させていただきます! プルリクエストを歓迎します! 提案や要望を待っています!



All Articles