इस प्रोजेक्ट के बारे में

# Zentra CLI Zentra एक ओपन-सोर्स, AI-संचालित एप्लिकेशन सुरक्षा CLI है जो डेवलपर्स के लिए डिज़ाइन किया गया है। यह फ्रेमवर्क विश्लेषण, थ्रेट मॉडलिंग, स्टैटिक विश्लेषण (SAST), सप्लाई-चेन, API, और इंफ्रास्ट्रक्चर-एज़-कोड (IaC) स्कैनर का उपयोग करके कोडबेस में सुरक्षा जोखिमों को स्कैन करता है। यह इंटरैक्टिव टर्मिनल इंटरफेस के साथ स्थानीय रूप से या CI पाइपलाइनों में हेडलेस रूप से चल सकता है। बाइनरी का नाम `zentra` है। ## विशेषताएँ - **हेडलेस CI मोड** GitHub Actions और GitLab मर्ज रिक्वेस्ट पाइपलाइनों के लिए। - **LLM-समर्थित स्कैनर ऑर्केस्ट्रेशन** जिसमें Anthropic, OpenAI-संगत, Claude CLI, और प्रयोगात्मक Codex CLI प्रदाता शामिल हैं। - **डायनेमिक ब्राउज़र पेंटेस्ट मोड** अधिकृत लक्ष्यों के लिए। - **कई आउटपुट प्रारूप**: Markdown, JSON, SARIF, और `.zentra/` के अंतर्गत स्टाइलिश HTML। - **एन्क्रिप्टेड-एट-रेस्ट क्रेडेंशियल स्टोरेज** (Windows पर DPAPI, Unix पर `0600` फाइलें)। ## इंस्टॉलेशन ### त्वरित इंस्टॉल (अनुशंसित) कोई Rust टूलचेन, रिपॉजिटरी क्लोन, या बिल्ड चरण आवश्यक नहीं है। ```bash curl --proto '=https' --tlsv1.2 -LsSf https://github.com/johannus22/zentra/releases/latest/download/zentra-cli-installer.sh | sh ``` Windows PowerShell के लिए: ```powershell powershell -ExecutionPolicy Bypass -c "irm https://github.com/johannus22/zentra/releases/latest/download/zentra-cli-installer.ps1 | iex" ``` बाद में एक नई टर्मिनल विंडो खोलें ताकि `zentra` उपलब्ध हो। मैन्युअल रूप से इंस्टॉल करने के लिए, [Releases पेज](https://github.com/johannus22/zentra/releases) से एक बिल्ड डाउनलोड करें। > **Linux नोट:** बाइनरी OS कीरिंग एक्सेस के लिए रनटाइम पर `libdbus` से लिंक करता है। न्यूनतम या हेडलेस इमेज पर, इसे पहले इंस्टॉल करें (`sudo apt-get install -y libdbus-1-3` या समकक्ष)। वैकल्पिक रूप से, एन्क्रिप्टेड फ़ाइल-आधारित क्रेडेंशियल स्टोर का उपयोग करने के लिए `ZENTRA_NO_OS_KEYCHAIN=1` सेट करें। ### स्रोत से इंस्टॉल स्थानीय रूप से बिल्ड और चलाएँ: ```bash cargo build ``` रिपॉजिटरी चेकआउट से बाइनरी इंस्टॉल करें: ```bash cargo install --path . ``` ## उपयोग TUI प्राथमिक स्थानीय अनुभव है जो प्रदाता कॉन्फ़िगर करने, स्कैन शुरू करने, और परिणाम समीक्षा करने के लिए है। मुख्य मेनू स्टैटिक एप्लिकेशन सुरक्षा परीक्षण (SAST), डायनेमिक एप्लिकेशन सुरक्षा परीक्षण (DAST), और विविध क्रियाओं को समूहित करता है। ### स्कैन कमांड केवल एक स्कैनर परिवार चलाएँ: ```bash zentra scan --only sast zentra scan --only supply-chain zentra scan --only api zentra scan --only iac ``` प्रत्येक स्कैनर को संदर्भ-जाँचित रिपॉजिटरी पैक देने के लिए `--pack` का उपयोग करें। स्कैन स्थिति `.zentra/checkpoint.json` पर संग्रहीत होती है जो वृद्धिशील रन के लिए होती है। SAST 50 ReAct प्रदाता राउंड तक उपयोग कर सकता है; अन्य स्कैनर 30 तक। स्थानीय `zentra scan` रन में एक स्थायी रीड-ओनली चैट पैन शामिल होता है। चैट सीमित, संक्षिप्त स्कैन और रिपॉजिटरी प्रश्नों का उत्तर एक रीड-ओनली प्रोफ़ाइल (`list_files`, `read_file`, `grep_code`, और सीमित Git कमांड) के साथ देता है। यह टाइप किए गए फोकस/रीरन या कमजोरी-श्रेणी क्रियाओं का प्रस्ताव कर सकता है, लेकिन न तो मॉडल आउटपुट और न ही टूल कॉल स्थानीय पुष्टि के बिना एक को लागू कर सकता है। पुष्टि की गई क्रियाएँ चेकपॉइंट में संग्रहीत होती हैं और केवल अगले स्कैन पर लागू होती हैं। चैट `zentra ci` या अन्य हेडलेस स्कैन पथों में उपलब्ध नहीं है। ### CI सुरक्षा स्कैनिंग Zentra में एक समर्पित CI कमांड शामिल है: ```bash zentra ci ``` `zentra ci` `zentra scan` का उपनाम नहीं है। यह GitHub Actions या GitLab CI का पता लगाता है, पुष्टि करता है कि जॉब PR/MR पाइपलाइन में चलता है, बिना TUI के फोकस्ड सुरक्षा स्कैनर चलाता है, CI आर्टिफैक्ट लिखता है, और केवल विफलता सीमा के बराबर या उससे ऊपर के निष्कर्षों या स्कैनर/सिस्टम विफलताओं के लिए विफल होता है। डिफ़ॉल्ट रूप से, `zentra ci` किसी भी **क्रिटिकल या हाई** निष्कर्ष पर PR/MR को ब्लॉक करता है। मध्यम, निम्न, और सूचना निष्कर्ष रिपोर्ट किए जाते हैं लेकिन जॉब विफल नहीं करते। #### विफलता सीमा `ZENTRA_CI_FAIL_THRESHOLD` पर्यावरण चर सेट करें (`critical`, `high`, `medium`, `low`, `info` में से एक) या `.zentra/config.json` में `fail_threshold` फ़ील्ड का उपयोग करें। उदाहरण GitHub Actions जॉब: ```yaml - name: Run Zentra CI env: ZENTRA_API_KEY: ${{ secrets.ZENTRA_API_KEY }} ZENTRA_PROVIDER_MODEL: ${{ vars.ZENTRA_PROVIDER_MODEL }} ZENTRA_CI_FAIL_THRESHOLD: critical run: zentra ci ``` #### GitLab CI GitLab CI वर्कफ़्लो `staging` पर पुश के लिए एक दूसरा जॉब भेजता है। यह एक पूर्ण रिपॉजिटरी स्कैन चलाता है, कभी पाइपलाइन विफल नहीं करता, और `security` और `zentra-triage` लेबल के साथ एक GitLab इश्यू फाइल या अपडेट करता है। मास्क किए गए CI/CD चर के रूप में `api` स्कोप के साथ एक व्यक्तिगत एक्सेस टोकन का उपयोग करें। CI आर्टिफैक्ट `.zentra/ci-report.md`, `.zentra/ci-report.json`, और `.zentra/ci-report.html` पर रहते हैं। #### CI पर्यावरण चर | चर | आवश्यक | नोट्स | |----------|----------|-------| | `ZENTRA_API_KEY` | हाँ | गुप्त — LLM प्रदाता API कुंजी | | `ZENTRA_PROVIDER_BASE_URL` | हाँ | गुप्त या चर — जैसे, `https://api.anthropic.com` | | `ZENTRA_PROVIDER_MODEL` | हाँ | चर — जैसे, `claude-sonnet-5` | | `ZENTRA_PROVIDER_KIND` | नहीं | डिफ़ॉल्ट `openai_compat` | | `ZENTRA_PROVIDER_REASONING_EFFORT` | नहीं | OpenAI-संगत प्रदाताओं को पास करता है | | `ZENTRA_PROVIDER_CONTEXT_WINDOW` | नहीं | प्रदाता के डिफ़ॉल्ट संदर्भ विंडो को ओवरराइड करता है | | `ZENTRA_CI_FAIL_THRESHOLD` | नहीं | न्यूनतम गंभीरता जो PR ब्लॉक करती है | यदि `ZENTRA_API_KEY`, `ZENTRA_PROVIDER_BASE_URL`, या `ZENTRA_PROVIDER_MODEL` में से कोई भी सेट नहीं है, तो `zentra ci` `~/.zentra/config.toml` में `zentra config setup` के साथ कॉन्फ़िगर की गई प्रोफ़ाइल पर वापस जाता है। ### CI वर्कफ़्लो उत्पन्न करें ```bash zentra init --ci github # GitHub Actions वर्कफ़्लो बनाएँ zentra init --ci gitlab # GitLab CI जॉब बनाएँ ``` ### पेंटेस्ट मोड Zentra में लाइव वेब लक्ष्यों के लिए एक अधिकृत डायनेमिक पेंटेस्ट मोड शामिल है: ```bash zentra pentest --url https://target.example --authorized \ --allow-host target.example \ --allow-host api.target.example ``` `--authorized` फ़्लैग आवश्यक है, इसलिए गलती से स्कैन विफल-बंद होता है। केवल उन सिस्टमों पर यह मोड चलाएँ जिनके मालिक आप हैं या जिनके परीक्षण की स्पष्ट अनुमति है। पथों को बाहर करने के लिए `--exclude-path` और एक डोमेन और उसके सभी सबडोमेन की अनुमति देने के लिए `--scope-domain` का उपयोग करें। पेंटेस्ट मोड अपने अलग टूलचेन के लिए `zentra/pentest-sandbox:0.1.0` Docker इमेज का उपयोग करता है। कस्टम इमेज के लिए `ZENTRA_SANDBOX_IMAGE` और `ZENTRA_SANDBOX_VERSION` सेट करें। एक पेंटेस्ट रन तीन सैंडबॉक्स एजेंट (Recon, Exploit, Validator) का उपयोग करता है और CVSS v3.1 बेस वेक्टर के साथ रिपोर्ट उत्पन्न करता है। आउटपुट निर्देशिकाएँ: - एक आरंभित प्रोजेक्ट के अंदर: `./.zentra/pentest/<host>/<run-id>/` - बाहर: `<Documents>/Zentra/pentest/<host>/<run-id>/` (या कॉन्फ़िगर किया गया `output_dir`) ### अन्य कमांड ```bash zentra init # .zentra/config.json बनाएँ zentra scan --only sast # एक स्कैनर परिवार चलाएँ zentra ci # हेडलेस PR/MR CI स्कैन zentra ci --refresh-architecture zentra ci --full --report-only # फुल स्कैन बिना स्टेजिंग पाइपलाइन ब्लॉक किए zentra security verify-audit [session] ``` ## सुरक्षा नोट्स - Zentra प्रदाता क्रेडेंशियल प्रोजेक्ट निर्देशिका के बाहर एन्क्रिप्टेड गुप्त स्टोर में संग्रहीत करता है। DPAPI Windows पर डेटा-एन्क्रिप्शन कुंजी की रक्षा करता है; Unix प्रतिबंधात्मक फ़ाइल अनुमतियाँ और उपलब्ध कीरिंग बैकएंड का उपयोग करता है। - फ़ाइल उपकरण पथ ट्रैवर्सल को रोकते हैं और फ़ाइल पढ़ने को सीमित करते हैं। - इंटरैक्टिव चैट एक अलग सीमित, रीड-ओनली टूल प्रोफ़ाइल का उपयोग करता है। - डिफ़ॉल्ट सुरक्षा लिफाफा छेड़छाड़-स्पष्ट ऑडिट चेन रिकॉर्ड करता है, टूल कॉल गेट करता है, और अविश्वसनीय टूल आउटपुट चिह्नित करता है। `ZENTRA_SECURITY=hardened` सेट करें ताकि प्रतिक्रिया बाइंडिंग और एबॉर्ट-ऑन-इंजेक्शन लागू हो; `ZENTRA_SECURITY=off` केवल विश्वसनीय स्थानीय विकास के लिए उपयोग करें। - ऑडिट चेन सत्यापित करें `zentra security verify-audit [session]` के साथ। - Git इतिहास और निर्भरता ऑडिट उपकरण सुचारू रूप से बिगड़ते हैं जब आवश्यक बाइनरी या इतिहास अनुपलब्ध होते हैं। ## प्रोजेक्ट संरचना - `.zentra/config.json` — प्रोजेक्ट कॉन्फ़िगरेशन - `.zentra/checkpoint.json` — वृद्धिशील रन के लिए स्कैन स्थिति - `.zentra/reports/findings.html` — HTML रिपोर्ट - `.zentra/architecture.md` — फ्रेमवर्क विश्लेषण आउटपुट जिसका उपयोग CI संदर्भ के रूप में होता है गुप्त या स्कैन स्थिति को संस्करण नियंत्रण में कमिट न करें।