OpenSSF专题之二:package-anlysis

Posted by Mu Wenfeng on 2021-11-26

简介

这个repo包含了一些组件来帮助分析开源包,尤其是寻找恶意软件。此代码旨在同Package Feeds项目一起使用,并且也是源自feeds项目。package feeds项目用于监控不同包仓库的变化,并发布数据到外部服务以便进一步处理。google_cloud_run_service

本repo的组件包括

基本流程

docker-compose部署:package-feeds->scheduler->anlysis->loader

依赖于kafka(分布式发布-订阅消息系统)

在docker-compose.yml文件中配置

分析

OSSMALWARE_WORKER_SUBSCRIPTION- 可用于设置来自调度程序的数据的订阅 URL。值应遵循 goclouddev subscriptions

OSSF_MALWARE_ANALYSIS_RESULTS-可选:可用于设置要将结果发布到的存储桶 URL。值应遵循 goclouddev buckets

OSSMALWARE_DOCSTORE_URL-可选:可用于设置将结果发布到的 docstore URL。值应遵循 goclouddev docstore

调度器

OSSMALWARE_WORKER_TOPIC- 可用于设置主题 URL 以发布供分析工作者使用的数据。值应遵循 goclouddev 发布

OSSMALWARE_SUBSCRIPTION_URL- 可用于设置来自package-feeds的数据的订阅 URL 。值应遵循 goclouddev subscriptions

使用方法

本地分析

使用docker镜像gcr.io/ossf-malware-analysis/analysis,仓库中提供了脚本完成镜像编译./build/build_docker.sh。

这个容器使用了podman去运行一个嵌套的沙盒(gVisitor,是一个容器的应用程序内核,可以在任何地方提供高效的纵深防御)的容器来进行分析。

以下命令会将JSON 结果转出到/tmp/results

实时package,比如pypi.org上的“Django”包

1
2
3
4
5
6
$ mkdir /tmp/results
$ docker run --privileged -ti \
-v /tmp/results:/results \
gcr.io/ossf-malware-analysis/analysis分析\
-package Django -ecosystem pypi \
-上传文件:///结果/

本地package,如/path/to/test.whl,需要将包mount到容器中

1
2
3
4
5
6
7
$ mkdir /tmp/results
$ docker run --privileged -ti \
-v /tmp/results:/results \
-v /path/to/test.whl:/test.whl \
gcr.io/ossf-malware-analysis/analysis分析\
-local /test.whl -ecosystem pypi \
-上传文件:///结果/