ossf/package-analysis

GitHub: ossf/package-analysis

OpenSSF 推出的开源软件包行为分析工具,通过沙盒环境中的动态与静态分析检测开源生态中的恶意软件包。

Stars: 901 | Forks: 73

[![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/ossf/package-analysis/badge)](https://api.securityscorecards.dev/projects/github.com/ossf/package-analysis) # Package 分析 Package Analysis 项目用于分析开源仓库中可用软件包的功能。该项目旨在寻找表明恶意软件的行为: - 它们访问了哪些文件? - 它们连接了哪些地址? - 它们运行了哪些命令? 该项目还会追踪软件包行为随时间的变化,以识别以前安全的软件何时开始表现出可疑行为。 这项工作旨在通过检测恶意行为来提高开源软件的安全性,为选择软件包的消费者提供信息,并为研究人员提供关于该生态系统的数据。 此代码旨在与 [Package Feeds](https://github.com/ossf/package-feeds) 项目协同工作, 并且最初是在那里起步的。 有关此项目检测到的内容示例,请查看 [案例研究](docs/case_studies.md)。 ## 工作原理 该项目的组件包括: - [调度器](./cmd/scheduler/) - 从 Package Feeds 为分析 worker 创建作业。 - 分析(一次性 [analyze](./cmd/analyze/) 和 [worker](./cmd/worker/)) - 通过对每个软件包进行静态和动态分析来收集行为数据。 - [加载器](./function/loader/) - 将分析结果推送到 BigQuery 中。 我们的目标是让所有这些组件协同工作,并提供可扩展的、由社区运行的基础设施,以研究开源软件包的行为并寻找恶意软件。我们也希望这些组件可以独立使用,为任何感兴趣的人提供软件包订阅源或运行时行为数据。 Package Analysis 项目目前由以下 pipeline 组成: ![image](https://static.pigsec.cn/wp-content/uploads/repos/cas/61/61b085bdefb025b88c4f596c4df03f6d1c014662c78a58a8b3746eff09b63892.png) 1. 监控软件包仓库以获取新软件包。 2. 调度每个新软件包交由一个 worker 池进行分析。 3. worker 在 sandbox 内部对软件包执行动态分析。 4. 结果将被存储并导入到 BigQuery 中以供检查。 通过 [gVisor](https://gvisor.dev/) 容器进行沙盒化处理,可确保软件包被隔离。在 sandbox 内部引爆软件包使我们能够捕获 strace 和网络包数据,这些数据可以表明与系统的恶意交互,以及可用于泄露敏感数据或允许远程访问的网络连接。 ## 公共数据 此数据可在公开的 [BigQuery 数据集](https://console.cloud.google.com/bigquery?d=packages&p=ossf-malware-analysis&t=analysis&page=table)中获取。 ## 配置 这些子项目的配置包含用于各种 endpoint 的一系列环境变量。这些 endpoint 使用兼容 goclouddev 的 URL 字符串进行配置。在这种情况下,将会链接到相关文档,并且应忽略 `DRIVER-Constructor` 部分,而应使用 `DRIVER` 部分,因为它们适用于这些子项目中的现有配置。请注意,并非所有的 driver 都受支持,但只需对代码仓库进行微小的补丁即可轻松添加它们。有关调度器添加 kafka 的示例,请参见 [这一行代码](https://github.com/ossf/package-analysis/commit/985ab76a67d29d2fc8582b3920643e7eb963da8a#diff-8565ef29cfb886db7902792675eddce1e7a0ccfe33428a59e7f2e365b354af88R12)。 有关这些变量的示例,可以在 [e2e 示例 docker-compose](configs/e2e/docker-compose.yml) 中找到。 ### 分析 `OSSMALWARE_WORKER_SUBSCRIPTION` - 可用于设置来自调度器的数据的订阅 URL。其值应遵循 [goclouddev 订阅](https://gocloud.dev/howto/pubsub/subscribe/)规范。 `OSSF_MALWARE_ANALYSIS_RESULTS` - **可选**:可用于设置发布结果的目标 bucket URL。其值应遵循 [goclouddev bucket](https://gocloud.dev/howto/blob/)规范。 `OSSF_MALWARE_ANALYSIS_PACKAGES` - **可选**:可用于设置获取自定义上传软件包的 bucket URL。其值应遵循 [goclouddev bucket](https://gocloud.dev/howto/blob/)规范。 `OSSF_MALWARE_NOTIFICATION_TOPIC` - **可选**:可用于设置主题 URL,以便在新的软件包分析完成后发布供消费的消息。其值应遵循 [goclouddev 发布](https://gocloud.dev/howto/pubsub/publish/)规范。 ### 调度器 `OSSMALWARE_WORKER_TOPIC` - 可用于设置发布数据的 topic URL,以供分析 worker 消费。其值应遵循 [goclouddev 发布](https://gocloud.dev/howto/pubsub/publish/)规范。 `OSSMALWARE_SUBSCRIPTION_URL` - 可用于设置来自 [package-feeds](https://github.com/ossf/package-feeds)数据的订阅 URL。 其值应遵循 [goclouddev 订阅](https://gocloud.dev/howto/pubsub/subscribe/)规范。 ## 本地分析 要在本地运行分析代码,最简单的方法是使用 Docker 镜像 `gcr.io/ossf-malware-analysis/analysis`。可以通过 `make build/image/analysis` 进行构建,或者也可以直接使用公共镜像。 此容器使用 `podman` 来运行一个嵌套的、沙盒化的 ([gVisor]) 容器以进行 分析。 以下命令会将 JSON 结果转储到 `/tmp/results` 并将完整日志转储到 `/tmp/dockertmp`。 ### 线上软件包 要在实时软件包上运行此命令(例如 [pypi.org](https://pypi.org) 上的最新版本 "Django" 软件包) ``` $ scripts/run_analysis.sh -ecosystem pypi -package Django ``` 或者指定版本 ``` $ scripts/run_analysis.sh -ecosystem pypi -package Django -version 4.1.3 ``` ### 本地软件包 要对位于本地归档文件 `/path/to/test.whl` 中、名为 'test' 的本地 PyPi 软件包运行分析 ``` $ scripts/run_analysis.sh -ecosystem pypi -package test -local /path/to/test.whl ``` ### Docker 说明 (注意:这些选项由 `scripts/run_analysis.sh` 脚本处理)。 需要 `--privileged` 和兼容的文件系统才能正确运行嵌套容器。同时也使用了 `-v /var/lib/containers:/var/lib/containers`,因为它允许缓存 sandbox 镜像并支持本地开发。 ## 开发 ### 测试 有关如何使用模拟恶意活动的示例软件包进行测试,请参阅 `sample_packages/README.md`。 ### 必需依赖 - Go v1.26.3 - Docker # 贡献 如果您想参与进来,或者有任何想法想要讨论,我们会在 [OSSF Securing Critical Projects Working Group](https://github.com/ossf/wg-securing-critical-projects) 的会议上讨论这个项目。 请参阅[社区日历](https://calendar.google.com/calendar?cid=czYzdm9lZmhwNWk5cGZsdGI1cTY3bmdwZXNAZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ)了解日程安排和会议邀请。
标签:DAST, EVTX分析, Prompt Engineering, 云安全监控, 恶意软件分析, 日志审计, 请求拦截, 静态分析