
JAW: क्लाइंट-साइड जावास्क्रिप्ट के लिए एक ग्राफ-आधारित सुरक्षा विश्लेषण ढांचा
J A W
वेबसाइट | दस्तावेज़ | सेटअप | क्रॉलर | त्वरित आरंभ डॉकर (उदाहरण)
एक ओपन-सोर्स, प्रोटोटाइप कार्यान्वयन JavaScript के लिए प्रॉपर्टी ग्राफ का, जो esprima पार्सर और EsTree SpiderMonkey Spec पर आधारित है। JAW का उपयोग वेब अनुप्रयोगों और JavaScript-आधारित प्रोग्रामों के क्लाइंट-साइड विश्लेषण के लिए किया जा सकता है।
यह प्रोजेक्ट GNU AFFERO GENERAL PUBLIC LICENSE V3.0 के अंतर्गत लाइसेंस प्राप्त है। अधिक जानकारी के लिए यहाँ देखें।
JAW की एक Github पेज वेबसाइट https://soheilkhodayari.github.io/JAW/ पर उपलब्ध है।
रिलीज़ नोट्स:
JAW-V2 शाखा देखें।JAW-V1 शाखा देखें।JAW की संरचना नीचे दिखाई गई है।
JAW का उपयोग दो अलग-अलग तरीकों से किया जा सकता है:
सामान्य JavaScript विश्लेषण: प्रोग्राम के फ़ाइल सिस्टम path को निर्दिष्ट करके किसी भी JavaScript प्रोग्राम के मॉडलिंग और विश्लेषण के लिए JAW का उपयोग करें।
वेब अनुप्रयोग विश्लेषण: एक एकल सीड URL प्रदान करके वेब अनुप्रयोग का विश्लेषण करें।
एकत्रित वेब संसाधनों का उपयोग करके एक हाइब्रिड प्रोग्राम ग्राफ (HPG) बनाएं, जिसे Neo4j डेटाबेस में आयात किया जाएगा।
वैकल्पिक रूप से, HPG निर्माण मॉड्यूल को सिमैंटिक प्रकारों का मैपिंग कस्टम JavaScript भाषा टोकन प्रदान करें, जिससे उनके उद्देश्य (जैसे, HTTP अनुरोध फ़ंक्शन) के आधार पर JavaScript फ़ंक्शनों का वर्गीकरण सुविधाजनक होगा।
विभिन्न विश्लेषणों के लिए निर्मित Neo4j ग्राफ डेटाबेस से क्वेरी करें। JAW डेटा प्रवाह विश्लेषण, नियंत्रण प्रवाह विश्लेषण, पहुंच योग्यता विश्लेषण और पैटर्न मिलान के लिए उपयोगिता ट्रैवर्सल प्रदान करता है। इन ट्रैवर्सल का उपयोग कस्टम सुरक्षा विश्लेषण विकसित करने के लिए किया जा सकता है।
JAW में क्लाइंट-साइड CSRF, DOM क्लॉबरिंग और अनुरोध हाईजैकिंग भेद्यताओं का पता लगाने के लिए बिल्ट-इन ट्रैवर्सल भी शामिल हैं।
आउटपुट उसी फ़ोल्डर में संग्रहीत किए जाएंगे जहां इनपुट है।
स्थापना स्क्रिप्ट निम्नलिखित पूर्वापेक्षाओं पर निर्भर करती है:
npm package manager का नवीनतम संस्करण (node js)python 3.x का कोई स्थिर संस्करणpip पैकेज मैनेजरउसके बाद, आवश्यक निर्भरताएं इस प्रकार स्थापित करें:
$ ./install.sh
विस्तृत स्थापना निर्देशों के लिए, कृपया यहाँ देखें।
आप पाइपलाइन का एक उदाहरण बैकग्राउंड स्क्रीन में इस प्रकार चला सकते हैं:
$ python3 -m run_pipeline --conf=config.yaml
CLI निम्नलिखित विकल्प प्रदान करता है:
$ python3 -m run_pipeline -h
usage: run_pipeline.py [-h] [--conf FILE] [--site SITE] [--list LIST] [--from FROM] [--to TO]
यह स्क्रिप्ट टूल पाइपलाइन चलाती है।
वैकल्पिक तर्क:
-h, --help यह सहायता संदेश दिखाएं और बाहर निकलें
--conf FILE, -C FILE पाइपलाइन कॉन्फ़िगरेशन फ़ाइल। (डिफ़ॉल्ट: config.yaml)
--site SITE, -S SITE परीक्षण करने के लिए वेबसाइट; कॉन्फ़िग फ़ाइल को ओवरराइड करता है (डिफ़ॉल्ट: None)
--list LIST, -L LIST परीक्षण करने के लिए साइट सूची; कॉन्फ़िग फ़ाइल को ओवरराइड करता है (डिफ़ॉल्ट: None)
--from FROM, -F FROM साइट सूची प्रदान करने पर विचार करने के लिए पहली प्रविष्टि; कॉन्फ़िग फ़ाइल को ओवरराइड करता है (डिफ़ॉल्ट: -1)
--to TO, -T TO साइट सूची प्रदान करने पर विचार करने के लिए अंतिम प्रविष्टि; कॉन्फ़िग फ़ाइल को ओवरराइड करता है (डिफ़ॉल्ट: -1)
इनपुट कॉन्फ़िग: JAW इनपुट के रूप में एक .yaml कॉन्फ़िग फ़ाइल की अपेक्षा करता है। एक उदाहरण के लिए config.yaml देखें।
संकेत: कॉन्फ़िग फ़ाइल विभिन्न पास (जैसे, क्रॉलिंग, स्थैतिक विश्लेषण, आदि) निर्दिष्ट करती है जिन्हें प्रत्येक भेद्यता वर्ग के लिए सक्षम या अक्षम किया जा सकता है। यह उपकरण बिल्डिंग ब्लॉक्स को व्यक्तिगत रूप से या अलग-अलग क्रम में चलाने की अनुमति देता है (जैसे, पहले सभी वेबएप्प क्रॉल करें, फिर सुरक्षा विश्लेषण करें)।
एक त्वरित उदाहरण चलाने के लिए जो प्रॉपर्टी ग्राफ बनाने और उस पर Cypher क्वेरी चलाने का प्रदर्शन करता है, ऐसा करें:
$ python3 -m analyses.example.example_analysis --input=$(pwd)/data/test_program/test.js