
مُجمِّع OpenGraph لـ BloodHound الذي يرسم خريطة مسارات الهجوم من البنية التحتية لـ DevOps إلى MLOps، ويجمع موارد خط أنابيب CI/CD، ومدير الخدمة، ومنصة ML لتحليل الحركة الجانبية.
مجموعة أدوات إثبات المفهوم لجمع OpenGraph لـ BloodHound والتي ترسم مسارات الهجوم من DevOps إلى بنية MLOps.
استنادًا إلى Pipelines of Privilege: Attack Paths from DevOps to MLOps Infrastructure بقلم Brett Hawkins (@h4wkst3r).
Dop2Mop يجمع البيانات من منصات DevOps وMLOps لتحديد مسارات الهجوم التي تتيح الحركة الجانبية من خطوط أنابيب CI/CD إلى بنية التدريب على التعلم الآلي. ينتج JSON بتنسيق OpenGraph المتوافق مع BloodHound للتصور والتحليل.
| منصات DevOps | منصات MLOps | مزودو الهوية |
|---|---|---|
| GitHub (الإجراءات، المستودعات، الأسرار) | Azure Machine Learning | خدمة Azure AD الأساسية |
| Azure DevOps (خطوط الأنابيب، اتصالات الخدمة) | Amazon SageMaker | أدوار AWS IAM هوية OIDC/متحدة |
Dop2Mop يصمم حدود الثقة الخمسة الحرجة التي تم تحديدها في البحث:
git clone https://github.com/h4wkst3r/dop2mop.git cd dop2mop pip install -r requirements.txt pip install -e .
## ما يتم جمعه
يقوم كل جامع بجمع الموارد الخاصة بالمنصة ورسم خرائط لحدود الثقة بينها:
| جامع | الموارد التي تم جمعها |
|-----------|-------------------|
| **GitHub** | Organizations, repositories, workflows, secrets, branch protection rules, OIDC configurations, container image references, S3 bucket references |
| **Azure DevOps** | Organizations, projects, pipelines (YAML), service connections (with scope details), variable groups, agent pools, repositories |
| **Azure ML** | Workspaces, compute clusters/instances, datastores, ML environments, registered models, jobs/experiments, online & batch endpoints |
| **SageMaker** | Training jobs, models, endpoints, domains, notebook instances, IAM execution roles (with policy analysis), ECR repositories/images, S3 buckets (filtered to ML-relevant) |
## بداية سريعة
### إنشاء بيانات تجريبية
أسرع طريقة لرؤية Dop2Mop وهي تعمل هي إنشاء بيانات تجريبية تعرض سيناريوهات الهجوم من البحث:```bash
dop2mop demo -o demo.json
// Container Image Poisoning (Supply Chain Attack) MATCH p=(workflow)-[:CanPoisonImage]->(image)<-[:PullsImage]-(job) RETURN p
// OIDC/Federated Identity Abuse (confirmed edges) MATCH p=(workflow)-[:OIDCTrust]->(oidc)-[:CanAssumeRole]->(role)-[:SubmitsJob]->(job) RETURN p
// OIDC abuse including inferred paths MATCH p=(workflow)-[:OIDCTrust]->(oidc)-[:InferredCanAssumeRole]->(role) RETURN p
// Dataset Poisoning via Pickle Deserialization MATCH p=(workflow)-[:CanPoisonDataset]->(dataset)<-[:LoadsDataset]-(job) RETURN p
// Find repos with weak/no branch protection (TB1 exploitable) MATCH (repo)-[:BypassesProtection]->(repo) RETURN repo.name, repo.default_branch
// Find overprivileged SageMaker IAM roles MATCH (role:IAMRole) WHERE role.is_admin = true OR role.has_s3_full_access = true RETURN role.name, role.attached_policies
// Find SageMaker notebooks with root + internet access MATCH (nb:SMNotebook) WHERE nb.root_access = 'Enabled' AND nb.direct_internet_access = 'Enabled' RETURN nb.name, nb.status
// Find self-hosted ADO agent pools MATCH (agent:ADOAgent) WHERE agent.is_hosted = false RETURN agent.name, agent.pool_type
---
## التهيئة
### ملف التهيئة
بدلاً من تمرير بيانات الاعتماد في كل تشغيل، يمكنك حفظها في ملف تهيئة. انسخ المثال المرفق واملأ القيم الخاصة بك:```bash
cp dop2mop.yaml.example dop2mop.yaml
# Edit dop2mop.yaml with your credentials
يتحقق Dop2Mop من هذه المواقع بالترتيب:
--configdop2mop.yaml / dop2mop.yml / .dop2mop.yaml في الدليل الحالي~/.dop2mop.yamlملاحظة:
dop2mop.yamlموجود في.gitignoreلمنع إضافة بيانات الاعتماد عن طريق الخطأ. الملف النموذجي (dop2mop.yaml.example) آمن للإضافة.
انظر dop2mop.yaml.example لجميع الخيارات المتاحة مع التعليقات.
ترتيب الأولوية: وسيطات سطر الأوامر > ملف الإعداد > متغيرات البيئة.
اختبر بيانات الاعتماد قبل تشغيل مجموعة كاملة:```bash
dop2mop collect --validate -v
dop2mop collect --validate --collectors github,sagemaker -v
يؤدي ذلك إلى إجراء استدعاء API خفيف لكل منصة للتحقق من صحة الرموز قبل بدء الجمع.
### أسماء مستعارة للمجمعين
يمكنك استخدام أسماء قصيرة بدلاً من أسماء الفئات الكاملة باستخدام `--collectors`:
| الاسم المستعار | المجمع |
|-------|-----------|
| `github`, `gh` | GitHubCollector |
| `ado`, `azuredevops`, `azure-devops` | AzureDevOpsCollector |
| `azureml`, `azure-ml` | AzureMLCollector |
| `sagemaker`, `sm` | SageMakerCollector |```bash
# These are equivalent:
dop2mop collect --collectors GitHubCollector,SageMakerCollector
dop2mop collect --collectors github,sagemaker
dop2mop collect --collectors gh,sm
dop2mop [options]
Commands: collect Collect data from DevOps/MLOps platforms demo Generate demo data with attack scenarios
### الخيارات العامة