bosch-aisecurity-aishield/watchtower

GitHub: bosch-aisecurity-aishield/watchtower

一款面向 AI/ML 模型与 Notebook 的自动化安全扫描工具,帮助发现并分级漏洞以保障供应链安全。

Stars: 203 | Forks: 20

![项目横幅或Logo](https://raw.githubusercontent.com/bosch-aisecurity-aishield/watchtower/main/img/WatchtowerGithubImage.jpg) ![静态徽章](https://img.shields.io/badge/Build-Passing-green) ![静态徽章](https://img.shields.io/badge/Docker-Available-green) ![GitHub Release](https://img.shields.io/github/v/release/bosch-aisecurity-aishield/watchtower) ![静态徽章](https://img.shields.io/badge/python-3.10%7C3.11%7C3.12%7C3.13-blue) ![GitHub License](https://img.shields.io/github/license/bosch-aisecurity-aishield/watchtower) # AIShield.Watchtower 🔍: 强化 AI/ML 模型与 Notebook 安全 在当今快速发展的机器学习和人工智能(AI)领域,确保 AI 模型的安全已成为当务之急。这些模型是众多应用中决策背后的驱动力。因此,保障其完整性并防范潜在攻击仍是首要任务。遗憾的是,AI 生态系统中的关键组件,即 Jupyter notebook 和模型,在日常的安全评估中经常被忽视,使其成为潜在攻击者眼中脆弱且极具吸引力的目标。使用开源工具进行的初步测试描绘了一幅严峻的画面,突显了严重的局限性以及对定制化解决方案的迫切需求。 随着 AI/ML 模型继续重塑行业并推动创新,模型安全的重要性不言而喻。然而,在对 AI 潜力的兴奋之中,Jupyter notebook 和 AI 模型的安全性却一直被置于阴影之中。 一个说明这种安全盲区的典型例子与 Jupyter notebook 的广泛使用有关。在这些数字页面中,隐藏着为当今许多 AI 驱动的产品和服务注入活力的蓝图、代码和算法。然而,与其他代码库一样,Jupyter notebook 也无法避免可能无意中进入最终产品的漏洞。这些漏洞如果得不到解决,可能会成为网络攻击的网关,不仅危及 AI 驱动产品的完整性,还会危及用户数据的安全。 **AIShield Watchtower** 旨在自动化模型和 notebook 的发现过程,并进行全面的漏洞扫描。 它的功能不仅限于识别您代码库中的所有模型和 notebook。它还能评估风险,例如硬编码的机密信息、PII、过时/不安全的库、模型反序列化攻击、自定义的不安全操作等。 AIShield Watchtower 的突出之处在于它能够将扫描结果划分为四个不同的风险级别:“低危”、“中危”、“高危”和“严重”。这种分类使组织能够根据检测到的风险级别调整其安全工作。其自适应的方法和细致的风险分类极大地加强了安全防范,有效地巩固了安全防线。Watchtower 与 OWASP、MITRE、CWE、NIST AI RMF MAP 函数等行业标准的对齐,通过提供先进的安全解决方案,进一步提升了其市场地位。 ## 目录 - [用法](#usage) - [前置条件](#prerequisite) - [检查 Jupyter Notebook 和模型的方法](#prerequisite) - [CLI](#cli) - [UI](#ui) - [UI-Docker](#ui-docker) - [报告](#reports) - [功能](#features) - [优势](#benefits) - [限制](#limitation) - [贡献](#contribution) - [许可协议](#license) ## 用法 AIShield Watchtower 可用于检查 Jupyter notebook、requirements.txt 和 AI/ML 模型中的漏洞(参考:[功能](#features))。 要使用 AIShield Watchtower,请克隆 Watchtower 代码库。安装前置条件并扫描您的 notebook 和 AI/ML 模型。Watchtower 代码库中提供了一些入门的示例测试文件。 ### 前置条件 - 要在 CLI 或 UI 版本中运行 Watchtower,主机系统应安装 python3 和 pip。 - 要运行 UI-Docker 版本,主机系统应安装 docker 和 docker-compose。 克隆 Watchtower 代码库 ``` git clone https://github.com/bosch-aisecurity-aishield/watchtower.git cd watchtower ``` ### 使用以下命令安装 Watchtower 相关的依赖库: #### 在 Linux(Ubuntu) 系统中运行此命令安装依赖: ``` ./install.sh ``` #### 在 Windows 系统中运行此命令安装依赖: ``` ./install.bat ``` ### 检查 Jupyter Notebook 和 ML/DL 模型 切换目录到 src。 ``` cd src ``` 可以通过以下任何一种方法来检查 Jupyter Notebook 和 ML/DL 模型: #### CLI 查看 CLI 模式下的可用选项 ``` python watchtower.py -h ``` ##### 扫描模型文件(.h5, .pb 和 .keras) 要扫描 .h5、.pb 和 .keras 格式的模型文件,请结合任何代码库使用 **--scan_tf_model** 参数。目前此功能仅在 Linux 操作系统上支持。 例如,针对 GitHub: ``` python watchtower.py --repo_type= --repo_url= --branch_name= --scan_tf_model ``` ##### 检查公共 GitHub 代码库中的制品 ``` python watchtower.py --repo_type=github --repo_url= --branch_name= --depth= ``` 注意:branch_name 和 depth 参数是可选的。branch_name 的默认值为 main,默认 depth 值为 1 ##### 检查 Huggingface 代码库中的制品 ``` python watchtower.py --repo_type=huggingface --repo_url= ``` ##### 扫描 AWS S3 bucket 中的制品 ``` python watchtower.py --repo_type=s3 --bucket_name="" --region="" --aws_access_key_id="" --aws_secret_access_key="" ``` ##### 扫描本地系统中的制品 ``` #Select Repo_type = file for scanning individual file python watchtower.py --repo_type=file --path= #Select Repo_type = file for scanning individual file python watchtower.py --repo_type=folder --path= ``` ![Watchtower CLI](https://raw.githubusercontent.com/bosch-aisecurity-aishield/watchtower/main/img/AIShield_watchtower_git_cli.gif) ## UI 要使用 Watchtower UI,请执行以下命令: ``` python watchtower_webapp.py ``` ![Watchtower UI](https://static.pigsec.cn/wp-content/uploads/repos/cas/f9/f933f83ea57d0edf58145658635778720db7ac24f75d7ea74152aa0acda78799.png) ## UI-Docker 要使用 Docker 运行 Watchtower UI,请为 watchtower 构建 Docker 镜像并运行 watchtower 镜像 ``` cd watchtower docker-compose build docker-compose up ``` 打开浏览器并粘贴:http://localhost:5015/watchtower-aishield 成功完成扫描后,Watchtower 漏洞报告将保存在 Watchtower 根目录的 reports 文件夹中。 要停止并移除 Watchtower 镜像,请执行以下命令 ``` docker-compose down ``` ## 报告 Watchtower 扫描成功完成后,将在以下路径生成三份报告: - 对于 CLI 模式 - 所有三份报告将位于 Watchtower 的 src 文件夹中。用户可以参考控制台中摘要报告的最后一行,获取报告位置的完整路径。 - 对于 UI 模式 - 所有三份报告将位于 Watchtower 的 src 文件夹中。用户可以参考 UI 上的成功消息获取报告位置的路径。 - 对于 UI-Docker 模式 - 所有三份报告将位于 Watchtower 的 reports 文件夹中。用户可以参考 UI 上的成功消息获取报告位置的路径。 1. 摘要报告 - 摘要报告将提供有关检测到的模型文件和 notebook 文件数量、检测到的漏洞数量,以及映射到“严重”、“高危”、“中危”和“低危”的漏洞计数的信息。摘要报告示例片段: ``` { "Repository Type": "github", "Repository URL": "https://github.com/bosch-aisecurity-aishield/watchtower.git", "Total Number of Model Found": 17, "Total Number of Notebooks & Requirement files Found": 6, "Total Number of Model Scanned": 17, "Total Number of Notebooks & Requirement files Scanned": 6, "Total Notebook & Requirement files Vulnerabilities Found": { "Critical": 0, "High": 40, "Medium": 17, "Low": 1 }, "Total Model Vulnerabilities Found": { "Critical": 0, "High": 4, "Medium": 2, "Low": 8 } } ``` 2. 严重性映射报告 - 此报告中将详细报告“高危”、“中危”和“低危”到模型或 Notebook 的映射关系。严重性映射报告示例片段: ``` { "type": "Hex High Entropy String", "filename": "repo_dir_1696827949/sample_test_files/sample_notebook_files/classification_notebook.py", "hashed_secret": "8d1e60a0b91ca2071dc4027b6f227990fb599d27", "is_verified": false, "line_number": 47, "vulnerability_severity": "High" }, { "type": "Secret Keyword", "filename": "repo_dir_1696827949/sample_test_files/sample_notebook_files/classification_notebook.py", "hashed_secret": "8d1e60a0b91ca2071dc4027b6f227990fb599d27", "is_verified": false, "line_number": 47, "vulnerability_severity": "High" } ``` 3. 详细报告 - 在此报告中,Watchtower 用户将能够找到漏洞扫描期间生成的所有日志。 ## 功能 - **模型与 Notebook 检测**:自动识别所提供代码库中的 AI/ML 模型和 Notebook。 - **扫描**:对模型和 notebook 执行全面扫描,以检测潜在的安全和保障问题。 - **报告生成**:生成综合报告,将包含“低危”、“中危”、“高危”和“严重”风险的受扫描文件进行分类。 - **支持的代码库**:AIShield Watchtower 支持与 GitHub、Huggingface 和 AWS S3 bucket 集成,允许对代码库和 AWS S3 bucket 进行自动化扫描以识别潜在风险。 ### 支持的模型格式 | 框架 | 文件格式 | 反序列化风险 | 后门风险 | 运行时风险 | |-------------------|------------------|------------------------|-------------------------|------------------------| | [Tensorflow](https://www.tensorflow.org/tutorials/keras/save_and_load#save_the_entire_model) | .pb | ✅ | ✅ | | | [Tensorflow](https://www.tensorflow.org/tutorials/keras/save_and_load#save_the_entire_model) | .h5 | ✅ | ✅ | | | [Tensorflow-savedmodel](https://www.tensorflow.org/) | .ckpt | ✅ | | | | [Keras](https://keras.io/api/models/model_saving_apis/model_saving_and_loading/#save_model-function) | .keras | ✅ | ✅ | | | [Keras](https://keras.io/api/models/model_saving_apis/model_saving_and_loading/#save_model-function) | .h5 | ✅ | ✅ | | | [PyTorch](https://pytorch.org/docs/stable/generated/torch.save.html#torch.save) | .pt | ✅ | | | | [PyTorch](https://pytorch.org/docs/stable/generated/torch.save.html#torch.save) | .pth | ✅ | | | | [PyTorch](https://pytorch.org/docs/stable/generated/torch.save.html#torch.save) | .bin | ✅ | | | | [ONNX*](https://onnx.ai/) | .onnx* | | | | | [GGUF*](https://github.com/ggerganov/ggml) | .gguf* | | | | | [Scikit-Learn](https://scikit-learn.org/stable/modules/model_persistence.html) | .pkl | ✅ | | | | 其他 | .zip | ✅ | | | *有关这些文件格式的更多详细信息,请发送邮件至 [AIShield.Contact@in.bosch.com](mailto:AIShield.Contact@in.bosch.com)。 ### 其他文件格式 | 框架 | 文件格式 | 检测内容 | | :--------------- | :---------- | :------------------------------------------------------- | | Jupyter Notebook | .ipynb | 硬编码的机密信息、密码、PII、Token (API、Web 及其他) | | Python | .py | 硬编码的机密信息、密码、PII、Token (API、Web 及其他) | ## 风险分析 ### 1. 反序列化风险 当使用未经验证的数据重建对象时会发生此类风险。攻击者可能会利用这些风险引入恶意代码,从而危及系统完整性。 ### 2. 后门风险 隐藏的路径允许攻击者通过特定触发器操纵模型行为。这些隐蔽的攻击在正常操作期间很难被察觉。 ### 3. 运行时风险 在模型推理或任务执行期间激活,运行时风险涉及恶意代码执行,导致未经授权的访问或操纵。 ## 优势 1. **实时扫描**是快速识别和缓解新出现威胁的重要组成部分。此功能确保对 AI/ML 模型和 notebook 的任何更改或添加都能得到及时分析。它支持对潜在漏洞立即采取行动,从而保持 AI/ML 应用程序的完整性。 2. **多框架支持**使 Watchtower 能够兼容各种模型框架,从而满足各种 AI/ML 项目的需求。这种多功能性使组织无论使用何种框架都能利用 Watchtower,使其成为一款普遍适用的安全工具。 3. **动态风险识别**在不断变化的 AI/ML 环境中适应不断演变的威胁和漏洞方面发挥着关键作用。随着新威胁类型的不断涌现,这种适应能力至关重要,它要求安全工具能够同步发展和适应。 4. **全面评估**由 Watchtower 提供,涵盖了广泛的漏洞评估,识别和分析各种风险。它仔细检查潜在威胁的各个方面,确保个人和组织全面了解其安全态势。 5. **行业标准合规性**通过与 OWASP、MITRE 和 CWE 等知名安全标准保持一致来确保。这种合规性保证了 Watchtower 遵循全球公认的安全实践,建立了安全基线并培养了利益相关者之间的信任。 6. **效率与可扩展性**通过自动化评估实现,显著加速了安全工作流程。对于扩展其 AI/ML 计划的组织而言,这种效率至关重要,可确保在扩展期间安全性不会阻碍开发过程。 7. **无缝集成**是一项有价值的功能,它允许 Watchtower 与流行的 AI/ML 平台和代码库轻松集成。它简化了将 Watchtower 纳入现有开发生态系统中的过程,精简了安全实施并确保了跨平台的一致性。 8. **明智的决策**由 Watchtower 生成的详细漏洞报告提供支持。 这些报告使组织能够优先采取行动并有效分配资源,从而能够及时解决严重漏洞并实现资源的最佳利用。 9. **竞争优势**通过在安全性至关重要的市场中利用像 Watchtower 这样的高级安全工具来获得。这种优势不仅吸引了客户和最终用户,还增强了利益相关者的信心。它强调了组织保护其 AI/ML 资产免受从模型篡改到未经授权的数据访问等各种风险的承诺。这种综合评估确保了对所有可能漏洞的彻底检查,在保护 AI/ML 资产方面不遗余力。 ## 限制 1. 对扫描来自3 bucket 的 .pb 文件的支持有限。 2. Presidio 分析器的最大长度限制为 1000000(1GB)。任何大于 1GB 的数据都不会被捕获在报告中。 3. Whispers 库和 Watchtower 严重性级别之间的严重性级别可能存在不匹配。 4. 本地:Docker UI 不支持文件/文件夹上传。 ### 即将推出的功能 1. 通过使用这些能更准确地检测漏洞的定制版本来减少误报。 2. 结合针对不同级别的上下文规则,优化 PII 严重性评估。 3. 通过增加对 embedding 层潜在问题的检查来增强模型漏洞检测。 4. 与 Github actions 集成 ## 已知问题 1. 在 watchtower 分析期间从 GitHub 和 Hugging Face 克隆的代码库在分析后不会被自动移除。建议手动删除位于 'src' 目录中的这些文件夹。 ## 许可协议 本项目基于 Apache 许证授权。详情请参阅 [LICENSE](LICENSE.md)。 ## 鸣谢 首先,我们要向充满活力的开源社区致以最深的谢意。AIShield 建立的 AI Watchtower 的基础建立在无数贡献者分享的集体智慧、工具和见解之上。能站在这些巨人的肩膀上是我们的荣幸: - [Yelp 的 detect-secrets](https://github.com/Yelp/detect-secrets):用于扫描配置以防止意外提交敏感数据。 - [Safety](https://github.com/pyupio/safety):用于扫描 python 依赖项中已知的安全漏洞,并为检测到的漏洞建议适当的修复措施。 - [Whispers](https://github.com/Skyscanner/whispers) :识别静态结构化文本中硬编码的机密信息 - [Whispers:高级机密信息检测](https://medium.com/@SkyscannerEng/whispers-advanced-secrets-detection-15dd64a9dfb7) - [Presidio Analyzer](https://microsoft.github.io/presidio/analyzer/):Presidio analyzer 是一个基于 Python 的服务,用于检测文本中的 PII 实体 - [PII 机密性影响级别](https://www.dvidshub.net/image/6145774/pii-confidentiality-impact-levels) - [面向开发者的顶级开源许可协议与法律风险](https://www.synopsys.com/blogs/software-security/top-open-source-licenses.html) - [安全的 API 密钥](https://blog.hubspot.com/website/api-keys) - [OWASP Top 10:漏洞与过时组件](https://owasp.org/Top10/A06_2021-Vulnerable_and_Outdated_Components/) - [Chris Anley - 机器学习系统的实用攻击](https://research.nccgroup.com/2022/07/06/whitepaper-practical-attacks-on-machine-learning-systems/) - [Abhishek Kumar - 使用 Python Pickle 模块的不安全反序列化](https://medium.com/@abhishek.dev.kumar.94/sour-pickle-insecure-deserialization-with-python-pickle-module-efa812c0d565) - [Shibin B Shaji - 使用 Python 的 pickling 解释不安全反序列化](https://medium.com/@shibinbshaji007/using-pythons-pickling-to-explain-insecure-deserialization-5837d2328466) - TensorFlow 模型比较:来自 Saturn Cloud 的见解 [[1](https://saturncloud.io/blog/how-to-convert-a-tensorflow-frozen-graph-to-savedmodel/), [2](https://saturncloud.io/blog/list-of-tensor-names-in-graph-in-tensorflow/), [3](https://saturncloud.io/blog/how-to-examine-the-feature-weights-of-a-tensorflow-linearclassifier/) ] - [TensorFlow 利用恶意模型进行远程代码执行](https://splint.gitbook.io/cyberblog/security-research/tensorflow-remote-code-execution-with-malicious-model) - [TensorFlow layers embedding 导致内存泄漏](https://github.com/tensorflow/tensorflow/issues/30952) - [在 Tensorflow 中为未知词汇添加 embedding](https://saturncloud.io/blog/how-to-add-new-embeddings-for-unknown-words-in-tensorflow/) - [机器学习中的数据泄露](https://towardsdatascience.com/data-leakage-in-machine-learning-how-it-can-be-detected-and-minimize-the-risk-8ef4e3a97562) - [竞态条件与安全的文件操作](https://developer.apple.com/library/archive/documentation/Security/Conceptual/SecureCodingGuide/Articles/RaceConditions.html) - [Nuthdanai Wangpratham - 特征缩放对准确预测的重要性](https://medium.datadriveninvestor.com/scaling-for-success-why-feature-scaling-matters-for-accurate-predictions-6e4f29fe58b7) - [预测隐藏神经元如何以及何时扭曲测量到的突触相互作用](https://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1006490) - [TensorFlow 机器学习框架中的反序列化漏洞允许任意代码执行](https://portswigger.net/daily-swig/deserialization-bug-in-tensorflow-machine-learning-framework-allowed-arbitrary-code-execution) - [Tom Bonner - 深入探讨 TensorFlow 和 Keras 中的安全风险](https://hiddenlayer.com/research/models-are-code/) - [MLOps Pipeline 中的安全](https://irmcon.com/blog/security-in-mlops-pipeline/) - [应用于 AI/ML 模型的传统攻击向量](https://5stars217.github.io/2023-03-30-on-malicious-models/) - [Pickle Scanner 参考 github 链接 ](https://github.com/mmaitre314/picklescan/tree/main) - [Pickle Scanner 库的 Pypi 参考链接](https://pypi.org/project/picklescan/) ……以及许多其他在开源许可协议、API 密钥安全、MLOps pipeline 安全等方面贡献知识的人。 在创建 AI Watchtower 的过程中,这是我们对这个令人难以置信的社区的一点微薄回馈。我们受到协作精神的启发,很高兴能为开源知识的浩瀚沙漠贡献我们的一粒沙。让我们携手继续为大家让 AI 的环境变得更安全、更稳健!
标签:AI供应链安全, Jupyter Notebook, Python, 人工智能安全, 合规性, 安全检测工具, 插件系统, 无后门, 机器学习模型, 漏洞扫描