প্রকল্প সম্পর্কে

# Zentra CLI Zentra একটি ওপেন-সোর্স, AI-চালিত অ্যাপ্লিকেশন নিরাপত্তা CLI যা ডেভেলপারদের জন্য ডিজাইন করা হয়েছে। এটি ফ্রেমওয়ার্ক বিশ্লেষণ, থ্রেট মডেলিং, স্ট্যাটিক বিশ্লেষণ (SAST), সাপ্লাই-চেইন, API এবং ইনফ্রাস্ট্রাকচার-অ্যাজ-কোড (IaC) স্ক্যানার ব্যবহার করে কোডবেসে নিরাপত্তা ঝুঁকি স্ক্যান করে। এটি ইন্টারেক্টিভ টার্মিনাল ইন্টারফেসের সাথে লোকালি বা CI পাইপলাইনে হেডলেসভাবে চালানো যেতে পারে। বাইনারিটির নাম `zentra`। ## বৈশিষ্ট্য - **হেডলেস CI মোড** GitHub Actions এবং GitLab merge request পাইপলাইনের জন্য। - **LLM-ব্যাকড স্ক্যানার অর্কেস্ট্রেশন** Anthropic, OpenAI-কম্প্যাটিবল, Claude CLI এবং পরীক্ষামূলক Codex CLI প্রোভাইডার সহ। - **ডায়নামিক ব্রাউজার পেন্টেস্ট মোড** অনুমোদিত টার্গেটের জন্য। - **একাধিক আউটপুট ফরম্যাট**: Markdown, JSON, SARIF এবং স্টাইলড HTML `.zentra/` ডিরেক্টরিতে। - **এনক্রিপ্টেড-অ্যাট-রেস্ট ক্রেডেনশিয়াল স্টোরেজ** (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` রানে একটি স্থায়ী রিড-অনলি Chat প্যান অন্তর্ভুক্ত থাকে। Chat সীমিত, রিড্যাক্টেড স্ক্যান এবং রিপোজিটরি প্রশ্নের উত্তর দেয় একটি রিড-অনলি প্রোফাইল (`list_files`, `read_file`, `grep_code` এবং সীমিত Git কমান্ড) সহ। এটি টাইপড ফোকাস/রিরান বা দুর্বলতা-ক্যাটাগরি অ্যাকশন প্রস্তাব করতে পারে, কিন্তু মডেল আউটপুট বা টুল কল কোনোটি লোকাল নিশ্চিতকরণ ছাড়া প্রয়োগ করতে পারে না। নিশ্চিত অ্যাকশন চেকপয়েন্টে সংরক্ষিত হয় এবং শুধুমাত্র পরবর্তী স্ক্যানে প্রয়োগ করা হয়। Chat `zentra ci` বা অন্যান্য হেডলেস স্ক্যান পাথে উপলব্ধ নয়। ### CI নিরাপত্তা স্ক্যানিং Zentra একটি ডেডিকেটেড CI কমান্ড অন্তর্ভুক্ত করে: bash zentra ci `zentra ci` `zentra scan`-এর জন্য একটি alias নয়। এটি GitHub Actions বা GitLab CI সনাক্ত করে, নিশ্চিত করে যে কাজটি একটি PR/MR পাইপলাইনে চলে, TUI ছাড়া ফোকাসড সিকিউরিটি স্ক্যানার চালায়, CI আর্টিফ্যাক্ট লেখে এবং শুধুমাত্র ফেইল থ্রেশহোল্ডের উপরে বা সমান ফলাফল বা স্ক্যানার/সিস্টেম ব্যর্থতার জন্য ব্যর্থ হয়। ডিফল্টরূপে, `zentra ci` কোনো **Critical বা High** ফলাফলে PR/MR ব্লক করে। Medium, Low এবং Info ফলাফল রিপোর্ট করা হয় কিন্তু কাজটি ব্যর্থ করে না। #### ফেইল থ্রেশহোল্ড `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 ওয়ার্কফ্লো push-to-`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 সীমাবদ্ধ ফাইল অনুমতি এবং উপলব্ধ কীরিং ব্যাকএন্ড ব্যবহার করে। - ফাইল টুল পাথ ট্রাভার্সাল ব্লক করে এবং ফাইল রিড সীমিত করে। - ইন্টারেক্টিভ Chat একটি পৃথক সীমিত, রিড-অনলি টুল প্রোফাইল ব্যবহার করে। - ডিফল্ট সিকিউরিটি এনভেলপ একটি ট্যাম্পার-এভিডেন্ট অডিট চেইন রেকর্ড করে, টুল কল গেট করে এবং অবিশ্বস্ত টুল আউটপুট চিহ্নিত করে। রেসপন্স বাইন্ডিং এবং অ্যাবর্ট-অন-ইনজেকশন প্রয়োগ করতে `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 কনটেক্সট হিসাবে ব্যবহৃত ফ্রেমওয়ার্ক বিশ্লেষণ আউটপুট ভার্সন কন্ট্রোলে সিক্রেট বা স্ক্যান স্টেট কমিট করবেন না।