You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
404StarLink/detail/murphysec.md

7.4 KiB

murphysec https://github.com/murphysecurity/murphysec

Language Author GitHub stars Version Time

中文 | EN

墨菲安全的 CLI 工具,用于在命令行检测指定目录代码的依赖安全问题,也可以基于 CLI 工具实现在 CI 流程的检测。

功能

  1. 分析项目使用的依赖信息,包含直接和间接依赖
  2. 检测项目依赖存在的已知漏洞信息

效果截图

  • CLI 运行结果

    cli output
  • 检测结果页面

    scan result scan result

目录

  1. 支持的语言
  2. 工作原理
  3. 使用场景
  4. 使用步骤
  5. 命令介绍
  6. 交流和问题反馈
  7. 开源协议

支持的语言

目前支持 Java、JavaScript、Golang、Python、PHP、C#、Ruby、Objective-C、.NET 语言项目的检测,后续会逐渐支持其他的开发语言。

语言 包管理工具 所需文件
Java Maven pom.xml
Gradle build.gradle, build.gradle.kts
Go Go Modules go.mod
JavaScript NPM package.json, package-lock.json
Yarn yarn.lock, package.json
Python pip requirements.txt
Poetry poetry.lock
PHP Composer composer.lock
Ruby Bundler Gemfile.lock, gems.locked
.NET NuGet packages.lock.json
C# NuGet packages.lock.json
Objective-C Cocoapods Podfile.lock

详细的支持情况可以查看文档

工作原理

  1. 对于使用不同语言/包管理工具的项目,墨菲安全的 CLI 工具主要采用项目构建或直接对包管理文件进行解析的方式,来准确获取到项目的依赖信息
  2. 项目的依赖信息会上传到服务端,并基于墨菲安全持续维护的漏洞知识库来识别项目中存在安全缺陷的依赖

cli-flowchart

说明:CLI 工具只会将检测项目的依赖和基本信息发送到墨菲安全服务端,用于识别存在安全缺陷的依赖,不会上传任何本地代码。

使用场景

  1. 希望在本地环境中检测代码文件
  2. 希望集成到 CI 环境中对代码项目进行检测

参考:墨菲安全 CLI 与 Jenkins CI 的集成

使用步骤

1. 安装

访问 GitHub Releases 页面下载最新版本的墨菲安全 CLI,或执行以下相关命令:

在 Linux 上安装

wget -q https://s.murphysec.com/install.sh -O - | /bin/bash

在 OSX 上安装

curl -fsSL https://s.murphysec.com/install.sh | /bin/bash

在 WINDOWS 上安装

powershell -Command "iwr -useb https://s.murphysec.com/install.ps1 | iex"

2. 获取访问令牌

CLI 工具需要使用墨菲安全账户的访问令牌进行认证才能正常使用。访问令牌是什么?(点击查看详情)

进入墨菲安全控制台,点击个人设置,复制页面中的访问令牌

3. 认证

目前有两种认证方式可用:命令行交互认证、命令行参数认证

命令行交互认证

执行murphysec auth login命令,粘贴访问令牌即可。

认证后下次使用墨菲安全 CLI 无需再次执行此操作,如果需要更换访问令牌,可以重复执行此命令来覆盖旧的访问令牌。

命令行参数认证

执行检测命令时,通过增加--token参数指定访问令牌进行认证

4. 检测

使用murphysec scan命令进行检测,可以执行以下命令:

murphysec scan [your-project-path]

可用的参数

  • --token:指定访问令牌
  • --log-level:指定命令行输出流打印的日志级别,默认不打印日志,可选参数为silenterrorwarninfodebug
  • --json:指定检测的结果输出为json,默认不展示结果详情

5. 查看结果

CLI 工具默认不展示结果详情,可以在墨菲安全控制台-项目页面查看详细的检测结果

命令介绍

murphysec auth

murphysec auth 命令主要是管理 CLI 的认证

Usage:
  murphysec auth [command]

Available Commands:
  login
  logout

murphysec scan

murphysec scan 命令主要用于执行检测

Usage:
  murphysec scan DIR [flags]

Flags:
  -h, --help   help for scan
      --json   json output

Global Flags:
      --log-level string      specify log level, must be silent|error|warn|info|debug
      --no-log-file           do not write log file
      --server string         specify server address
      --token string          specify API token
  -v, --version               show version and exit
      --write-log-to string   specify log file path

常见问题

1. Windows下安装失败,提示“PowerShell requires an execution policy of 'RemoteSigned'”

Powershell默认不允许从远程加载安装脚本,需要使用管理员权限打开Powershell窗口,并执行Set-ExecutionPolicy RemoteSigned -scope CurrentUser。随后执行安装命令即可成功。

2. 为什么我的 Java(maven) 项目检测结果依赖信息不完整?

  • 本地是否配置了 Maven 环境,可使用mvn -v查看
  • 请检查 Maven 的源是否配置正确。如果是企业内部代码,通常需要配置公司的私有源地址。一般情况下可通过修改~/.m2/settings.xml进行配置
  • 请检查代码目录下是否存在pom.xml文件,也可通过 mvn dependency:tree --file="pom.xml" 命令测试此项目本地是否可正常获取依赖

3. 为什么检测完依赖和缺陷组件数量都是0 ?

  • 检查您的项目/文件是否在目前支持的检测范围内

项目相关

最近更新