<input id="ohw05"></input>
  • <table id="ohw05"><menu id="ohw05"></menu></table>
  • <var id="ohw05"></var>
  • <code id="ohw05"><cite id="ohw05"></cite></code>
    <label id="ohw05"></label>
    <var id="ohw05"></var>
  • 鏡像掃描工具預研

    鏡像掃描工具預研

    1、背景

    ? 最近給了個任務,準備接入容器鏡像的漏洞掃描工具,于是需要先預研,看看接入哪一種開源工具。因為在鏡像的構建過程中,鏡像封裝的代碼、軟件會有不同程度的缺陷,這些缺陷一旦被惡意的者利用,入侵到內部系統進行一系列非法的操作(破壞系統的正常運行和竊取私密的信息)。當缺陷成為漏洞,將會對鏡像的安全造成很大的隱患。

    2、目的

    ? 尋找能夠支持商用的開源掃描鏡像漏洞的工具。

    3、開源協議簡介

    ? 開源工具一般都會遵循一定的開源協議,哪些協議能夠商用,哪些不能商用,在開源協議中都有一定的說明,故先對協議做一定的說明。

    Apache License 2.0 :商業軟件最愛, 主要條件是要求保留原始版權和許可聲明。同時向貢獻者明確授予專利權。使用者可以自由修改,進行商業使用,大型項目可以不同的條款分發,沒有開源要求,修改源代碼需要記錄變更。

    BSD 3-Clause "New" or "Revised" license:允許商業發布和銷售。使用者可以自由的使用,修改源代碼,也可以將修改后的代碼作為開源或者專有軟件再發布。主要條件是要求尊重代碼作者的著作權,即包含原始版權和免責聲明(二進制形式分發必須分發文檔中包含版權申明及免責聲明),且未經事先特別書面許可,不可以用開源代碼的“作者/機構的名字”或“原來產品的名字”做市場推廣。

    BSD 2-Clause "Simplified" or "FreeBSD" license:比3-Clause少一個條目,去掉了“不可以用開源代碼的“作者/機構的名字”或“原來產品的名字”做市場推廣。”.

    GNU General Public License: 商業軟件繞開,GPL不允許修改后和衍生的代碼做為閉源的商業軟件發布和銷售。

    GNU Library or "Lesser" General Public License (LGPL):允許商業軟件代碼動態link到LGPL類庫。注意:不可以靜態鏈接,否則你的代碼也必須用LGPL協議開源。(即:商業軟件可以動態使用,但不能修改)

    Mozilla Public License 2.0:修改的版本需要保持原始版權申明。編譯版本需和可獲得MPL協議下的源碼。修改源代碼需要記錄變更。

    Common Development and Distribution License:商業軟件可用,也可以修改。可以自行發布許可,允許公共版權使用,提供專利保護,無專利費

    Eclipse Public License version 2.0:商業軟件可用,也可以修改,無需開源。不過將本程序包含在商業產品中的貢獻者需要承擔因代碼而產生的侵權責任,及對所有其他貢獻者的相關損失

    image-20220520151252847

    4、開源鏡像掃描工具

    4.1、Trivy 掃描器

    image-20220520145911660

    4.1.1、簡介

    官網:https://aquasecurity.github.io/trivy/v0.28.0/

    github:https://github.com/aquasecurity/trivy

    Trivy(tri 發音為 trigger,vy 發音為 envy)是一個簡單而全面的漏洞/錯誤配置掃描器,用于容器和其他工件。 軟件漏洞是軟件或操作系統中存在的故障、缺陷或弱點。 Trivy 檢測操作系統包(Alpine、RHEL、CentOS 等)和特定語言包(Bundler、Composer、npm、yarn 等)的漏洞。 此外,Trivy 會掃描基礎設施即代碼 (IaC) 文件,例如 Terraform 和 Kubernetes,以檢測使您的部署面臨攻擊風險的潛在配置問題。 Trivy 易于使用。 只需安裝二進制文件,您就可以開始掃描了。 掃描所需要做的就是指定一個目標,例如容器的圖像名稱。

    4.1.2、使用協議/語言

    Apache License Version 2.0/Golang

    4.1.3、掃描類型

    1、Container Images:容器鏡像
    2、Filesystem and Rootfs:文件系統/根文件系統
    3、Git Repositories:代碼倉庫
    4、Kubernetes:集群中使用到的鏡像/配置

    4.1.4、使用

    1、安裝trivy應用即可

    2、不需要另外安裝數據庫

    3、每次掃描前都會下載最新的CVE漏洞庫

    4.1.5、掃描鏡像及掃描結果

    掃描鏡像:

    # trivy image -f json -o results.json nginx:latest
    

    掃描結果:

    "Results": [
        {
          "Target": "nginx:latest (debian 10.10)",
          "Class": "os-pkgs",
          "Type": "debian",
          "Vulnerabilities": [
            {
              "VulnerabilityID": "CVE-2011-3374",
              "PkgName": "apt",
              "InstalledVersion": "1.8.2.3",
              "Layer": {
                "DiffID": "sha256:764055ebc9a7a290b64d17cf9ea550f1099c202d83795aa967428ebdf335c9f7"
              },
              "SeveritySource": "debian",
              "PrimaryURL": "https://avd.aquasec.com/nvd/cve-2011-3374",
              "DataSource": {
                "ID": "debian",
                "Name": "Debian Security Tracker",
                "URL": "https://salsa.debian.org/security-tracker-team/security-tracker"
              },
              "Title": "It was found that apt-key in apt, all versions, do not correctly valid ...",
              "Description": "It was found that apt-key in apt, all versions, do not correctly validate gpg keys with the master keyring, leading to a potential man-in-the-middle attack.",
              "Severity": "LOW",
              "CweIDs": [
                "CWE-347"
              ],
              "CVSS": {
                "nvd": {
                  "V2Vector": "AV:N/AC:M/Au:N/C:N/I:P/A:N",
                  "V3Vector": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:N",
                  "V2Score": 4.3,
                  "V3Score": 3.7
                }
              },
              "References": [
                "https://access.redhat.com/security/cve/cve-2011-3374",
                "https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=642480",
                "https://people.canonical.com/~ubuntu-security/cve/2011/CVE-2011-3374.html",
                "https://seclists.org/fulldisclosure/2011/Sep/221",
                "https://security-tracker.debian.org/tracker/CVE-2011-3374",
                "https://snyk.io/vuln/SNYK-LINUX-APT-116518",
                "https://ubuntu.com/security/CVE-2011-3374"
              ],
              "PublishedDate": "2019-11-26T00:15:00Z",
              "LastModifiedDate": "2021-02-09T16:08:00Z"
            }]}]
    

    4.1.6 優/劣勢

    ? 優勢:工具功能專一,僅提供掃描漏洞功能,而且能掃描文件、代碼倉庫、k8s集群使用到的鏡像等。并不提供其它功能。

    4.2、anchore

    4.2.1 簡介

    官網:https://engine.anchore.io/docs/general/

    github:https://github.com/anchore/anchore-engine

    ? Anchore Engine 是一種開源掃描工具,用于評估 Docker 鏡像的安全性。Anchore 報告讓您深入了解過時的包版本和依賴項中的潛在漏洞。

    4.2.2 使用協議/語言

    Apache License Version 2.0/Python

    4.2.3 掃描類型

    • Image metadata
    • Image layers
    • Operating System Package Data (RPM, DEB, APKG)
    • File Data
    • Ruby Gems
    • Node.JS NPMs
    • Java Archives
    • Python Packages
    • .NET NuGet Packages
    • File content

    4.2.4 使用

    1、以往只能安裝Anchore Engine,運行Anchore Engine、db實例,再使用CLI進行鏡像注冊,掃描、獲取訪問結果等交互

    2、也可以使用后來的內聯掃描方式,下載腳本,由腳本進行配置數據庫、注冊表功能,使用腳本進行直接掃描(未成功)。

    3、掃描前需要啟動db實例,db中postsq;,maridb有已知的漏洞庫數據。

    4.2.5 掃描鏡像及結果

    ? 使用Anchore Cli 操作Docker Compose進行鏡像的添加、掃描,獲取掃描結果

    # 添加到Docker Compose注冊表
    # docker-compose exec api anchore-cli image add docker.io/library/debian:7
    # 等待Docker Compose進行鏡像分析完成
    # docker-compose exec api anchore-cli image wait docker.io/library/debian:7
    # 獲取鏡像掃描結果
    # docker-compose exec api anchore-cli --json image vuln docker.io/library/debian:7 all
    

    掃描結果Json:

    {
        "imageDigest": "sha256:b495f952df67472c3598b260f4b2e2ba9b5a8b0af837575cf4369c95c8d8a215",
        "vulnerabilities": [
            {
                "feed": "vulnerabilities",
                "feed_group": "debian:11",
                "fix": "None",
                "nvd_data": [
                    {
                        "cvss_v2": {
                            "base_score": 1.9,
                            "exploitability_score": 3.4,
                            "impact_score": 2.9
                        },
                        "cvss_v3": {
                            "base_score": 4.7,
                            "exploitability_score": 1.0,
                            "impact_score": 3.6
                        },
                        "id": "CVE-2017-14159"
                    }
                ],
                "package": "libldap-2.4-2-2.4.57+dfsg-3",
                "package_cpe": "None",
                "package_cpe23": "None",
                "package_name": "libldap-2.4-2",
                "package_path": "pkgdb",
                "package_type": "dpkg",
                "package_version": "2.4.57+dfsg-3",
                "severity": "Negligible",
                "url": "https://security-tracker.debian.org/tracker/CVE-2017-14159",
                "vendor_data": [],
                "vuln": "CVE-2017-14159",
                "will_not_fix": false
            }]
    }
    

    4.2.6 優/劣勢

    ? 劣勢:可以通過cli或者api調用。但是每次掃描前需要先將鏡像添加到Docker Compose中進行分析,等待分析好了才能獲取掃描結果。

    4.3、Clair

    4.3.1 簡介

    官網:https://www.redhat.com/en/topics/containers/what-is-clair

    github:https://github.com/quay/quay

    ? Clair 是一個開源項目,它提供了一個通過對 appc 和 docker 容器中的漏洞進行靜態分析來監控容器安全性的工具。Clair 采用 API 驅動的分析引擎,可以逐層檢查容器中是否存在已知的安全漏洞。利用 Clair,您可以輕松構建服務,對容器漏洞進行持續監控

    4.2.2 使用協議/語言

    Apache License Version 2.0/Python

    4.2.3 掃描類型

    ? 支持以下類型的關方容器鏡像

    • Ubuntu
    • Debian
    • RHEL
    • Suse
    • Oracle
    • Alpine
    • AWS Linux
    • VMWare Photon
    • Python

    4.2.4 使用

    ? 參考集成了clair的工具進行安裝使用

    https://github.com/arminc/clair-scanner/tree/v13

    https://www.elephdev.com/index.php/cDocker/301.html?ref=addtabs&lang=en

    1、下載集成了clair的客戶端工具

    2、啟動clair-local-scan掃描鏡像

    3、安裝clair-db,下載漏洞庫

    4.2.5 掃描鏡像及結果

    # clair-scanner -r php-report.json --ip 172.17.0.1 php:7.2
    

    掃描結果Json:

    {
        "image": "php:7.2",
        "vulnerabilities": [
            {
                "featurename": "linux",
                "featureversion": "4.19.160-2",
                "vulnerability": "CVE-2022-0435",
                "namespace": "debian:10",
                "description": "A stack overflow flaw was found in the Linux kernel's TIPC protocol functionality in the way a user sends a packet with malicious content where the number of domain member nodes is higher than the 64 allowed. This flaw allows a remote user to crash the system or possibly escalate their privileges if they have access to the TIPC network.",
                "link": "https://security-tracker.debian.org/tracker/CVE-2022-0435",
                "severity": "Critical",
                "fixedby": "4.19.232-1"
            },
            {
                "featurename": "openssl",
                "featureversion": "1.1.1d-0+deb10u4",
                "vulnerability": "CVE-2022-1292",
                "namespace": "debian:10",
                "description": "The c_rehash script does not properly sanitise shell metacharacters to prevent command injection. This script is distributed by some operating systems in a manner where it is automatically executed. On such operating systems, an attacker could execute arbitrary commands with the privileges of the script. Use of the c_rehash script is considered obsolete and should be replaced by the OpenSSL rehash command line tool. Fixed in OpenSSL 3.0.3 (Affected 3.0.0,3.0.1,3.0.2). Fixed in OpenSSL 1.1.1o (Affected 1.1.1-1.1.1n). Fixed in OpenSSL 1.0.2ze (Affected 1.0.2-1.0.2zd).",
                "link": "https://security-tracker.debian.org/tracker/CVE-2022-1292",
                "severity": "Critical",
                "fixedby": "1.1.1n-0+deb10u2"
            }]
    }
    

    4.2.6 優/劣勢

    ? 劣勢:針對官方文檔進行操作,有許多卡點,參考了已集成了clair的開源工具進行測試,可以直接掃描指定鏡像。

    5、掃描能力比對

    image-20220526100955131

    6、總結

    ? AnchoreClair相比較Trivy出現的時間更早,但是掃描的結果發現Trivy能發現更多的漏洞,尤其是對alphine鏡像;現在大部分鏡像的基礎鏡像都會選擇alpine,因為它更加輕量級而且漏洞相對較少

    ? 而AnchoreClair對一些alpine鏡像是掃描不出來漏洞的,但是使用Trivy卻能夠找到;之前部署的Harbor版本使用的掃描器是Clair,掃描alphine鏡像之后沒有發現漏洞,就認為是安全的;現在Harbor2.0之后是使用Trivy作為默認掃描器,對一些alphine就能夠掃描出來漏洞了

    ? Trivy相對于其他兩個來說,安裝更加的簡單,使用也更加的方便;并且能夠支持多種類型的文件的掃描,目前也是Harbor默認的掃描器

    參考:

    https://boxboat.com/2020/04/24/image-scanning-tech-compared/

    https://www.a10o.net/devsecops/docker-image-security-static-analysis-tool-comparison-anchore-engine-vs-clair-vs-trivy/

    posted @ 2022-06-12 12:19  尋找的路上  閱讀(15)  評論(0編輯  收藏  舉報
    国产美女a做受大片观看