Ce diaporama a bien été signalé.

脆弱性スキャナVuls(応用編)

4

Partager

6 sur 30
6 sur 30

脆弱性スキャナVuls(応用編)

4

Partager

Télécharger pour lire hors ligne

Description

インフラ勉強会での資料です。
https://goo.gl/6JWGJ3

Transcription

  1. 1. 脆弱性スキャナVuls (応用編) インフラ勉強会 2018.4.15 Takayuki Ushida
  2. 2. 誰 ? • 牛田隆之(Ushida Takayuki) • フューチャー株式会社 • テクノロジーイノベーショングループ • Vulsクラウド版(FutureVuls)の開発 • Vuls Webビューアー(VulsRepo)作者 • Twitter・Qiita・GitHub • usiusi360
  3. 3. アジェンダ • Vulsの検知のしくみ • 検知モード(モードによる検知方法と必要パッケージ・設定) • fast scan • deep scan • OSパッケージ以外の検知 • CPE(Common Platform Enumeration) • OWASP Dependency Check • NotFixYetについて • v0.5.0での対応予定(CVSS Version3対応、CPEバージョンマッチング) • コマンドオプション • vuls discover • vuls report -diff • vuls report -cvss-over=7 • vuls report -ignore-unfixed • Vuls構成例 • 複数のVulsサーバによる運用 • インターネットから隔離された環境での運用
  4. 4. Vulsの検知のしくみ
  5. 5. v.0.3.Xまでの検知方法 CentOS # yum update —changelog openssl Debian系 # aptitude changelog • 現在インストールされているバージョンと最新のバージョン間のchangelogを取得 • changelog内のCVEIDを取得 # - fix CVE-2014-3513 - memory leak in srtp support - add support for fallback SCSV to partially mitigate CVE-2014-3566 - fix CVE-2014-0224 fix that broke EAP-FAST session resumption support - fix CVE-2014-3505 - doublefree in DTLS packet processing - fix CVE-2014-3506 - avoid memory exhaustion in DTLS • Changelog による検知の問題 • CveIDがコミットログに書いてない • 文脈無視(CVE-XXに関係して修正した 等) • ログに記載されているCveIDが間違っている。 • RedHat、AmazonLinux、OracleLinux # yum --color=never --security updateinfo list updates ALAS-2014-281 medium/Sec. ca-certificates-2012.1.95-3.12.amzn1.noarch ALAS-2013-261 low/Sec. coreutils-8.4-31.17.amzn1.x86_64 ALAS-2013-261 low/Sec. coreutils-libs-8.4-31.17.amzn1.x86_64 • 上記以外(CentOS、Debian系) • パースできない
 (ex. Fix CVE-2014-7185/4650/1912) • リポジトリに全てのchangelogが含まれている わけではなかった
  6. 6. v.0.4.X以降の検知方法 • OVALとのパッケージバーションのマッチングをメインに • セキュリティ検査言語
 (Open Vulnerability and Assessment Language) • 各ディストリビューション毎に公開されている。 • FreeBSD、Rasbianは無い。CentOSも無いが、VulsはRedhatのを代わりに使う。 • 各ディストリビューションのセキュリティアップデート情報サイトの元データ • Redhat:RHSA(Red Hat Security Advisory) 
 https://access.redhat.com/errata/ • Debian:DLA(Debian Security Tracker) 
 https://security-tracker.debian.org/tracker/ • Ubuntu:USN(Ubuntu security notices)
 https://usn.ubuntu.com/ • AmazonLinux:ALSA(Amazon Linux Security Advisories)
 https://alas.aws.amazon.com/ etc
  7. 7. RHSA(Red Hat Security Advisory)
  8. 8. <definition class="patch" id="oval:com.redhat.rhsa:def:20140679" version="601"> <metadata> <title>RHSA-2014:0679: openssl security update (Important)</title> <affected family="unix"> <platform>Red Hat Enterprise Linux 7</platform> </affected> <reference ref_id="RHSA-2014:0679-00" ref_url="https://rhn.redhat.com/errata/RHSA-2014-0679.html" source="RHSA"/> <reference ref_id="CVE-2010-5298" ref_url="https://www.redhat.com/security/data/cve/CVE-2010-5298.html" source="CVE"/> ~~~ <description>OpenSSL is a toolkit that implements the Secure Sockets Layer (SSL v2/v3) and Transport Layer Security (TLS v1) protocols, as well as a full-strength, general purpose cryptography library. It was found that OpenSSL clients and servers could be forced, via a specially crafted handshake packet, to use weak keying material for communication. A man-in-the-middle attacker could use this flaw to decrypt and modify traffic between a client and a server. (CVE-2014-0224) ~~~ All OpenSSL users are advised to upgrade to these updated packages, which contain backported patches to correct these issues. For the update to take effect, all services linked to the OpenSSL library (such as httpd and other SSL-enabled services) must be restarted or the system rebooted.</description> <advisory from="secalert@redhat.com"> <severity>Important</severity> <rights>Copyright 2014 Red Hat, Inc.</rights> <issued date="2014-06-10"/> <updated date="2014-06-10"/> <cve cvss2="4.3/AV:N/AC:M/Au:N/C:N/I:N/A:P" cwe="CWE-416" href="https://www.redhat.com/security/data/cve/CVE-2010-5298.html" impact="moderate" public="20140408">CVE-2010-5298</cve> <cve cvss2="5.8/AV:N/AC:M/Au:N/C:P/I:P/A:N" cwe="CWE-119" href="https://www.redhat.com/security/data/cve/CVE-2014-0195.html" public="20140605">CVE-2014-0195</cve> <cve cvss2="4.3/AV:N/AC:M/Au:N/C:N/I:N/A:P" cwe="CWE-476" href="https://www.redhat.com/security/data/cve/CVE-2014-0198.html" impact="moderate" public="20140421">CVE-2014-0198</cve> <cve cvss2="4.3/AV:N/AC:M/Au:N/C:N/I:N/A:P" cwe="CWE-400" href="https://www.redhat.com/security/data/cve/CVE-2014-0221.html" impact="moderate" public="20140605">CVE-2014-0221</cve> <cve cvss2="5.8/AV:N/AC:M/Au:N/C:P/I:P/A:N" cwe="CWE-841" href="https://www.redhat.com/security/data/cve/CVE-2014-0224.html" public="20140605">CVE-2014-0224</cve> <cve cvss2="4.3/AV:N/AC:M/Au:N/C:N/I:N/A:P" cwe="CWE-476" href="https://www.redhat.com/security/data/cve/CVE-2014-3470.html" impact="moderate" public="20140605">CVE-2014-3470</cve> <bugzilla href="https://bugzilla.redhat.com/1087195" id="1087195">CVE-2010-5298 openssl: freelist misuse causing a possible use-after-free</bugzilla> <bugzilla href="https://bugzilla.redhat.com/1093837" id="1093837">CVE-2014-0198 openssl: SSL_MODE_RELEASE_BUFFERS NULL pointer dereference in do_ssl3_write()</bugzilla> ~~~ <affected_cpe_list> <cpe>cpe:/o:redhat:enterprise_linux:7</cpe> </affected_cpe_list> </advisory> </metadata> <criteria operator="AND"> <criteria operator="OR"> <criterion comment="Red Hat Enterprise Linux 7 Client is installed" test_ref="oval:com.redhat.rhsa:tst:20140675001"/> <criterion comment="Red Hat Enterprise Linux 7 Server is installed" test_ref="oval:com.redhat.rhsa:tst:20140675002"/> <criterion comment="Red Hat Enterprise Linux 7 Workstation is installed" test_ref="oval:com.redhat.rhsa:tst:20140675003"/> <criterion comment="Red Hat Enterprise Linux 7 ComputeNode is installed" test_ref="oval:com.redhat.rhsa:tst:20140675004"/> </criteria> <criteria operator="OR"> <criteria operator="AND"> <criterion comment="openssl-static is earlier than 1:1.0.1e-34.el7_0.3" test_ref="oval:com.redhat.rhsa:tst:20140679011"/> <criterion comment="openssl-static is signed with Red Hat redhatrelease2 key" test_ref="oval:com.redhat.rhsa:tst:20140679012"/> </criteria> <criteria operator="AND"> <criterion comment="openssl-devel is earlier than 1:1.0.1e-34.el7_0.3" test_ref="oval:com.redhat.rhsa:tst:20140679007"/> <criterion comment="openssl-devel is signed with Red Hat redhatrelease2 key" test_ref="oval:com.redhat.rhsa:tst:20140679008"/> </criteria> <criteria operator="AND"> <criterion comment="openssl-perl is earlier than 1:1.0.1e-34.el7_0.3" test_ref="oval:com.redhat.rhsa:tst:20140679009"/> <criterion comment="openssl-perl is signed with Red Hat redhatrelease2 key" test_ref="oval:com.redhat.rhsa:tst:20140679010"/> </criteria> <criteria operator=“AND"> ~~~ === <criterion comment="openssl is earlier than 1:1.0.1e-34.el7_0.3" test_ref="oval:com.redhat.rhsa:tst:20140679005"/> <criterion comment="openssl is signed with Red Hat redhatrelease2 key" test_ref="oval:com.redhat.rhsa:tst:20140679006"/> </criteria> <criteria operator="AND"> <criterion comment="openssl-libs is earlier than 1:1.0.1e-34.el7_0.3" test_ref="oval:com.redhat.rhsa:tst:20140679013"/> <criterion comment="openssl-libs is signed with Red Hat redhatrelease2 key" test_ref="oval:com.redhat.rhsa:tst:20140679014"/> </criteria> OVAL一部抜粋 該当するCveID Cveに該当する条件
  9. 9. <criteria operator="AND"> <criteria operator="OR"> <criterion comment="Red Hat Enterprise Linux 7 Client is installed" test_ref="oval:com.redhat.rhsa:tst: 20140675001"/> <criterion comment="Red Hat Enterprise Linux 7 Server is installed" test_ref="oval:com.redhat.rhsa:tst: 20140675002"/> <criterion comment="Red Hat Enterprise Linux 7 Workstation is installed" test_ref="oval:com.redhat.rhsa:tst:20140675003"/> <criterion comment="Red Hat Enterprise Linux 7 ComputeNode is installed" test_ref="oval:com.redhat.rhsa:tst:20140675004"/> </criteria> <criteria operator="OR"> <criteria operator="AND"> <criterion comment="openssl-static is earlier than 1:1.0.1e-34.el7_0.3" test_ref="oval:com.redhat.rhsa:tst: 20140679011"/> <criterion comment="openssl-static is signed with Red Hat redhatrelease2 key" test_ref="oval:com.redhat.rhsa:tst:20140679012"/> </criteria> <criteria operator="AND"> <criterion comment="openssl-devel is earlier than 1:1.0.1e-34.el7_0.3" test_ref="oval:com.redhat.rhsa:tst: 20140679007"/> <criterion comment="openssl-devel is signed with Red Hat redhatrelease2 key" test_ref="oval:com.redhat.rhsa:tst:20140679008"/> </criteria> <criteria operator="AND"> <criterion comment="openssl-perl is earlier than 1:1.0.1e-34.el7_0.3" test_ref="oval:com.redhat.rhsa:tst: 20140679009"/> <criterion comment="openssl-perl is signed with Red Hat redhatrelease2 key" test_ref="oval:com.redhat.rhsa:tst:20140679010"/> </criteria> <criteria operator=“AND"> ~~~ criteria拡大 Vulsがスキャン対象サーバ上で取得 # rpm -qa | grep openssl openssl-static-1.0.0k-1.el7.x86_64 Vulsはサーバ上のバージョンが修正バー ジョンより古い場合、脆弱性があると判断
  10. 10. fast scan (https://vuls.io/docs/en/architecture-fast-scan.html) • OVALとのパッケージバーションのマッチングのみ • Changelogの取得 を行わないので早 い・負荷が軽い
  11. 11. fast scan • Root権限が不要 • 現状は最新のパッケージバージョンを取得するために、各スキャ ン対象サーバがリポジトリへアクセスしている。 • v0.5.0で-offlineを追加して、選択可能に(予定)
  12. 12. deep scan (https://vuls.io/docs/en/architecture-deep-scan.html) • OVALとのパッケージバーションのマッチングとchangelogのダブルチェック • Changelogの取得のため にスキャン対象サーバへの IO負荷がそれなりにある。 (自前の仮想環境注意) • スキャンサーバのメモリに 全てのchangelogを取り 込むので注意
  13. 13. deep scan • ディストリビューションによってRoot権限が必要 • Root権限を必要とするコマンドを/etc/sudoerに設定
  14. 14. モード別必要パッケージ • モードによりスキャン対象サーバに必要なパッケージが変わるので注意 • fast scan • deep scan
  15. 15. OSパッケージ以外の検知 • OS管理下のパッケージは自動で収集 • Yum、Apt、Pkg • 上記以外は? • ソースからビルド • tar.gz、zip解凍して配置したもの • 独自RPM • 専用インストーラー • ネットワーク機器 Scan vulnerabilites of non-OS packages • https://vuls.io/docs/en/usage-scan-non-os-packages.html
  16. 16. CPEとは • CPE(Common Platform Enumerations) • 共通プラットフォーム一覧 • 製品を識別するための共通のプラットフォーム名の一覧 •
  17. 17. CPEによるスキャン • 設定方法 • マニュアル:Scan vulnerabilites of non-OS packages • https://vuls.io/docs/en/usage-scan-non-os-packages.html • CPEを調べる(https://nvd.nist.gov/products/cpe/search) • 現在のVulsはCPE2.2でチェック • Ex) cpe:/a:apache:struts:2.1.5
 cpe:/h:cisco:892_integrated_services_router:- • Config.tomlに設定 [servers] [servers.localhost] host = "localhost" port = "local" cpeNames = [ "cpe:/a:apache:struts:2.1.5", "cpe:/h:cisco:892_integrated_services_router:-", ]
  18. 18. OWASP Dependency Check によるスキャン • プログラムのライブラリを自動的に見つけ出して脆弱性スキャン • Java、.NET • Ruby、Node.js、Python、C/C++(CMakeもしくはautoconfを利用している 場合のみ)は実験的にサポート • 単体で動作するがVulsと組み合わせると以下のメリット • VulsのUIから一括で脆弱性をチェックできる • Vulsのメール、チャット通知機能が使える • JVNの情報と付け合わせて日本語でレポートできる • Config.tomlに設定 [servers] [servers.localhost] host = "localhost" port = "local" dependencyCheckXMLPath = "/tmp/dependency-check-report.xml"
  19. 19. NotFixYetについて • 最新バージョンにしても脆弱性が修正されたパッケージが無い状態 • 「vuls report」「vuls tui」では表示されない。JSONには入っている • VulsRepoの「NotFixYet」カラムで表示 • EX) • CentOS • CVE-2017-3738 • パッケージ:openssl • Redhat リリース日:4/10 • CentOSの最新:openssl-1.0.2k-8.el7.x86_64
  20. 20. v0.5.0での対応予定 • CVSS Version3対応 • NVD、JVNはサイト上では、CVSSv3のデータを表示していたがXMLデータ内に v3に関する内容が含まれていなかった。 • RedHatのOVALは、2017年1月以降のCveについては全てv3のデータだけに 変わった。 • CVSSv2とv3では、スコアの算出ロジックが全く異なる。v2とv3で比較しても意 味がない。 • NVD • 2017年7月〜 JSON形式にてβ版データ配信開始 • JVN • 2018年2月〜 今までのデータにv3のデータも含まれるようになった
  21. 21. v0.5.0での対応予定 • CPEバージョンマッチング • これまで⇨ CPEの文字列完全マッチング • バージョン違いは検知できなかった • CPEの登録はベンダーによって登録運用が違う
 (CPEの登録がベンダー主体で実施) • ベンダー1:該当するバージョン別にCPEを全て登録 • ベンダー2:v1.00以上v2.00以下、v1.00より大きいv2.00より小さい • Added four new properties to the "cpe" object to assist in defining ranges
 versionStartIncluding
 versionStartExcluding
 versionEndIncluding
 versionEndExcluding • 以上、以下、より大きい、より小さい を区別して検知可能に
  22. 22. v0.5.0での対応予定 • CWEでOWASP Top10ランキングに該当しているか表示
  23. 23. コマンドオプション
  24. 24. vuls discover • CIDRを指定することで、ICMPに反応のあったアドレスをconfig.tomlに作成して くれる。 • https://vuls.io/docs/en/usage-automatic-discovery.html • vuls discover 10.11.0.0/22
  25. 25. vuls report —diff • 「前回」との差分だけレポートしてくれる。 • 実演
  26. 26. vuls report -cvss-over=7 • 特定のスコア以上だけを表示 • 実演
  27. 27. vuls report -ignore-unfixed • NotFixYetを除外する。
  28. 28. Vuls構成例
  29. 29. 複数のVulsサーバによる運用 • 別々のネットワークに分離されているような環境 • 個々のVulsサーバでスキャン時に出力されたJSONファイルを一箇所に集めるこ とで、横断的に分析 • 実事例:NTTPCコミュニケーションズ • https://www.nttpc.co.jp/technology/csirt_3.html
  30. 30. インターネットから隔離された環境での運用 • 各サーバは直接インターネットに出れない環境 • ローカルリポジトリを用意 • 必要なときだけリポジトリアクセスを許可 • 実事例:ラクスル • https://tech.raksul.com/2017/09/04/setup-vuls/

Description

インフラ勉強会での資料です。
https://goo.gl/6JWGJ3

Transcription

  1. 1. 脆弱性スキャナVuls (応用編) インフラ勉強会 2018.4.15 Takayuki Ushida
  2. 2. 誰 ? • 牛田隆之(Ushida Takayuki) • フューチャー株式会社 • テクノロジーイノベーショングループ • Vulsクラウド版(FutureVuls)の開発 • Vuls Webビューアー(VulsRepo)作者 • Twitter・Qiita・GitHub • usiusi360
  3. 3. アジェンダ • Vulsの検知のしくみ • 検知モード(モードによる検知方法と必要パッケージ・設定) • fast scan • deep scan • OSパッケージ以外の検知 • CPE(Common Platform Enumeration) • OWASP Dependency Check • NotFixYetについて • v0.5.0での対応予定(CVSS Version3対応、CPEバージョンマッチング) • コマンドオプション • vuls discover • vuls report -diff • vuls report -cvss-over=7 • vuls report -ignore-unfixed • Vuls構成例 • 複数のVulsサーバによる運用 • インターネットから隔離された環境での運用
  4. 4. Vulsの検知のしくみ
  5. 5. v.0.3.Xまでの検知方法 CentOS # yum update —changelog openssl Debian系 # aptitude changelog • 現在インストールされているバージョンと最新のバージョン間のchangelogを取得 • changelog内のCVEIDを取得 # - fix CVE-2014-3513 - memory leak in srtp support - add support for fallback SCSV to partially mitigate CVE-2014-3566 - fix CVE-2014-0224 fix that broke EAP-FAST session resumption support - fix CVE-2014-3505 - doublefree in DTLS packet processing - fix CVE-2014-3506 - avoid memory exhaustion in DTLS • Changelog による検知の問題 • CveIDがコミットログに書いてない • 文脈無視(CVE-XXに関係して修正した 等) • ログに記載されているCveIDが間違っている。 • RedHat、AmazonLinux、OracleLinux # yum --color=never --security updateinfo list updates ALAS-2014-281 medium/Sec. ca-certificates-2012.1.95-3.12.amzn1.noarch ALAS-2013-261 low/Sec. coreutils-8.4-31.17.amzn1.x86_64 ALAS-2013-261 low/Sec. coreutils-libs-8.4-31.17.amzn1.x86_64 • 上記以外(CentOS、Debian系) • パースできない
 (ex. Fix CVE-2014-7185/4650/1912) • リポジトリに全てのchangelogが含まれている わけではなかった
  6. 6. v.0.4.X以降の検知方法 • OVALとのパッケージバーションのマッチングをメインに • セキュリティ検査言語
 (Open Vulnerability and Assessment Language) • 各ディストリビューション毎に公開されている。 • FreeBSD、Rasbianは無い。CentOSも無いが、VulsはRedhatのを代わりに使う。 • 各ディストリビューションのセキュリティアップデート情報サイトの元データ • Redhat:RHSA(Red Hat Security Advisory) 
 https://access.redhat.com/errata/ • Debian:DLA(Debian Security Tracker) 
 https://security-tracker.debian.org/tracker/ • Ubuntu:USN(Ubuntu security notices)
 https://usn.ubuntu.com/ • AmazonLinux:ALSA(Amazon Linux Security Advisories)
 https://alas.aws.amazon.com/ etc
  7. 7. RHSA(Red Hat Security Advisory)
  8. 8. <definition class="patch" id="oval:com.redhat.rhsa:def:20140679" version="601"> <metadata> <title>RHSA-2014:0679: openssl security update (Important)</title> <affected family="unix"> <platform>Red Hat Enterprise Linux 7</platform> </affected> <reference ref_id="RHSA-2014:0679-00" ref_url="https://rhn.redhat.com/errata/RHSA-2014-0679.html" source="RHSA"/> <reference ref_id="CVE-2010-5298" ref_url="https://www.redhat.com/security/data/cve/CVE-2010-5298.html" source="CVE"/> ~~~ <description>OpenSSL is a toolkit that implements the Secure Sockets Layer (SSL v2/v3) and Transport Layer Security (TLS v1) protocols, as well as a full-strength, general purpose cryptography library. It was found that OpenSSL clients and servers could be forced, via a specially crafted handshake packet, to use weak keying material for communication. A man-in-the-middle attacker could use this flaw to decrypt and modify traffic between a client and a server. (CVE-2014-0224) ~~~ All OpenSSL users are advised to upgrade to these updated packages, which contain backported patches to correct these issues. For the update to take effect, all services linked to the OpenSSL library (such as httpd and other SSL-enabled services) must be restarted or the system rebooted.</description> <advisory from="secalert@redhat.com"> <severity>Important</severity> <rights>Copyright 2014 Red Hat, Inc.</rights> <issued date="2014-06-10"/> <updated date="2014-06-10"/> <cve cvss2="4.3/AV:N/AC:M/Au:N/C:N/I:N/A:P" cwe="CWE-416" href="https://www.redhat.com/security/data/cve/CVE-2010-5298.html" impact="moderate" public="20140408">CVE-2010-5298</cve> <cve cvss2="5.8/AV:N/AC:M/Au:N/C:P/I:P/A:N" cwe="CWE-119" href="https://www.redhat.com/security/data/cve/CVE-2014-0195.html" public="20140605">CVE-2014-0195</cve> <cve cvss2="4.3/AV:N/AC:M/Au:N/C:N/I:N/A:P" cwe="CWE-476" href="https://www.redhat.com/security/data/cve/CVE-2014-0198.html" impact="moderate" public="20140421">CVE-2014-0198</cve> <cve cvss2="4.3/AV:N/AC:M/Au:N/C:N/I:N/A:P" cwe="CWE-400" href="https://www.redhat.com/security/data/cve/CVE-2014-0221.html" impact="moderate" public="20140605">CVE-2014-0221</cve> <cve cvss2="5.8/AV:N/AC:M/Au:N/C:P/I:P/A:N" cwe="CWE-841" href="https://www.redhat.com/security/data/cve/CVE-2014-0224.html" public="20140605">CVE-2014-0224</cve> <cve cvss2="4.3/AV:N/AC:M/Au:N/C:N/I:N/A:P" cwe="CWE-476" href="https://www.redhat.com/security/data/cve/CVE-2014-3470.html" impact="moderate" public="20140605">CVE-2014-3470</cve> <bugzilla href="https://bugzilla.redhat.com/1087195" id="1087195">CVE-2010-5298 openssl: freelist misuse causing a possible use-after-free</bugzilla> <bugzilla href="https://bugzilla.redhat.com/1093837" id="1093837">CVE-2014-0198 openssl: SSL_MODE_RELEASE_BUFFERS NULL pointer dereference in do_ssl3_write()</bugzilla> ~~~ <affected_cpe_list> <cpe>cpe:/o:redhat:enterprise_linux:7</cpe> </affected_cpe_list> </advisory> </metadata> <criteria operator="AND"> <criteria operator="OR"> <criterion comment="Red Hat Enterprise Linux 7 Client is installed" test_ref="oval:com.redhat.rhsa:tst:20140675001"/> <criterion comment="Red Hat Enterprise Linux 7 Server is installed" test_ref="oval:com.redhat.rhsa:tst:20140675002"/> <criterion comment="Red Hat Enterprise Linux 7 Workstation is installed" test_ref="oval:com.redhat.rhsa:tst:20140675003"/> <criterion comment="Red Hat Enterprise Linux 7 ComputeNode is installed" test_ref="oval:com.redhat.rhsa:tst:20140675004"/> </criteria> <criteria operator="OR"> <criteria operator="AND"> <criterion comment="openssl-static is earlier than 1:1.0.1e-34.el7_0.3" test_ref="oval:com.redhat.rhsa:tst:20140679011"/> <criterion comment="openssl-static is signed with Red Hat redhatrelease2 key" test_ref="oval:com.redhat.rhsa:tst:20140679012"/> </criteria> <criteria operator="AND"> <criterion comment="openssl-devel is earlier than 1:1.0.1e-34.el7_0.3" test_ref="oval:com.redhat.rhsa:tst:20140679007"/> <criterion comment="openssl-devel is signed with Red Hat redhatrelease2 key" test_ref="oval:com.redhat.rhsa:tst:20140679008"/> </criteria> <criteria operator="AND"> <criterion comment="openssl-perl is earlier than 1:1.0.1e-34.el7_0.3" test_ref="oval:com.redhat.rhsa:tst:20140679009"/> <criterion comment="openssl-perl is signed with Red Hat redhatrelease2 key" test_ref="oval:com.redhat.rhsa:tst:20140679010"/> </criteria> <criteria operator=“AND"> ~~~ === <criterion comment="openssl is earlier than 1:1.0.1e-34.el7_0.3" test_ref="oval:com.redhat.rhsa:tst:20140679005"/> <criterion comment="openssl is signed with Red Hat redhatrelease2 key" test_ref="oval:com.redhat.rhsa:tst:20140679006"/> </criteria> <criteria operator="AND"> <criterion comment="openssl-libs is earlier than 1:1.0.1e-34.el7_0.3" test_ref="oval:com.redhat.rhsa:tst:20140679013"/> <criterion comment="openssl-libs is signed with Red Hat redhatrelease2 key" test_ref="oval:com.redhat.rhsa:tst:20140679014"/> </criteria> OVAL一部抜粋 該当するCveID Cveに該当する条件
  9. 9. <criteria operator="AND"> <criteria operator="OR"> <criterion comment="Red Hat Enterprise Linux 7 Client is installed" test_ref="oval:com.redhat.rhsa:tst: 20140675001"/> <criterion comment="Red Hat Enterprise Linux 7 Server is installed" test_ref="oval:com.redhat.rhsa:tst: 20140675002"/> <criterion comment="Red Hat Enterprise Linux 7 Workstation is installed" test_ref="oval:com.redhat.rhsa:tst:20140675003"/> <criterion comment="Red Hat Enterprise Linux 7 ComputeNode is installed" test_ref="oval:com.redhat.rhsa:tst:20140675004"/> </criteria> <criteria operator="OR"> <criteria operator="AND"> <criterion comment="openssl-static is earlier than 1:1.0.1e-34.el7_0.3" test_ref="oval:com.redhat.rhsa:tst: 20140679011"/> <criterion comment="openssl-static is signed with Red Hat redhatrelease2 key" test_ref="oval:com.redhat.rhsa:tst:20140679012"/> </criteria> <criteria operator="AND"> <criterion comment="openssl-devel is earlier than 1:1.0.1e-34.el7_0.3" test_ref="oval:com.redhat.rhsa:tst: 20140679007"/> <criterion comment="openssl-devel is signed with Red Hat redhatrelease2 key" test_ref="oval:com.redhat.rhsa:tst:20140679008"/> </criteria> <criteria operator="AND"> <criterion comment="openssl-perl is earlier than 1:1.0.1e-34.el7_0.3" test_ref="oval:com.redhat.rhsa:tst: 20140679009"/> <criterion comment="openssl-perl is signed with Red Hat redhatrelease2 key" test_ref="oval:com.redhat.rhsa:tst:20140679010"/> </criteria> <criteria operator=“AND"> ~~~ criteria拡大 Vulsがスキャン対象サーバ上で取得 # rpm -qa | grep openssl openssl-static-1.0.0k-1.el7.x86_64 Vulsはサーバ上のバージョンが修正バー ジョンより古い場合、脆弱性があると判断
  10. 10. fast scan (https://vuls.io/docs/en/architecture-fast-scan.html) • OVALとのパッケージバーションのマッチングのみ • Changelogの取得 を行わないので早 い・負荷が軽い
  11. 11. fast scan • Root権限が不要 • 現状は最新のパッケージバージョンを取得するために、各スキャ ン対象サーバがリポジトリへアクセスしている。 • v0.5.0で-offlineを追加して、選択可能に(予定)
  12. 12. deep scan (https://vuls.io/docs/en/architecture-deep-scan.html) • OVALとのパッケージバーションのマッチングとchangelogのダブルチェック • Changelogの取得のため にスキャン対象サーバへの IO負荷がそれなりにある。 (自前の仮想環境注意) • スキャンサーバのメモリに 全てのchangelogを取り 込むので注意
  13. 13. deep scan • ディストリビューションによってRoot権限が必要 • Root権限を必要とするコマンドを/etc/sudoerに設定
  14. 14. モード別必要パッケージ • モードによりスキャン対象サーバに必要なパッケージが変わるので注意 • fast scan • deep scan
  15. 15. OSパッケージ以外の検知 • OS管理下のパッケージは自動で収集 • Yum、Apt、Pkg • 上記以外は? • ソースからビルド • tar.gz、zip解凍して配置したもの • 独自RPM • 専用インストーラー • ネットワーク機器 Scan vulnerabilites of non-OS packages • https://vuls.io/docs/en/usage-scan-non-os-packages.html
  16. 16. CPEとは • CPE(Common Platform Enumerations) • 共通プラットフォーム一覧 • 製品を識別するための共通のプラットフォーム名の一覧 •
  17. 17. CPEによるスキャン • 設定方法 • マニュアル:Scan vulnerabilites of non-OS packages • https://vuls.io/docs/en/usage-scan-non-os-packages.html • CPEを調べる(https://nvd.nist.gov/products/cpe/search) • 現在のVulsはCPE2.2でチェック • Ex) cpe:/a:apache:struts:2.1.5
 cpe:/h:cisco:892_integrated_services_router:- • Config.tomlに設定 [servers] [servers.localhost] host = "localhost" port = "local" cpeNames = [ "cpe:/a:apache:struts:2.1.5", "cpe:/h:cisco:892_integrated_services_router:-", ]
  18. 18. OWASP Dependency Check によるスキャン • プログラムのライブラリを自動的に見つけ出して脆弱性スキャン • Java、.NET • Ruby、Node.js、Python、C/C++(CMakeもしくはautoconfを利用している 場合のみ)は実験的にサポート • 単体で動作するがVulsと組み合わせると以下のメリット • VulsのUIから一括で脆弱性をチェックできる • Vulsのメール、チャット通知機能が使える • JVNの情報と付け合わせて日本語でレポートできる • Config.tomlに設定 [servers] [servers.localhost] host = "localhost" port = "local" dependencyCheckXMLPath = "/tmp/dependency-check-report.xml"
  19. 19. NotFixYetについて • 最新バージョンにしても脆弱性が修正されたパッケージが無い状態 • 「vuls report」「vuls tui」では表示されない。JSONには入っている • VulsRepoの「NotFixYet」カラムで表示 • EX) • CentOS • CVE-2017-3738 • パッケージ:openssl • Redhat リリース日:4/10 • CentOSの最新:openssl-1.0.2k-8.el7.x86_64
  20. 20. v0.5.0での対応予定 • CVSS Version3対応 • NVD、JVNはサイト上では、CVSSv3のデータを表示していたがXMLデータ内に v3に関する内容が含まれていなかった。 • RedHatのOVALは、2017年1月以降のCveについては全てv3のデータだけに 変わった。 • CVSSv2とv3では、スコアの算出ロジックが全く異なる。v2とv3で比較しても意 味がない。 • NVD • 2017年7月〜 JSON形式にてβ版データ配信開始 • JVN • 2018年2月〜 今までのデータにv3のデータも含まれるようになった
  21. 21. v0.5.0での対応予定 • CPEバージョンマッチング • これまで⇨ CPEの文字列完全マッチング • バージョン違いは検知できなかった • CPEの登録はベンダーによって登録運用が違う
 (CPEの登録がベンダー主体で実施) • ベンダー1:該当するバージョン別にCPEを全て登録 • ベンダー2:v1.00以上v2.00以下、v1.00より大きいv2.00より小さい • Added four new properties to the "cpe" object to assist in defining ranges
 versionStartIncluding
 versionStartExcluding
 versionEndIncluding
 versionEndExcluding • 以上、以下、より大きい、より小さい を区別して検知可能に
  22. 22. v0.5.0での対応予定 • CWEでOWASP Top10ランキングに該当しているか表示
  23. 23. コマンドオプション
  24. 24. vuls discover • CIDRを指定することで、ICMPに反応のあったアドレスをconfig.tomlに作成して くれる。 • https://vuls.io/docs/en/usage-automatic-discovery.html • vuls discover 10.11.0.0/22
  25. 25. vuls report —diff • 「前回」との差分だけレポートしてくれる。 • 実演
  26. 26. vuls report -cvss-over=7 • 特定のスコア以上だけを表示 • 実演
  27. 27. vuls report -ignore-unfixed • NotFixYetを除外する。
  28. 28. Vuls構成例
  29. 29. 複数のVulsサーバによる運用 • 別々のネットワークに分離されているような環境 • 個々のVulsサーバでスキャン時に出力されたJSONファイルを一箇所に集めるこ とで、横断的に分析 • 実事例:NTTPCコミュニケーションズ • https://www.nttpc.co.jp/technology/csirt_3.html
  30. 30. インターネットから隔離された環境での運用 • 各サーバは直接インターネットに出れない環境 • ローカルリポジトリを用意 • 必要なときだけリポジトリアクセスを許可 • 実事例:ラクスル • https://tech.raksul.com/2017/09/04/setup-vuls/

Plus De Contenu Connexe

×