
विक्रेता-तटस्थ NDJSON आक्रमण-ग्राफ़ प्रारूप, जिसमें नोड/एज वर्गीकरण, AWS/GCP/Azure मैपिंग, व्युत्पत्ति नियम, और आक्रामक सुरक्षा टूलिंग के लिए एक एक्सपोज़र DB शामिल है।
एक अटैक ग्राफ जिसे आप वास्तव में किसी और को सौंप सकते हैं।
हर ग्राफ-आधारित सुरक्षा उत्पाद आपके अटैक ग्राफ को एक मालिकाना स्टोर के अंदर बंद रखता है। आप इसे एक्सपोर्ट नहीं कर सकते, दो स्कैन का डिफ नहीं ले सकते, इसे वर्ज़न कंट्रोल में नहीं रख सकते, या विक्रेता के अपने UI के अलावा किसी और चीज़ से क्वेरी नहीं कर सकते। जब एंगेजमेंट खत्म होता है, तो ग्राफ भी साथ चला जाता है।
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, जो ids से जुड़े हैं। node_type और एज type vocab/ में खुले रजिस्ट्रियों से आते हैं। बाकी सब वैकल्पिक संवर्धन है। देखें spec/format.md।
फ़ॉर्मेट RAGE का आधा हिस्सा है। दूसरा आधा वह साझा कॉर्पस है जो प्रकारों को अर्थ देता है, ताकि दो स्वतंत्र टूल इस बात पर सहमत हों कि CanImpersonate क्या है और एक क्रेडेंशियल कहाँ लीक हो सकता है:
vocab/): 10 वर्गों में 105 नोड प्रकार, 9 श्रेणियों में 80 एज प्रकार।providers/): AWS, GCP, और Azure में 219 नेटिव संसाधन प्रकार, प्रत्येक एक जेनेरिक नोड प्रकार से मैप किया गया, साथ में उसे एन्यूमरेट करने वाली कॉल्स।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/ - सभी 8 रिकॉर्ड प्रकारों के लिए 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 - एक्सपोज़र DB (1,049 लीक साइट्स)।TAXONOMY.md - पूरा कॉर्पस, मानव-पठनीय (ऊपर के रजिस्ट्रियों से जनित)।tools/rage_engine.py - संदर्भ रूल इंजन: एक ग्राफ पर डेरिव्ड-रूल कॉर्पस को फ़िक्सपॉइंट तक चलाता है।validate/ - रिकॉर्ड (पूर्ण JSON Schema), रजिस्ट्री, परमिशन-स्ट्रिंग, और रूल-कॉर्पस वैलिडेटर।examples/ - एक न्यूनतम वैध ग्राफ जो सभी 8 रिकॉर्ड प्रकारों का अभ्यास करता है।