Skip to content
KitploitKITPLOIT
उपकरणएक्सप्लॉइटब्लॉग
Log in
जमा करें
उपकरणएक्सप्लॉइटब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

फ़ीडसंपर्कगोपनीयता© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
o1js-scan — o1js/Mina zkApps और Noir सर्किट में zk सर्किट साउंडनेस बग्स के लिए डिपेंडेंसी-फ्री स्टैटिक एनालाइज़र | Kitploit
उपकरण/GitHubGitHub/auditinfra-io/o1js-scan
रक्षात्मक उपकरणस्थैतिक विश्लेषणभेद्यता स्कैनरस्थैतिक कोड विश्लेषण (SAST)भेद्यता विश्लेषणकोड विश्लेषणक्रिप्टोग्राफीDevSecOps
GitHubauditinfra-io/o1js-scan

o1js-scan

o1js/Mina zkApps और Noir सर्किट में zk सर्किट साउंडनेस बग्स के लिए डिपेंडेंसी-फ्री स्टैटिक एनालाइज़र

रिपॉजिटरी देखें
313616 दिन पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
वेबसाइट
साझा करें

o1js-scan

CI Python License PyPI npm

कम्युनिटी पैकेज: o1js-scan आधिकारिक o1js Community Packages निर्देशिका में सूचीबद्ध है।

नवीनतम: 0.22.0 — एक लोकल MCP सर्वर Claude Code, Cursor और अन्य AI कोडिंग सहायकों को zkApp लिखते समय स्कैनर चलाने देता है: pip install 'o1js-scan[mcp]'। यह आपकी मशीन पर stdio के माध्यम से चलता है और कुछ भी अपलोड नहीं करता। जिस स्कैन ने किसी फ़ाइल का विश्लेषण नहीं किया वह एक त्रुटि है, साफ़ परिणाम नहीं, और बिना किसी निष्कर्ष वाला परिणाम बताता है कि यह सुरक्षा की गारंटी नहीं है। मुख्य स्कैनर में अभी भी कोई निर्भरता नहीं है। देखें CHANGELOG।

इनमें zk सर्किट साउंडनेस बग्स के लिए एक तेज़, निर्भरता-मुक्त स्टैटिक एनालाइज़र:

  • o1js / Mina zkApps (TypeScript .ts / .js) — @method बॉडीज़ से Kimchi सर्किट
  • Noir (.nr) — Aztec का Rust-जैसा ZK DSL (aztec-nr-आकार के पैटर्न सहित)

सुरक्षा-महत्वपूर्ण बग्स आमतौर पर प्रूविंग सिस्टम में नहीं होते — वे एप्लिकेशन की अपनी बाधाओं में होते हैं: ऐसे विटनेस जिन्हें प्रूवर नियंत्रित करता है लेकिन सर्किट उन्हें कभी बाइंड नहीं करता। o1js-scan Mina और Noir पारिस्थितिक तंत्रों में Circom के समकक्षों के लिए अंडर-कंस्ट्रेंड-सिग्नल स्कैनर है।

यह भी देखें: gnark-safety (gnark सर्किट), vk-guard (वेरिफिकेशन-की रिग्रेशन)।

pip install o1js-scan
# or: pipx install o1js-scan
# or: npm install -D o1js-scan

o1js-scan path/to/zkapp          # o1js + Noir (auto)
noir-scan path/to/circuits       # same binary — Noir-friendly alias
noir-scan . --lang noir --fail-on high --sarif noir.sarif

उदाहरण

एक vault दिया गया है जिसकी withdraw राशि एक prover-नियंत्रित witness है जो कभी भी on-chain state से बंधी नहीं होती:

$ o1js-scan examples/vulnerable_vault.ts --include-examples
LOW      O1JS_UNCONSTRAINED_RECIPIENT       vulnerable_vault.ts:23  fn=withdraw  Recipient `to` is prover-chosen in `withdraw`
HIGH     O1JS_UNCONSTRAINED_WITNESS         vulnerable_vault.ts:23  fn=withdraw  Unconstrained witness `amount` flows to send_amount in `withdraw`
o1js-scan: 2 finding(s) [1 high, 1 low] in 1 of 1 file(s) — fails (--fail-on high)
$ echo $?
1

--include-examples की यहाँ आवश्यकता केवल इसलिए है क्योंकि डेमो फ़ाइल examples/ के अंतर्गत है, जिसे पथ वर्गीकरणकर्ता डिफ़ॉल्ट रूप से डाउनग्रेड कर देता है ताकि किसी रेपो का अपना नमूना कोड उसके बिल्ड को विफल न कर सके। आपके src/ में वही अनुबंध बिना किसी फ़्लैग के HIGH रिपोर्ट करता है।

HIGH निष्कर्ष वह ड्रेन करने योग्य बग है। ठीक किया गया अनुबंध (examples/safe_vault.ts) इसे हटा देता है और 0 के साथ बाहर निकल जाता है, केवल प्रोवर-चयनित प्राप्तकर्ता पर सूचनात्मक LOW को बनाए रखते हुए:

$ o1js-scan examples/safe_vault.ts --include-examples
LOW      O1JS_UNCONSTRAINED_RECIPIENT       safe_vault.ts:23  fn=withdraw  Recipient `to` is prover-chosen in `withdraw`
o1js-scan: 1 finding(s) [1 low] in 1 of 1 file(s) — passes (--fail-on high)
$ echo $?
0

o1js और Noir के कमजोर/ठीक किए गए जोड़ों के लिए examples/ देखें।

विषय-सूची

  • इंस्टॉल
  • उपयोग · किसी निष्कर्ष को दबाना
  • GitHub Action · AI सहायकों के लिए MCP सर्वर
  • यह क्या पहचानता है — o1js · Noir
  • ज्ञात सीमाएँ · यह टूल कहाँ रुकता है
  • गोपनीयता और निजी कोड
  • पोस्ट-क्वांटम समीक्षा
  • संगतता · यह कैसे काम करता है
  • योगदान

इंस्टॉल

pip install o1js-scan

एक पृथक वैश्विक CLI इंस्टॉल के लिए, pipx का उपयोग करें:

pipx install o1js-scan

Node/npm-आधारित Noir, Aztec, या o1js ऐप रिपॉज़िटरी के लिए, npm wrapper इंस्टॉल करें:

npm install -D o1js-scan
npx noir-scan . --lang noir --fail-on high

npm पैकेज उसी Python विश्लेषक के चारों ओर एक पतला रैपर है और इसके लिए PATH (python3 या python) पर Python 3.8+ की आवश्यकता होती है। किसी विशिष्ट इंटरप्रेटर को चुनने के लिए O1JS_SCAN_PYTHON सेट करें।

या स्रोत से:

git clone https://github.com/auditinfra-io/o1js-scan
cd o1js-scan
pip install -e .

कोई तृतीय-पक्ष Python निर्भरता नहीं। Python 3.8+। noir-scan कंसोल स्क्रिप्ट o1js-scan के साथ (समान एंट्री पॉइंट) इंस्टॉल होती है, जिसमें npm रैपर के माध्यम से भी शामिल है।

उपयोग

# scan a directory (recursively; skips node_modules, target/, .git, …)
o1js-scan path/to/project

# Noir-only / o1js-only
noir-scan circuits --lang noir
o1js-scan src --lang o1js

# scan a single file
o1js-scan src/MyContract.ts
noir-scan src/main.nr

# machine-readable output for CI
o1js-scan src --json

# SARIF 2.1.0 for GitHub code scanning (writes o1js-scan.sarif by default)
o1js-scan src --sarif
noir-scan . --lang noir --sarif noir.sarif

# choose which severity fails CI (critical|high|medium|low|none; default high)
o1js-scan src --fail-on medium

# progressive/power-user gate (equivalent to --fail-on medium)
o1js-scan src --strict

# test code is excluded by default (both backends); opt back in
o1js-scan src --include-tests

# example code is downgraded to LOW by default; keep original severity
o1js-scan src --include-examples

# a path with no o1js / Noir source exits 2; opt out where that is expected
o1js-scan packages/ --allow-empty

o1js-scan --version

Exit code 1 होता है जब --fail-on स्तर (डिफ़ॉल्ट high) पर या उससे ऊपर कोई finding मौजूद हो और अन्यथा 0 — इसलिए आप इसे सीधे CI में डाल सकते हैं। डिफ़ॉल्ट के साथ, low/medium finding (नीचे दिए गए informational recipient नियम सहित) build को fail नहीं करता; केवल रिपोर्ट करने के लिए --fail-on none का उपयोग करें, या अधिक कड़ाई से gate करने के लिए --strict (जो --fail-on medium का shorthand है) का उपयोग करें, जबकि low-severity findings को advisory मानते हुए। दोनों विकल्प mutually exclusive हैं ताकि CI configuration अस्पष्ट न हो। अनुपस्थित scan path stderr पर error के साथ 2 exit करता है, इसलिए एक typo चुपचाप CI को clean run के रूप में पास नहीं कर सकता। ऐसा path भी जो मौजूद है लेकिन उसमें कोई o1js या Noir source नहीं है जिसे analyzer पढ़ सके (उदाहरण के लिए --lang noir जो o1js project पर point किया गया हो); जहाँ यह वैध हो वहाँ --allow-empty पास करें। प्रत्येक run stderr पर एक one-line summary (severity के अनुसार counts और gate verdict) print करता है।

Test code डिफ़ॉल्ट रूप से बाहर रखा जाता है — दोनों backends। Tests जानबूझकर invalid values और bad transactions बनाते हैं ताकि साबित हो सके कि asserts उन्हें reject करते हैं, इसलिए वहाँ finding test का उद्देश्य है, circuit bug नहीं। एक file test code मानी जाती है जब:

  • उसका नाम *.test.ts / *.spec.ts (और .js/.jsx/.tsx/.mjs/.cjs variants) से match करता हो, या *_test.nr / test_*.nr;
  • यह test/, tests/, __tests__/, spec/ या __mocks__/ directory के अंतर्गत हो;
  • (केवल Noir, content-based) function में #[test] / #[test(...)] attribute हो, या यह mod test { … } / mod tests { … } block के अंदर हो — block-scoped, इसलिए production file के अंत में स्थित test module बाकी file को silence नहीं करता।

उन्हें रिपोर्ट करने के लिए --include-tests पास करें।

टूल डाउनलोड करें