
تنسيق NDJSON محايد تجاه المورد لرسم بياني للهجمات مع تصنيف العُقد والحواف، وتعيينات AWS/GCP/Azure، وقواعد الاشتقاق، وقاعدة بيانات للتعرض لأدوات الأمن الهجومي.
رسم بياني للهجوم يمكنك فعلاً تسليمه لشخص آخر.
كل منتج أمني قائم على الرسوم البيانية يحتفظ برسمك البياني للهجوم محبوساً داخل مخزن خاص. لا يمكنك تصديره، ولا مقارنة فحصين، ولا وضعه تحت التحكم بالإصدارات، ولا الاستعلام عنه بأي شيء غير واجهة البائع نفسه. وعندما ينتهي الارتباط، يذهب الرسم البياني معه.
RAGE هو تنسيق ملف محايد تجاه البائعين للرسوم البيانية الأمنية الهجومية، بالإضافة إلى المجموعة المفتوحة التي تمنحه المعنى: تصنيف العُقد والحواف، وخرائط AWS/GCP/Azure ووصفات الجمع، وقواعد اشتقاق الحواف. ملف واحد. أي لغة. خذه واذهب.
الحالة: مسودة مبكرة (spec_version: 0.1). غير مستقرة بعد؛ الملاحظات وطلبات السحب
مرحب بها.
رسم RAGE البياني هو ملف NDJSON واحد (كائن JSON واحد لكل سطر). السطر 1 هو البيان؛
وكل سطر آخر هو سجل موسوم بـ kind.
{"kind":"manifest","spec_version":"0.1"}
{"kind":"node","node_id":"gcp|proj-a|gcp:iam:service-account|sa-deploy","node_type":"ServiceAccount"}
{"kind":"node","node_id":"gcp|proj-a|gcp:iam:service-account|sa-admin","node_type":"ServiceAccount"}
{"kind":"node","node_id":"gcp|proj-a|gcp:storage:bucket|bucket-crown","node_type":"ObjectStorage"}
{"kind":"edge","type":"CanImpersonate","source":"gcp|proj-a|…|sa-deploy","target":"gcp|proj-a|…|sa-admin"}
{"kind":"edge","type":"CanReadData","source":"gcp|proj-a|…|sa-admin","target":"gcp|proj-a|…|bucket-crown"}
{"kind":"finding","resource_id":"gcp|proj-a|…|bucket-crown","severity":"critical"}
سلسلة من قفزتين تحترم التصنيف: يمكن لـ sa-deploy انتحال هوية sa-admin (حافة من
هوية إلى هوية)، والتي يمكنها قراءة دلو الجواهر الثمينة (من هوية إلى تخزين).
اقرأه في ثلاثة أسطر بأي لغة:
for line in open("graph.rage.ndjson"): rec = json.loads(line) # switch on rec["kind"]
jq 'select(.kind=="edge" and .type=="CanImpersonate")' graph.rage.ndjson
سلسلة المصدر هي evidence (API) ثم fact ثم edge/finding، مرتبطة بالمعرّفات.
يأتي node_type ونوع الحافة type من السجلات المفتوحة في vocab/. كل ما
عدا ذلك إثراء اختياري. انظر spec/format.md.
التنسيق نصف RAGE فقط. النصف الآخر هو المجموعة المشتركة التي تمنح الأنواع معناها، بحيث
تتفق أداتان مستقلتان على ما هو CanImpersonate وأين يمكن أن تتسرب بيانات الاعتماد:
vocab/): 105 نوع عقدة في 10 أصناف، و80 نوع حافة في 9 فئات.providers/): 219 نوع مورد أصلي عبر AWS وGCP وAzure، كل منها مُعيَّن إلى نوع عقدة عام مع الاستدعاءات التي تعدّده.rules/): العقد في rules/derivation.json بالإضافة إلى أكثر من 2,400 قاعدة match/where/emit قابلة للتنفيذ لكيفية اشتقاق الحواف.exposure-db/): 1,049 موقع تسرب بيانات اعتماد مُعيَّن، كل منها مرتبط بحافة RAGE التي يصدرها والوصفة التي تقرأه.المجموعة كاملة، مقروءة للبشر، في TAXONOMY.md.
صُمِّم RAGE بحيث يمكن لأي شخص إنتاجه أو استهلاكه. التنسيق هو العقد؛ والأدوات قابلة للتبادل، والقائمة مفتوحة.
RAGE هو التنسيق، وThunderstorm ينتجه، وBlaze يستكشفه.
| التطبيق | الدور | الموقع |
|---|---|---|
| Thunderstorm | منتج: جامع سحابي للقراءة فقط + محرك اشتقاق | github.com/ustayready/thunderstorm |
| أداتك هنا | منتج أو مستهلك | أصدر أو اقرأ .rage.ndjson وسيتوافق |
أي شيء يقرأ أو يكتب التنسيق يتحدث RAGE. المنتجات والمحركات المتوافقة تتوافق مع السجلات
في هذا المستودع؛ ولا يعتمد RAGE على أي منها. انظر COMPATIBILITY.md
لكيفية تثبيت التطبيقات على spec_version.
spec/format.md - تنسيق النقل (السجلات، قواعد node_id، .rage.zip، النطاق).spec/edges.md - دلالات الحواف: الاتجاه/العبور، state، weight/walkable، التقنين.spec/rules.md - دلالات تقييم القواعد: النقطة الثابتة، دمج الحالة، كتالوج الدوال.schemas/ - JSON Schema لجميع أنواع السجلات الثمانية.vocab/ - node-types.json + edge-types.json + conditions.json.rules/derivation.json - عقد اشتقاق الحواف (لكل حافة: الشروط + الأذونات/المحفزات لكل سحابة).python3 -m venv .venv && ./.venv/bin/pip install -r requirements.txt
./.venv/bin/python validate/rage_validate.py examples/minimal.rage.ndjson # full JSON Schema + refs
./.venv/bin/python validate/check_registries.py # registry integrity
./.venv/bin/python validate/check_rules.py # rule corpus vs vocab
يشغّل CI كل ما سبق بالإضافة إلى بوابة gen_taxonomy لمنع الانحراف.
Apache-2.0 (انظر LICENSE).
| kind | الحقول المطلوبة | الغرض |
|---|
manifest | spec_version | السطر 1: الإصدار + عدّادات/نطاق/منتج اختيارية |
node | node_id, node_type | مورد أو هوية |
edge | source, target, type | قدرة أو علاقة |
fact | fact_id | ملاحظة مُوحَّدة بُني الرسم البياني منها |
evidence | evidence_id, content_hash | إيصال مقاوم للتلاعب (عملية API/جمع) |
finding | resource_id, severity | تعرّض |
surface / path | - | أنواع امتداد اختيارية |
rules/{derived,explicit}/** - المجموعة القابلة للتنفيذ من أكثر من 2,400 قاعدة match/where/emit.providers/{aws,gcp,azure}.json - تعيينات من الأصلي إلى العام + وصفات العُقد + وصفات الحقائق.exposure-db/{aws,gcp,azure}.json + vocabulary.json - قاعدة بيانات التعرّض (1,049 موقع تسرب).TAXONOMY.md - المجموعة كاملة، مقروءة للبشر (مُولَّدة من السجلات أعلاه).tools/rage_engine.py - محرك القواعد المرجعي: يشغّل مجموعة القواعد المشتقة على رسم بياني حتى نقطة ثابتة.validate/ - مدققات السجلات (JSON Schema كامل)، والسجلات، وسلاسل الأذونات، ومجموعة القواعد.examples/ - رسم بياني صالح بسيط يمارس جميع أنواع السجلات الثمانية.