手记

Horusec实战:早期静态应用安全测试发现漏洞

Horusec 是一个开源的安全漏洞扫描器,旨在识别你软件项目中的安全漏洞。它集成到开发流程中,帮助开发人员在早期开发阶段检测并修复安全问题。它扫描代码,发现如SQL注入、跨站脚本(XSS)和不安全配置等安全问题,支持多种编程语言的代码。

这里简单介绍一下Horusec的工作方式和它的主要特点:

  1. 集成:Horusec 可以集成到软件开发生命周期的各个阶段中,包括 CI/CD 管道。它支持多种编程语言和框架。
  2. 分析类型包括
  • 静态应用程序安全测试(SAST):在不执行程序的情况下分析源代码中的安全隐患。这有助于识别代码注入和不安全配置等问题。
  • 动态应用程序安全测试(DAST):测试运行中的应用程序,以发现运行时出现的安全漏洞,例如身份验证漏洞或SQL注入。

3. 报告和警报:分析完成后,Horusec 会生成详细的报告,详细列出识别出的漏洞、其严重程度以及修复建议,帮助用户了解并解决这些问题。

4. 自定义设置:Horusec 允许用户自定义其规则和配置,以满足特定需求或专注于特定漏洞类型。

开始安装:

首先,你需要安装Horusec。安装过程一般包括下载CLI工具并将其设置为可执行文件。

下载 Horusec 的 tar.gz 文件:

curl -LO https://github.com/ZupIT/horusec/releases/download/v1.0.0/horusec-linux-amd64.tar.gz

此命令用于下载 horusec-linux-amd64.tar.gz 文件。

解压下载的文件:

tar -xzf horusec-linux-amd64.tar.gz

此命令用于解压刚刚下载的 tar.gz 文件。

将解压后的文件移动到正确的目录:

sudo mv horusec /usr/local/bin/

此命令将解压后的文件移动到 /usr/local/bin/ 目录,以便可以全局访问。
简单的使用方法

安装完成后,你可以使用Horusec(一个代码扫描工具)来扫描你的项目。进入项目根目录,并在命令行中输入以下命令:

    horusec 扫描一下。
配置扫描设置

您可以使用一些参数来自定义扫描行为,比如:

请选一个项目文件夹

运行 `horusec scan --path /path/to/your/project` 命令。

确定要报告的漏洞的严重程度

horusec 扫描 --高严重性

指定一个特定的语言或编程框架

    horusec scan --language go

该命令用于扫描Go语言代码

看结果

扫描完成后,Horusec 生成报告。默认显示在终端。也可以导出到文件。

运行 horusec scan --output-format json > horusec-report.json 命令,这会将扫描结果以 json 格式输出到 horusec-report.json 文件。

将Docker扫描集成到CI/CD中

     stages:  
      - build  
      - scan  

    build:  
      stage: build  
      script:  
        - docker build -t your-image:tag .  

    安全代码扫描:  
      stage: scan  
      script:  
        - horusec scan --path . # 执行horusec扫描,路径为当前目录  
      artifacts:  
        报告:  
          sast: horusec-report.json
  • Horusec :最适合在开发阶段检测源代码中的漏洞。
  • Trivy :理想用于在部署前扫描 Docker 镜像和文件系统中的已知漏洞,使其更符合口语化的表达习惯。

Horusec的样本报告格式:

Horusec 通常提供详细的报告,格式可以是 JSON、HTML 或纯文本。这里是一个 JSON 报告格式的示例:

{
  "vulnerabilities": [
    {
      "id": "CVE-2023-12345",
      "description": "用户模型中的SQL注入漏洞。",
      "severity": "严重",
      "file": "app/models/user.go",
      "line": 42,
      "code_snippet": "db.Query(\"SELECT * FROM users WHERE id = \" + userId)",
      "recommendation": "使用参数化查询以防止SQL注入。",
      "status": "未解决"
    },
    {
      "id": "CVE-2023-67890",
      "description": "个人资料视图中的跨站脚本攻击(XSS)漏洞。",
      "severity": "中等",
      "file": "app/views/profile.html",
      "line": 30,
      "code_snippet": "<div>{{ userProfile.name }}</div>",
      "recommendation": "清理用户输入以防止XSS攻击。",
      "status": "未解决"
    }
  ],
  "metadata": {
    "scan_date": "2024-09-09T14:30:00Z",
    "scanner_version": "v2.0.0",
    "project": "我的应用程序",
    "total_vulnerabilities": 2
  }
}
Horusec HTML 报告示例,
    <!DOCTYPE html>  
    <html lang="zh">  
    <head>  
        <meta charset="UTF-8">  
        <meta name="viewport" content="width=device-width, initial-scale=1.0">  
        <title>Horusec 扫描报告</title>  
        <style>  
            body { font-family: Arial, sans-serif; }  
            .container { max-width: 800px; margin: auto; padding: 20px; }  
            h1 { color: #333; }  
            .vulnerability { margin-bottom: 20px; }  
            .vulnerability h2 { margin: 0; color: #e74c3c; }  
            .vulnerability p { margin: 5px 0; }  
        </style>  
    </head>  
    <body>  
        <div class="container">  
            <h1>Horusec 安全扫描报告</h1>  
            <p><strong>日期:</strong> 2024-09-09</p>  
            <p><strong>项目:</strong> 我的应用程序</p>  
            <p><strong>总漏洞:</strong> 2</p>  

            <div class="vulnerability">  
                <h2>CVE-2023-12345</h2>  
                <p><strong>描述:</strong> 用户模型中的 SQL 注入漏洞。</p>  
                <p><strong>严重性:</strong> 高</p>  
                <p><strong>文件:</strong> app/models/user.go</p>  
                <p><strong>行:</strong> 42</p>  
                <p><strong>代码片段:</strong> db.Query("SELECT * FROM users WHERE id = " + userId)</p>  
                <p><strong>建议:</strong> 使用参数化查询来防止 SQL 注入。</p>  
                <p><strong>状态:</strong> 未解决</p>  
            </div>  

            <div class="vulnerability">  
                <h2>CVE-2023-67890</h2>  
                <p><strong>描述:</strong> 个人资料页面中的跨站脚本 (XSS) 攻击漏洞。</p>  
                <p><strong>严重性:</strong> 中等</p>  
                <p><strong>文件:</strong> app/views/profile.html</p>  
                <p><strong>行:</strong> 30</p>  
                <p><strong>代码片段:</strong> &lt;div&gt;{{ userProfile.name }}&lt;/div&gt;</p>  
                <p><strong>建议:</strong> 清理用户输入以防止 XSS 攻击。</p>  
                <p><strong>状态:</strong> 未解决</p>  
            </div>  
        </div>  
    </body>  
    </html>

Trivy 扫描报告示例:

    # Trivy 安全扫描报告

    **日期:** 2024-09-09    
    **图像:** my-app:latest    
    **Trivy 版本:** v0.36.0    
    **总漏洞数量:** 2  

    ## 漏洞

    ### CVE-2023-23456  
    - **软件包:** libssl  
    - **已安装版本:** 1.1.1d  
    - **修复版本:** 1.1.1e  
    - **严重性:** 高,  
    - **描述:** libssl 中的缓冲区溢出可能导致远程代码执行。  
    - **层:** sha256:abcd1234  
    - **参考资料:**  
      - [CVE-2023-23456 详情如下](https://example.com/CVE-2023-23456)  

    ### CVE-2023-34567  
    - **软件包:** nginx  
    - **已安装版本:** 1.18.0  
    - **修复版本:** 1.18.1  
    - **严重性:** 高,  
    - **描述:** nginx 中的路径遍历攻击漏洞。  
    - **层:** sha256:efgh5678  
    - **参考资料:**  
      - [CVE-2023-34567 详情如下](https://example.com/CVE-2023-34567)

Horusec 帮助开发人员在开发的早期阶段发现并解决安全问题,通过阻止脆弱代码的构建和部署来提高应用程序的整体安全状况。

0人推荐
随时随地看视频
慕课网APP