跳转至

源代码分析 (Source Code Analysis)

源代码分析是检查和审查软件程序代码以识别错误、漏洞和潜在改进的过程。这一过程可以由开发者手动执行,也可以通过自动化工具进行,这些工具会自动扫描代码中的安全风险、编码规范违规以及性能低下等问题。

AI 辅助分析 (AI Analysis)

  • trailofbits/skills - Trail of BitsClaude Code 技能集,用于安全研究、漏洞检测和审计工作流。
npm install -g @github/copilot
copilot
/login
/model
/plugin marketplace add trailofbits/skills
/plugin marketplace browse trailofbits
/plugin install ask-questions-if-underspecified@trailofbits
/plugin install static-analysis@trailofbits
/plugin install entry-point-analyzer@trailofbits
/plugin install semgrep-rule-creator@trailofbits
/plugin install semgrep-rule-variant-creator@trailofbits
/plugin install sharp-edges@trailofbits
/plugin install insecure-defaults@trailofbits

Semgrep

适用于多种语言的轻量级静态分析工具。通过类似于源代码的模式 (Pattern) 来寻找漏洞变体。

安装

  • 二进制文件:opengrep/opengrep / semgrep/semgrep
  • Ubuntu/WSL/Linux/macOS:python3 -m pip install semgrep
  • macOS:brew install semgrep
  • Docker

    docker run -it -v "${PWD}:/src" semgrep/semgrep semgrep login
    docker run -e SEMGREP_APP_TOKEN=<TOKEN> --rm -v "${PWD}:/src" semgrep/semgrep semgrep ci
    

Semgrep 规则

其他工具

SonarQube

持续检查 (Continuous Inspection)

安装

  • Docker

    docker run -d --name sonarqube -p 9000:9000 sonarqube:community
    

配置

  • 访问 localhost:9000
  • 使用 admin:admin 登录
  • 创建本地项目
  • 为项目生成令牌 (Token)
  • 使用 sonar-scanner-cli 并配合生成的令牌执行扫描

    docker run --rm -e SONAR_HOST_URL="http://10.10.10.10:9000" -v "/tmp/www:/usr/src" sonarsource/sonar-scanner-cli -Dsonar.projectKey=sonar-project-name -Dsonar.sources=. -Dsonar.host.url=http://10.10.10.10:9000 -Dsonar.token=sqp_redacted
    
  • 查看“安全热点 (Security Hotspots)”选项卡:http://10.10.10.10:9000/security_hotspots?id=sonar-project-name

⚠ 在扫描文件夹之前,请移除失效的符号链接。

Psalm

发现 PHP 应用错误的静态分析工具

安装

composer require --dev vimeo/psalm

配置

  • 创建项目并启动代码库扫描

    ./vendor/bin/psalm --init
    ./vendor/bin/psalm --taint-analysis
    ./vendor/bin/psalm --report=results.sarif
    
  • 使用 Sarif 查看器查看结果:microsoft.github.io/sarif-web-component

CodeQL

CodeQL:助力全球安全研究人员的库和查询工具,同时也是 GitHub 高级安全 (Advanced Security) 中代码扫描功能的核心引擎。

安装

配置

codeql resolve packs
codeql resolve languages
codeql database create <数据库名称> --language=<语言标识符>
codeql database create --language=python <输出文件夹>/python-database
codeql database create --language=cpp <输出文件夹>/cpp-database
codeql database analyze <数据库路径> --format=<格式> --output=<输出路径> <查询规范>...
codeql database analyze /codeql-dbs/example-repo javascript-code-scanning.qls --sarif-category=javascript-typescript  --format=sarif-latest --output=/temp/example-repo-js.sarif
codeql database analyze <数据库路径> microsoft/coding-standards@1.0.0 github/security-queries --format=sarifv2.1.0 --output=query-results.sarif --download

Snyk

Snyk CLI 扫描并监控你的项目以查找安全漏洞。

安装

  • Snyk Security - Visual Studio
  • Snyk Code / Snyk Open Source

    curl https://static.snyk.io/cli/latest/snyk-linux -o snyk
    chmod +x ./snyk
    mv ./snyk /usr/local/bin/ 
    
    docker run -it \
        -e "SNYK_TOKEN=<TOKEN>" \
        -v "<项目目录>:/project" \
        -v "/home/user/.gradle:/home/node/.gradle" \
    snyk/snyk:gradle:6.4 test --org=my-org-name
    

配置

snyk auth
snyk ignore --file-path=<目录或文件路径>
snyk code test

# npm install snyk-to-html -g
snyk code test --json | snyk-to-html -o results-opensource.html

参考资料 (References)