Cycode

आधिकारिक

अपने डेव जीवनचक्र में SAST, SCA, Secrets और IaC स्कैनिंग के साथ Cycode के माध्यम से सुरक्षा बढ़ाएँ।

Cycode MCP के साथ आप क्या कर सकते हैं?

  • सीक्रेट्स के लिए स्कैन करें — cycode_secret_scan का उपयोग करके हार्डकोड किए गए सीक्रेट्स के लिए फ़ाइलों या डायरेक्टरी को स्कैन करने के लिए असिस्टेंट से कहें।
  • SCA समस्याओं के लिए स्कैन करें — cycode_sca_scan के ज़रिए कमज़ोरियों और लाइसेंस संबंधी समस्याओं के लिए सॉफ़्टवेयर कंपोज़िशन एनालिसिस स्कैन का अनुरोध करें।
  • IaC कॉन्फ़िगरेशन संबंधी गलतियों के लिए स्कैन करें — cycode_iac_scan से इन्फ्रास्ट्रक्चर ऐज़ कोड में कॉन्फ़िगरेशन संबंधी गलतियों की जाँच करने के लिए असिस्टेंट से कहें।
  • SAST समस्याओं के लिए स्कैन करें — कोड की गुणवत्ता और सुरक्षा खामियों के लिए cycode_sast_scan का उपयोग करके स्टैटिक एप्लिकेशन सिक्योरिटी टेस्टिंग स्कैन चलाएँ।
  • CLI की स्थिति जाँचें — cycode_status के ज़रिए Cycode CLI का संस्करण, प्रमाणीकरण की स्थिति और कॉन्फ़िगरेशन का विवरण पूछें।

दस्तावेज़

Cycode CLI उपयोगकर्ता मार्गदर्शिका

MCP Toplist

Cycode Command Line Interface (CLI) एक ऐसा एप्लिकेशन है जिसे आप अपने रिपॉज़िटरी को सीक्रेट्स, इन्फ्रास्ट्रक्चर ऐज़ कोड की गलत कॉन्फ़िगरेशन, सॉफ़्टवेयर कंपोज़िशन विश्लेषण की कमज़ोरियों और स्टैटिक एप्लिकेशन सिक्योरिटी टेस्टिंग से जुड़ी समस्याओं के लिए स्कैन करने हेतु स्थानीय रूप से इंस्टॉल कर सकते हैं।

यह मार्गदर्शिका आपको इंस्टॉलेशन और उपयोग, दोनों की प्रक्रिया बताती है।

विषय-सूची

  1. आवश्यकताएँ
  2. इंस्टॉलेशन
    1. Cycode CLI इंस्टॉल करें
      1. Auth कमांड का उपयोग करना
      2. Configure कमांड का उपयोग करना
      3. पर्यावरण वेरिएबल में जोड़ें
        1. Unix/Linux पर
        2. Windows पर
    2. Pre-Commit Hook इंस्टॉल करें
  3. Cycode CLI कमांड
  4. सर्टिफ़िकेट और प्रॉक्सी
  5. MCP कमांड
    1. MCP सर्वर शुरू करना
    2. उपलब्ध विकल्प
    3. MCP टूल
    4. उपयोग के उदाहरण
    5. उन्नत कॉन्फ़िगरेशन
  6. Platform कमांड
    1. कमांड खोजें
    2. उदाहरण
    3. नोट और सीमाएँ
  7. AI Guardrails
    1. AI Guardrails द्वारा एकत्र किया गया डेटा
  8. Scan कमांड
    1. स्कैन चलाना
      1. विकल्प
        1. गंभीरता सीमा
        2. मॉनिटर
        3. Cycode रिपोर्ट
        4. पैकेज की कमज़ोरियाँ
        5. लाइसेंस अनुपालन
        6. लॉक रीस्टोर
        7. त्रुटि होने पर रोकें
      2. रिपॉज़िटरी स्कैन
        1. Branch विकल्प
      3. पाथ स्कैन
        1. Terraform Plan स्कैन
      4. कमिट इतिहास स्कैन
        1. कमिट रेंज विकल्प (Diff स्कैनिंग)
      5. Pre-Commit स्कैन
        1. स्थानीय Diff स्कैनिंग (IDE इंटीग्रेशन)
      6. Pre-Push स्कैन
    2. स्कैन के परिणाम
      1. सीक्रेट्स दिखाएँ/छिपाएँ
      2. सॉफ़्ट फ़ेल
      3. स्कैन परिणामों का उदाहरण
        1. Secrets परिणाम का उदाहरण
        2. IaC परिणाम का उदाहरण
        3. SCA परिणाम का उदाहरण
        4. SAST परिणाम का उदाहरण
      4. कंपनी के कस्टम सुधार दिशानिर्देश
    3. स्कैन परिणामों को अनदेखा करना
      1. सीक्रेट वैल्यू को अनदेखा करना
      2. सीक्रेट SHA वैल्यू को अनदेखा करना
      3. पाथ को अनदेखा करना
      4. Secret, IaC या SCA नियम को अनदेखा करना
      5. पैकेज को अनदेखा करना
      6. कॉन्फ़िग फ़ाइल के ज़रिए अनदेखा करना
  9. Report कमांड
    1. SBOM रिपोर्ट जनरेट करना
  10. Import कमांड
  11. स्कैन लॉग
  12. सिंटैक्स सहायता

आवश्यकताएँ

  • Cycode CLI एप्लिकेशन के लिए Python संस्करण 3.10 या उसके बाद का संस्करण आवश्यक है।
  • CLI के साथ Cycode में प्रमाणित होने के लिए cycode auth कमांड का उपयोग करें
    • इसके बजाय, Service Account Token और Personal Access Token पेजों में दिए गए चरणों का पालन करके Cycode Client ID और Client Secret Key प्राप्त कर सकते हैं। इन पेजों में ये मान प्राप्त करने का विवरण दिया गया है।

इंस्टॉलेशन

इंस्टॉलेशन के निम्नलिखित चरण Windows और UNIX / Linux, दोनों ऑपरेटिंग सिस्टम पर लागू होते हैं।

[!NOTE] नीचे दिए गए चरणों में Python-संबंधित कमांड के लिए python3 और pip3 का उपयोग माना गया है; हालाँकि, आपके Python परिवेश के कॉन्फ़िगरेशन के आधार पर कुछ सिस्टम में python और pip कमांड का उपयोग हो सकता है।

Cycode CLI इंस्टॉल करें

अपने स्थानीय मशीन पर Cycode CLI एप्लिकेशन इंस्टॉल करने के लिए, ये चरण पूरे करें:

  1. अपना कमांड लाइन या टर्मिनल एप्लिकेशन खोलें।

  2. निम्नलिखित में से कोई एक कमांड चलाएँ:

    • PyPI से इंस्टॉल करने के लिए:

      pip3 install cycode
      
    • Homebrew से इंस्टॉल करने के लिए:

      brew install cycode
      
    • GitHub Releases से इंस्टॉल करने के लिए, वहाँ जाएँ और अपने ऑपरेटिंग सिस्टम तथा आर्किटेक्चर के लिए एक्ज़ीक्यूटेबल डाउनलोड करें, फिर निम्नलिखित कमांड चलाएँ:

    cd /path/to/downloaded/cycode-cli
    chmod +x cycode
    ./cycode
    
  3. अंत में, CLI को प्रमाणित करें। Cycode client ID और क्रेडेंशियल (client secret या OIDC ID token) सेट करने के तीन तरीके हैं:

Auth कमांड का उपयोग करना

[!NOTE] Cycode CLI के साथ प्रमाणित करने के लिए अपनी स्थानीय मशीन सेट अप करने का यह अनुशंसित तरीका है।

  1. अपने टर्मिनल/कमांड लाइन विंडो में निम्नलिखित कमांड टाइप करें:

    cycode auth

  2. एक ब्राउज़र विंडो खुलेगी, जिसमें आपसे Cycode में लॉग इन करने के लिए कहा जाएगा (जैसा कि नीचे दिखाया गया है):

    Cycode login
  3. इस पेज पर अपने लॉगिन क्रेडेंशियल दर्ज करें और लॉग इन करें।

  4. अंततः आपको नीचे दिए गए पेज पर ले जाया जाएगा, जहाँ आपसे वह business group चुनने के लिए कहा जाएगा जिसके साथ आप Cycode को अधिकृत करना चाहते हैं (यदि लागू हो):

    authorize CLI

    [!NOTE] Cycode CLI के साथ प्रमाणित करने का यह डिफ़ॉल्ट तरीका होगा।

  5. चुने गए business group पर Cycode CLI को अधिकृत करने के लिए Allow बटन पर क्लिक करें।

    allow CLI
  6. प्रक्रिया पूरी होने पर, यदि चयन सफल रहा, तो आपको निम्नलिखित स्क्रीन दिखाई देगी:

    successfully auth
  7. ब्राउज़र विंडो बंद करने पर, टर्मिनल/कमांड लाइन स्क्रीन में आपको निम्नलिखित दिखाई देगा:

    Successfully logged into cycode

Configure कमांड का उपयोग करना

[!NOTE] यदि आपने Linux या Windows पर्यावरण वेरिएबल के ज़रिए पहले ही अपना Cycode Client ID और Client Secret सेट कर लिया है, तो उन क्रेडेंशियल को इस तरीके पर प्राथमिकता दी जाएगी।

  1. अपने टर्मिनल/कमांड लाइन विंडो में निम्नलिखित कमांड टाइप करें:

    cycode configure
    
  2. अपना Cycode API URL मान दर्ज करें (डिफ़ॉल्ट मान का उपयोग करने के लिए इसे खाली छोड़ सकते हैं)।

    Cycode API URL [https://api.cycode.com]: https://api.onpremise.com

  3. अपना Cycode APP URL मान दर्ज करें (डिफ़ॉल्ट मान का उपयोग करने के लिए इसे खाली छोड़ सकते हैं)।

    Cycode APP URL [https://app.cycode.com]: https://app.onpremise.com

  4. अपना Cycode Client ID मान दर्ज करें।

    Cycode Client ID []: 7fe5346b-xxxx-xxxx-xxxx-55157625c72d

  5. अपना Cycode Client Secret मान दर्ज करें (यदि आप OIDC ID token का उपयोग करने की योजना बना रहे हैं, तो इसे छोड़ दें)।

    Cycode Client Secret []: c1e24929-xxxx-xxxx-xxxx-8b08c1839a2e

  6. अपना Cycode OIDC ID Token मान दर्ज करें (वैकल्पिक)।

    Cycode ID Token []: eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...

  7. मान सफलतापूर्वक दर्ज होने पर, आपको निम्नलिखित संदेश दिखाई देगा:

    Successfully configured CLI credentials!

    या/और

    Successfully configured Cycode URLs!

यदि आप अपने उपयोगकर्ता फ़ोल्डर के अंदर .cycode फ़ोल्डर खोलेंगे, तो आपको ये क्रेडेंशियल उस फ़ोल्डर की credentials.yaml फ़ाइल में बनाए और रखे हुए मिलेंगे। URL उसी फ़ोल्डर की config.yaml फ़ाइल में रखे गए हैं।

पर्यावरण वेरिएबल में जोड़ें

Unix/Linux पर:

export CYCODE_CLIENT_ID={your Cycode ID}

और

export CYCODE_CLIENT_SECRET={your Cycode Secret Key}

यदि आपका संगठन OIDC प्रमाणीकरण का उपयोग करता है, तो आप इसके बजाय (या इसके अतिरिक्त) ID token दे सकते हैं:

export CYCODE_ID_TOKEN={your Cycode OIDC ID token}

Windows पर

  1. Control Panel से System मेनू पर जाएँ:

    system menu
  2. इसके बाद, Advanced system settings पर क्लिक करें:

    advanced system setting
  3. खुलने वाली System Properties विंडो में, Environment Variables बटन पर क्लिक करें:

    environments variables button
  4. CYCODE_CLIENT_ID और CYCODE_CLIENT_SECRET वेरिएबल बनाएँ और उनमें क्रमशः अपना ID और Secret Key मान रखें। यदि आप OIDC के ज़रिए प्रमाणित करते हैं, तो अपने OIDC ID token मान के साथ CYCODE_ID_TOKEN भी जोड़ें:

    environment variables window
  5. इंस्टॉलेशन पूरा करने के लिए पाथ में cycode.exe जोड़ें।

Pre-Commit Hook इंस्टॉल करें

Cycode के pre-commit और pre-push hooks को अपने स्थानीय रिपॉज़िटरी में सेट अप किया जा सकता है, ताकि Cycode CLI एप्लिकेशन आपके कोड को कमिट या पुश करने से पहले उसमें मौजूद समस्याओं की अपने-आप पहचान कर सके।

[!NOTE] IaC स्कैन के लिए pre-commit और pre-push hooks उपलब्ध नहीं हैं।

Pre-commit hook इंस्टॉल करने के लिए ये चरण पूरे करें:

Pre-Commit Hook इंस्टॉल करना

  1. pre-commit फ़्रेमवर्क इंस्टॉल करें (Python 3.10 या उसके बाद का संस्करण इंस्टॉल होना चाहिए):

    pip3 install pre-commit
    
  2. उस स्थानीय Git रिपॉज़िटरी की शीर्ष डायरेक्टरी पर जाएँ जिसे आप कॉन्फ़िगर करना चाहते हैं।

  3. रिपॉज़िटरी की शीर्ष डायरेक्टरी में .pre-commit-config.yaml नाम की एक नई YAML फ़ाइल बनाएँ (शुरुआत में . शामिल करें), जिसमें निम्नलिखित हो:

    repos:
      - repo: https://github.com/cycodehq/cycode-cli
        rev: v3.25.0
        hooks:
          - id: cycode
            stages: [pre-commit]
    
  4. बनाई गई फ़ाइल को अपनी ज़रूरतों के अनुसार संशोधित करें। Secrets स्कैन सक्षम करने के लिए hook ID cycode का उपयोग करें। SCA स्कैन सक्षम करने के लिए hook ID cycode-sca का उपयोग करें। SAST स्कैन सक्षम करने के लिए hook ID cycode-sast का उपयोग करें। सभी प्रकार के स्कैन सक्षम करने के लिए यह कॉन्फ़िगरेशन उपयोग करें:

    repos:
      - repo: https://github.com/cycodehq/cycode-cli
        rev: v3.25.0
        hooks:
          - id: cycode
            stages: [pre-commit]
          - id: cycode-sca
            stages: [pre-commit]
          - id: cycode-sast
            stages: [pre-commit]
    
  5. Cycode का hook इंस्टॉल करें:

    pre-commit install
    

    Hook सफलतापूर्वक इंस्टॉल होने पर यह संदेश दिखाई देगा: Pre-commit installed at .git/hooks/pre-commit।

  6. pre-commit hook को अद्यतन रखें:

    pre-commit autoupdate
    

    यह .pre-commit-config.yaml में rev को Cycode CLI के नवीनतम उपलब्ध संस्करण पर अपने-आप अपडेट कर देगा।

[!NOTE] यह git commit कमांड पर ट्रिगर होता है। Hook केवल उन फ़ाइलों पर ट्रिगर होता है जिन्हें कमिट के लिए स्टेज किया गया है।

Pre-Push Hook इंस्टॉल करना

Pre-commit hook के अतिरिक्त या उसके बजाय pre-push hook इंस्टॉल करने के लिए:

  1. अपनी .pre-commit-config.yaml फ़ाइल में pre-push hooks जोड़ें:

    repos:
      - repo: https://github.com/cycodehq/cycode-cli
        rev: v3.25.0
        hooks:
          - id: cycode-pre-push
            stages: [pre-push]
    
  2. pre-push hook इंस्टॉल करें:

    pre-commit install --hook-type pre-push
    
  3. pre-commit और pre-push, दोनों hooks के लिए यह उपयोग करें:

    pre-commit install
    pre-commit install --hook-type pre-push
    

[!NOTE] Pre-push hooks git push कमांड पर ट्रिगर होते हैं और केवल पुश किए जाने वाले कमिट स्कैन करते हैं।

Cycode CLI कमांड

Cycode CLI एप्लिकेशन में उपलब्ध विकल्प और कमांड निम्नलिखित हैं:

विकल्पविवरण
-v, --verboseविस्तृत लॉग दिखाएँ।
--no-progress-meterप्रगति मीटर न दिखाएँ।
--no-update-notifierCLI के अपडेट की जाँच न करें।
-o, --output [rich|text|json|table]आउटपुट का प्रकार निर्दिष्ट करें। डिफ़ॉल्ट rich है।
--client-id TEXTइस विशिष्ट स्कैन निष्पादन के लिए Cycode client ID निर्दिष्ट करें।
--client-secret TEXTइस विशिष्ट स्कैन निष्पादन के लिए Cycode client secret निर्दिष्ट करें।
--id-token TEXTइस विशिष्ट स्कैन निष्पादन के लिए Cycode OIDC ID token निर्दिष्ट करें।
--install-completionमौजूदा shell के लिए completion इंस्टॉल करें।
--show-completion [bash|zsh|fish|powershell|pwsh]निर्दिष्ट shell के लिए completion दिखाएँ, ताकि उसे कॉपी किया जा सके या इंस्टॉलेशन को अनुकूलित किया जा सके।
-h, --helpदिए गए कमांड के विकल्प दिखाएँ।
Commandविवरण
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
authअपनी मशीन को प्रमाणित करें, ताकि CLI आपके Cycode खाते से जुड़ सके।
configureअपने CLI क्लाइंट का प्रमाणीकरण कॉन्फ़िगर करने के लिए प्रारंभिक कमांड।
ignoreकिसी विशिष्ट मान, पथ या नियम ID को अनदेखा करें।
mcpCycode की स्कैनिंग क्षमताओं के साथ AI एकीकरण सक्षम करने के लिए Model Context Protocol (MCP) सर्वर शुरू करें।
scanSecrets/IaC/SCA/SAST उल्लंघनों के लिए सामग्री स्कैन करें। आपको यह निर्दिष्ट करना होगा कि कौन-सा स्कैन प्रकार करना है: commit-history/path/repository/etc.
reportरिपोर्ट जनरेट करें। आपको यह निर्दिष्ट करना होगा कि कौन-सी रिपोर्ट का प्रकार करना है, जैसे SBOM।
statusCLI की स्थिति दिखाएँ और बाहर निकलें।

प्रमाणपत्र और प्रॉक्सी

डिफ़ॉल्ट रूप से, Cycode CLI HTTPS कनेक्शनों को CLI के साथ दिए गए CA बंडल के विरुद्ध सत्यापित करता है।

यदि आपका संगठन HTTPS ट्रैफ़िक का निरीक्षण करने वाली प्रॉक्सी का उपयोग करता है, या आपके ऑन-प्रिमाइसेस इंस्टॉलेशन का अपना CA है, तो आपके पास दो विकल्प हैं।

विकल्प 1 — मशीन पर पहले से इंस्टॉल किए गए प्रमाणपत्रों का उपयोग करें। यदि आपका CA मशीन के प्रमाणपत्र स्टोर में है (जैसा कि प्रबंधित डिवाइस पर आमतौर पर होता है), तो इसे सक्षम करें:

export CYCODE_CLI_ENABLE_TRUSTSTORE=1

इसके बाद CLI Windows प्रमाणपत्र स्टोर, macOS Keychain या Linux की सिस्टम CA डायरेक्टरी के विरुद्ध सत्यापन करता है, और प्रमाणपत्र पथ कॉन्फ़िगर करने की आवश्यकता नहीं होती।

[!IMPORTANT] यह जानबूझकर वैकल्पिक रखा गया है। मशीन स्टोर पर भरोसा करने का अर्थ है उस मशीन पर मौजूद हर रूट प्रमाणपत्र पर भरोसा करना, जिसमें व्यवस्थापक या दुर्भावनापूर्ण सॉफ़्टवेयर द्वारा इंस्टॉल किए गए प्रमाणपत्र भी शामिल हैं। इसे तभी सक्षम करें जब आपको पता हो कि आपकी मशीन का प्रमाणपत्र स्टोर भरोसेमंद है।

विकल्प 2 — CLI को CA बंडल फ़ाइल का पथ दें। इसे सक्षम किए बिना भी काम करता है:

Environment Variableविवरण
REQUESTS_CA_BUNDLEभरोसे के लिए CA बंडल फ़ाइल का पथ (.pem या .crt)।
CURL_CA_BUNDLEREQUESTS_CA_BUNDLE का उपनाम, जिसे बाद वाला सेट न होने पर माना जाता है।

दोनों विकल्प एक साथ इस्तेमाल किए जा सकते हैं: CYCODE_CLI_ENABLE_TRUSTSTORE=1 के साथ, REQUESTS_CA_BUNDLE के प्रमाणपत्र मशीन स्टोर के अतिरिक्त भरोसेमंद होते हैं, उसके स्थान पर नहीं।

[!TIP] यह देखने के लिए कि कौन-सा ट्रस्ट स्रोत इस्तेमाल हो रहा है, किसी भी कमांड को -v के साथ चलाएँ, उदाहरण के लिए cycode -v status।

नोट:

  • Windows पर, जब न तो REQUESTS_CA_BUNDLE और न ही CURL_CA_BUNDLE सेट होता है, CLI हमेशा सिस्टम प्रमाणपत्र स्टोर पर निर्भर करता रहा है। यह व्यवहार अपरिवर्तित है।
  • प्रॉक्सी स्वयं मानक HTTP_PROXY, HTTPS_PROXY, और NO_PROXY पर्यावरण वेरिएबल से कॉन्फ़िगर की जाती हैं।

MCP कमांड [EXPERIMENT]

Model Context Protocol (MCP) कमांड आपको ऐसा MCP सर्वर शुरू करने देता है जो AI सिस्टम और एप्लिकेशन के लिए Cycode की स्कैनिंग क्षमताएँ उपलब्ध कराता है। इससे AI मॉडल एक मानकीकृत प्रोटोकॉल के ज़रिए Cycode CLI टूल के साथ इंटरैक्ट कर सकते हैं।

[!TIP] सर्वोत्तम अनुभव के लिए, pip install cycode या brew install cycode का उपयोग करके अपने सिस्टम पर Cycode CLI को वैश्विक रूप से इंस्टॉल करें, फिर cycode auth के साथ एक बार प्रमाणित करें। वैश्विक इंस्टॉलेशन और प्रमाणीकरण के बाद, आपको अपनी MCP कॉन्फ़िगरेशन फ़ाइलों में CYCODE_CLIENT_ID और CYCODE_CLIENT_SECRET पर्यावरण वेरिएबल कॉन्फ़िगर करने की आवश्यकता नहीं होगी।

Add MCP Server to Cursor using UV

MCP सर्वर शुरू करना

MCP सर्वर शुरू करने के लिए, यह कमांड चलाएँ:

cycode mcp

डिफ़ॉल्ट रूप से, यह सर्वर को stdio ट्रांसपोर्ट का उपयोग करके शुरू करता है, जो स्थानीय एकीकरणों और ऐसे AI एप्लिकेशन के लिए उपयुक्त है जो सबप्रोसेस शुरू कर सकते हैं।

उपलब्ध विकल्प

Optionविवरण
-t, --transportMCP सर्वर के लिए ट्रांसपोर्ट प्रकार: stdio, sse, या streamable-http (डिफ़ॉल्ट: stdio)
-H, --hostसर्वर को बाइंड करने के लिए होस्ट पता (केवल गैर-stdio ट्रांसपोर्ट के लिए) (डिफ़ॉल्ट: 127.0.0.1)
-p, --portसर्वर को बाइंड करने के लिए पोर्ट नंबर (केवल गैर-stdio ट्रांसपोर्ट के लिए) (डिफ़ॉल्ट: 8000)
--helpसहायता संदेश और उपलब्ध विकल्प दिखाएँ

MCP टूल

MCP सर्वर निम्नलिखित टूल उपलब्ध कराता है, जिनका उपयोग AI सिस्टम कर सकते हैं:

Tool Nameविवरण
cycode_secret_scanहार्डकोड किए गए सीक्रेट खोजने के लिए स्कैन करें
cycode_sca_scanSoftware Composition Analysis (SCA) के लिए स्कैन करें — कमज़ोरियों और लाइसेंस संबंधी समस्याओं के लिए
cycode_iac_scanInfrastructure as Code (IaC) की गलत कॉन्फ़िगरेशन के लिए स्कैन करें
cycode_sast_scanStatic Application Security Testing (SAST) के लिए स्कैन करें — कोड गुणवत्ता और सुरक्षा खामियों के लिए
cycode_statusCycode CLI संस्करण, प्रमाणीकरण स्थिति और कॉन्फ़िगरेशन जानकारी प्राप्त करें

हर स्कैन टूल दो परस्पर अनन्य इनपुट मोड स्वीकार करता है:

  • paths (पसंदीदा) — डिस्क पर मौजूद एक या अधिक फ़ाइल या डायरेक्टरी पथ। डायरेक्टरियों को पुनरावर्ती रूप से स्कैन किया जाता है। Cycode इंजन फ़ाइलों की खोज और फ़िल्टरिंग संभालता है, ठीक वैसे ही जैसे CLI से cycode scan -t <type> path ./src करता है।
  • files (वैकल्पिक) — फ़ाइल पथों को स्ट्रिंग के रूप में उनकी पूरी सामग्री से मैप करने वाला डिक्शनरी। इसका उपयोग केवल तभी करें जब फ़ाइलें डिस्क पर उपलब्ध न हों (उदाहरण के लिए, मेमोरी में किए गए ऐसे बदलाव जो अभी सेव नहीं हुए हैं)।

[!TIP] जब भी संभव हो, paths का उपयोग करें। बड़ी फ़ाइलों (जैसे package-lock.json) को इनलाइन सामग्री के रूप में भेजने से टोकन सीमा पार हो सकती है और AI क्लाइंट धीमा हो सकता है। paths के साथ, Cycode इंजन फ़ाइलों को सीधे डिस्क से पढ़ता है।

सभी स्कैन टूल एक JSON ऑब्जेक्ट लौटाते हैं, जिसमें पूरी "detections" ऐरे के साथ-साथ मानव-पठनीय उल्लंघन संख्या (उदाहरण के लिए "Cycode found 3 violations: 1 CRITICAL, 2 HIGH.") वाला "summary" फ़ील्ड शामिल होता है।

उपयोग के उदाहरण

बुनियादी कमांड उदाहरण

डिफ़ॉल्ट सेटिंग (stdio ट्रांसपोर्ट) के साथ MCP सर्वर शुरू करें:

cycode mcp

स्पष्ट रूप से stdio ट्रांसपोर्ट के साथ MCP सर्वर शुरू करें:

cycode mcp -t stdio

Server-Sent Events (SSE) ट्रांसपोर्ट के साथ MCP सर्वर शुरू करें:

cycode mcp -t sse -p 8080

कस्टम होस्ट और पोर्ट पर streamable HTTP ट्रांसपोर्ट के साथ MCP सर्वर शुरू करें:

cycode mcp -t streamable-http -H 0.0.0.0 -p 9000

MCP ट्रांसपोर्ट प्रकारों के बारे में MCP Protocol Specification – Transports में और जानें।

कॉन्फ़िगरेशन उदाहरण

Cursor/VS Code/Claude Desktop आदि के साथ MCP का उपयोग (mcp.json)

[!NOTE] EU Cycode परिवेशों के लिए, पर्यावरण वेरिएबल में उपयुक्त CYCODE_API_URL और CYCODE_APP_URL मान सेट करना सुनिश्चित करें (उदाहरण के लिए, https://api.eu.cycode.com और https://app.eu.cycode.com)।

अपने VS Code/GitHub Copilot में MCP सर्वर कॉन्फ़िगर करने के लिए इस गाइड का पालन करें। ध्यान रखें कि settings.json में, एक mcp ऑब्जेक्ट होता है जिसमें नेस्टेड servers सब-ऑब्जेक्ट होता है, न कि एक स्वतंत्र mcpServers ऑब्जेक्ट।

stdio ट्रांसपोर्ट के लिए (सीधा निष्पादन):

{
  "mcpServers": {
    "cycode": {
      "command": "cycode",
      "args": ["mcp"],
      "env": {
        "CYCODE_CLIENT_ID": "your-cycode-id",
        "CYCODE_CLIENT_SECRET": "your-cycode-secret-key",
        "CYCODE_API_URL": "https://api.cycode.com",
        "CYCODE_APP_URL": "https://app.cycode.com"
      }
    }
  }
}

pipx इंस्टॉलेशन के साथ stdio ट्रांसपोर्ट के लिए:

{
  "mcpServers": {
    "cycode": {
      "command": "pipx",
      "args": ["run", "cycode", "mcp"],
      "env": {
        "CYCODE_CLIENT_ID": "your-cycode-id",
        "CYCODE_CLIENT_SECRET": "your-cycode-secret-key",
        "CYCODE_API_URL": "https://api.cycode.com",
        "CYCODE_APP_URL": "https://app.cycode.com"
      }
    }
  }
}

uvx इंस्टॉलेशन के साथ stdio ट्रांसपोर्ट के लिए:

{
  "mcpServers": {
    "cycode": {
      "command": "uvx",
      "args": ["cycode", "mcp"],
      "env": {
        "CYCODE_CLIENT_ID": "your-cycode-id",
        "CYCODE_CLIENT_SECRET": "your-cycode-secret-key",
        "CYCODE_API_URL": "https://api.cycode.com",
        "CYCODE_APP_URL": "https://app.cycode.com"
      }
    }
  }
}

SSE ट्रांसपोर्ट के लिए (Server-Sent Events):

{
  "mcpServers": {
    "cycode": {
      "url": "http://127.0.0.1:8000/sse"
    }
  }
}

कस्टम पोर्ट पर SSE ट्रांसपोर्ट के लिए:

{
  "mcpServers": {
    "cycode": {
      "url": "http://127.0.0.1:8080/sse"
    }
  }
}

streamable HTTP ट्रांसपोर्ट के लिए:

{
  "mcpServers": {
    "cycode": {
      "url": "http://127.0.0.1:8000/mcp"
    }
  }
}
MCP सर्वर को बैकग्राउंड में चलाना

SSE ट्रांसपोर्ट के लिए (पहले सर्वर शुरू करें, फिर क्लाइंट कॉन्फ़िगर करें):

# Start the MCP server in the background
cycode mcp -t sse -p 8000 &

# Configure in mcp.json
{
  "mcpServers": {
    "cycode": {
      "url": "http://127.0.0.1:8000/sse"
    }
  }
}

streamable HTTP ट्रांसपोर्ट के लिए:

# Start the MCP server in the background
cycode mcp -t streamable-http -H 127.0.0.2 -p 9000 &

# Configure in mcp.json
{
  "mcpServers": {
    "cycode": {
      "url": "http://127.0.0.2:9000/mcp"
    }
  }
}

उन्नत कॉन्फ़िगरेशन

टाइमआउट और कस्टम प्रमाणपत्र (प्रॉक्सी परिवेश)

यदि आपका MCP क्लाइंट लंबे समय तक चलने वाले स्कैन बीच में रोक रहा है, तो टूल कॉल का टाइमआउट बढ़ाएँ।

Environment Variableविवरण
MCP_TOOL_TIMEOUTवह टाइमआउट (सेकंड में) जिसके दौरान Claude और GitHub Copilot जैसे MCP क्लाइंट टूल कॉल पूरा होने की प्रतीक्षा करते हैं। यदि लंबे समय तक चलने वाले स्कैन पूरे होने से पहले रुक रहे हों, तो इसे बढ़ाएँ।

कॉर्पोरेट प्रॉक्सी के पीछे, MCP सर्वर के env ब्लॉक में प्रमाणपत्र वेरिएबल सेट करें। विकल्पों के लिए प्रमाणपत्र और प्रॉक्सी देखें: मशीन पर पहले से मौजूद प्रमाणपत्रों का उपयोग करने के लिए CYCODE_CLI_ENABLE_TRUSTSTORE=1, या CA बंडल फ़ाइल का पथ देने के लिए REQUESTS_CA_BUNDLE।

कस्टम CA बंडल और लंबे टाइमआउट वाला mcp.json कॉन्फ़िगरेशन उदाहरण:

{
  "mcpServers": {
    "cycode": {
      "command": "cycode",
      "args": ["mcp"],
      "env": {
        "REQUESTS_CA_BUNDLE": "/path/to/your/corporate-ca-bundle.pem",
        "MCP_TOOL_TIMEOUT": "1800"
      }
    }
  }
}

[!NOTE] MCP सर्वर को काम करने के लिए Cycode CLI का सही प्रमाणीकरण आवश्यक है। MCP सर्वर शुरू करने से पहले cycode auth का उपयोग करके प्रमाणित करें या अपने क्रेडेंशियल कॉन्फ़िगर करें।

सबएजेंट के लिए टूल का पूर्व-अनुमोदन (Claude Code)

जब Claude Code काम को बैकग्राउंड सबएजेंट को सौंपता है (उदाहरण के लिए, समानांतर में स्कैन चलाने के लिए), तो वे सबएजेंट इंटरैक्टिव अनुमति संकेत नहीं दिखा सकते। यदि Cycode टूल पहले से स्वीकृत नहीं हैं, तो सबएजेंट संदर्भों में स्कैन बिना किसी सूचना के विफल हो जाएँगे।

Cycode MCP टूल को पूर्व-अनुमोदित करने के लिए, ताकि वे सबएजेंट सहित सभी संदर्भों में काम करें, उन्हें अपनी Claude Code सेटिंग (~/.claude/settings.json) में allowedTools सूची में जोड़ें:

{
  "allowedTools": [
    "mcp__cycode__cycode_secret_scan",
    "mcp__cycode__cycode_sca_scan",
    "mcp__cycode__cycode_iac_scan",
    "mcp__cycode__cycode_sast_scan",
    "mcp__cycode__cycode_status"
  ]
}

जोड़ने के बाद, इन टूल को कॉल किए जाने पर Claude Code अनुमोदन नहीं माँगेगा, और वे सबएजेंट के भीतर सही ढंग से काम करेंगे।

MCP समस्या निवारण

यदि MCP सर्वर में समस्याएँ आती हैं, तो क्या हो रहा है इसकी अधिक विस्तृत जानकारी पाने के लिए डिबग लॉगिंग सक्षम करें। डिबग लॉगिंग सक्षम करने के दो तरीके हैं:

  1. -v या --verbose फ़्लैग का उपयोग करके:
cycode -v mcp
  1. CYCODE_CLI_VERBOSE पर्यावरण वेरिएबल का उपयोग करके:
CYCODE_CLI_VERBOSE=1 cycode mcp

डिबग लॉग में निम्नलिखित की विस्तृत जानकारी दिखाई देगी:

  • सर्वर स्टार्टअप और कॉन्फ़िगरेशन
  • कनेक्शन प्रयास और स्थिति
  • टूल निष्पादन और परिणाम
  • होने वाली कोई भी त्रुटि या चेतावनी

यह जानकारी इन स्थितियों में उपयोगी हो सकती है:

  • कनेक्शन समस्याओं का निदान करना
  • यह समझना कि कुछ टूल काम क्यों नहीं कर रहे
  • प्रमाणीकरण समस्याओं की पहचान करना
  • ट्रांसपोर्ट-विशिष्ट समस्याओं को डीबग करना

MCP कॉन्फ़िगरेशन

Platform कमांड [BETA]

[!WARNING] platform कमांड बीटा में है। कमांड, आर्ग्युमेंट और आउटपुट फ़ॉर्मैट Cycode API स्पेक से गतिशील रूप से जनरेट होते हैं और बिना सूचना के रिलीज़ के बीच बदल सकते हैं। अभी इन्हें प्रोडक्शन ऑटोमेशन में इस्तेमाल न करें।

cycode platform कमांड Cycode प्लेटफ़ॉर्म के रीड API को CLI कमांड के रूप में उपलब्ध कराता है। यह एंडपॉइंट को संसाधन के अनुसार समूहित करता है (उदाहरण के लिए, projects, violations, workflows) और हर एंडपॉइंट के पैरामीटर को टाइप किए गए CLI आर्ग्युमेंट और --option फ़्लैग में बदलता है।

cycode platform projects list --page-size 50
cycode platform violations count
cycode platform workflows view <workflow-id>

OpenAPI स्पेक पहली बार उपयोग किए जाने पर Cycode API से प्राप्त किया जाता है और 24 घंटे के लिए ~/.cycode/openapi-spec.json पर कैश किया जाता है। असंबंधित कमांड (cycode scan, cycode status आदि) इसे प्राप्त नहीं करते।

[!NOTE] cycode platform को कमांड खोजने और चलाने के लिए आपको प्रमाणित होना होगा (cycode auth या CYCODE_CLIENT_ID / CYCODE_CLIENT_SECRET पर्यावरण चर)। अन्य Cycode CLI कमांड बिना प्रमाणीकरण के काम करते हैं।

कमांड खोजें

क्योंकि कमांड स्पेक से जनरेट होते हैं, इसलिए उपलब्ध कमांड की जानकारी का एकमात्र प्रामाणिक स्रोत --help है:

cycode platform --help                  # list all resource groups
cycode platform projects --help         # list actions on a resource
cycode platform projects list --help    # list options/arguments for an action

प्लेटफ़ॉर्म के उदाहरण

# List projects with pagination
cycode platform projects list --page-size 25

# View a single project by ID
cycode platform projects view <project-id>

# Count violations across the tenant
cycode platform violations count

# Filter using query parameters (see `--help` for what each endpoint supports)
cycode platform violations list --severity CRITICAL

सभी आउटपुट डिफ़ॉल्ट रूप से JSON होते हैं — तदर्थ फ़िल्टरिंग के लिए उन्हें jq के माध्यम से पाइप करें:

cycode platform projects list --page-size 100 | jq '.items[].name'

प्लेटफ़ॉर्म संबंधी नोट और सीमाएँ

  • फ़िलहाल केवल पढ़ने की सुविधा। इस बीटा में केवल GET एंडपॉइंट उपलब्ध हैं।
  • स्पेक-आधारित। API में नया एंडपॉइंट जोड़ने पर, कैश रीफ़्रेश होने के बाद वह अपने-आप उपलब्ध हो जाता है।
  • कोई बंडल किया हुआ स्पेक नहीं। इंस्टॉल के बाद (या 24 घंटे का कैश समाप्त होने पर) पहली cycode platform इनवोकेशन नेटवर्क से डेटा फ़ेच करती है। धीमे कनेक्शन पर इस पहली कॉल में कुछ सेकंड लग सकते हैं; कैश समाप्त होने तक बाद की कॉल लगभग तुरंत पूरी होती हैं।
  • CYCODE_SPEC_CACHE_TTL=<seconds> के साथ कैश TTL को ओवरराइड करें।

AI Guardrails [BETA]

AI Guardrails, समर्थित AI कोडिंग एजेंट (Claude Code, Cursor, Copilot, Codex) में हुक इंस्टॉल करता है, ताकि प्रॉम्प्ट, एजेंट द्वारा पढ़ी जाने वाली फ़ाइलों और MCP टूल आर्ग्युमेंट में मौजूद सीक्रेट मॉडल तक पहुँचने से पहले स्कैन किए जाएँ।

AI Guardrails द्वारा एकत्र किया गया डेटा

स्कैनिंग सर्वर-साइड होती है, इसलिए स्कैन की गई सामग्री मशीन से बाहर जाती है: प्रॉम्प्ट का टेक्स्ट, एजेंट द्वारा पढ़ी जाने वाली फ़ाइलों की सामग्री और MCP टूल आर्ग्युमेंट को सीक्रेट की जाँच के लिए आपके Cycode टेनेंट पर भेजा जाता है।

हर इवेंट की रिपोर्ट डेवलपर और मशीन के संदर्भ के साथ भी की जाती है, ताकि किसी फ़ाइंडिंग को उस डिवाइस और उपयोगकर्ता से जोड़ा जा सके जहाँ से वह आई थी। इस जानकारी में से कुछ व्यक्तिगत डेटा है:

  • डिवाइस पहचानकर्ता — मशीन का होस्टनेम और हार्डवेयर सीरियल नंबर।
  • उपयोगकर्ता पहचानकर्ता — AI कोडिंग एजेंट में साइन इन किए हुए उपयोगकर्ता का ईमेल पता और स्थानीय ऑपरेटिंग सिस्टम का उपयोगकर्ता नाम।
  • पर्यावरण का विवरण — ऑपरेटिंग सिस्टम और उसका संस्करण, AI एजेंट, उसका संस्करण और उपयोग में मौजूद मॉडल, एजेंट की MCP कॉन्फ़िगरेशन फ़ाइलों की सामग्री और उसके सक्षम प्लगइन।

हार्डवेयर सीरियल नंबर को स्थानीय अस्थायी फ़ाइल में कैश किया जाता है, जिसे केवल कमांड चलाने वाला उपयोगकर्ता पढ़ सकता है, ताकि हुक के बार-बार चलने पर हार्डवेयर से दोबारा जानकारी न माँगी जाए।

यदि आपके परिवेश में यह डेटा एकत्र करना स्वीकार्य नहीं है, तो guardrails हुक इंस्टॉल न करें (cycode ai-guardrails uninstall पहले से इंस्टॉल किए गए हुक हटा देता है)।

स्कैन कमांड

स्कैन चलाना

Cycode CLI एप्लिकेशन कई प्रकार के स्कैन उपलब्ध कराता है, ताकि आप अपने मामले के लिए सबसे उपयुक्त विकल्प चुन सकें। वर्तमान में उपलब्ध विकल्प और कमांड ये हैं:

विकल्पविवरण
-t, --scan-type [secret|iac|sca|sast]वह स्कैन निर्दिष्ट करें जिसे आप चलाना चाहते हैं (secret/iac/sca/sast); डिफ़ॉल्ट secret है।
--show-secret BOOLEANसीक्रेट को सादे टेक्स्ट में दिखाएँ। अधिक जानकारी के लिए सीक्रेट दिखाएँ/छिपाएँ अनुभाग देखें।
--soft-fail BOOLEANस्कैन को विफल हुए बिना चलाएँ; हमेशा गैर-त्रुटि स्थिति कोड लौटाएँ। अधिक जानकारी के लिए सॉफ्ट फ़ेल अनुभाग देखें।
--severity-threshold [INFO|LOW|MEDIUM|HIGH|CRITICAL]निर्दिष्ट स्तर या उससे अधिक स्तर के उल्लंघन ही दिखाएँ।
--sca-scanवह SCA स्कैन निर्दिष्ट करें जिसे आप चलाना चाहते हैं (package-vulnerabilities/license-compliance/unmaintained-packages/malicious-packages)। डिफ़ॉल्ट रूप से सभी स्कैन चलेंगे।
--monitorनिर्दिष्ट होने पर, स्कैन के परिणाम Cycode में रिकॉर्ड किए जाएँगे।
--cycode-reportकंसोल आउटपुट में Cycode प्लेटफ़ॉर्म पर स्कैन रिपोर्ट का लिंक दिखाएँ।
--no-restoreनिर्दिष्ट होने पर, Cycode restore कमांड नहीं चलाएगा। इससे केवल सीधे डिपेंडेंसी स्कैन होंगी!
--stop-on-errorकिसी फ़ाइल को एकत्र करने या डिपेंडेंसी रीस्टोर करने में विफलता होने पर स्कैन रोकें; विफल फ़ाइल को छोड़कर आगे न बढ़ें।
--gradle-all-sub-projectsसभी सब-प्रोजेक्ट के लिए gradle restore कमांड चलाएँ। इसे यहाँ से चलाया जाना चाहिए
--maven-settings-fileकेवल Maven के लिए, डिपेंडेंसी स्कैन करते समय कस्टम settings.xml फ़ाइल का उपयोग करने की अनुमति देता है
--helpदिए गए कमांड के विकल्प दिखाएँ।
कमांडविवरण
commit-historyकमिट इतिहास स्कैन करें या विशिष्ट कमिट के बीच डिफ़ स्कैनिंग करें
pathकमांड में दिए गए पाथ की फ़ाइलें स्कैन करें
pre-commitऐसी सामग्री स्कैन करें जिसे अभी तक कमिट नहीं किया गया है; फ़्लैग के माध्यम से स्थानीय डिफ़ स्कैनिंग भी समर्थित है (IDE के अनुकूल)
repositoryGit रिपॉज़िटरी को उसके इतिहास सहित स्कैन करें

विकल्प

गंभीरता का विकल्प

स्कैन के परिणामों को किसी विशिष्ट गंभीरता सीमा तक सीमित करने के लिए, स्कैन कमांड में --severity-threshold आर्ग्युमेंट जोड़ा जा सकता है।

उदाहरण के लिए, निम्न कमांड रिपॉज़िटरी को Medium या उससे अधिक गंभीरता वाले नीति उल्लंघनों के लिए स्कैन करेगा:

cycode scan --severity-threshold MEDIUM repository ~/home/git/codebase

मॉनिटर विकल्प

[!NOTE] यह विकल्प केवल SCA स्कैन के लिए उपलब्ध है।

SCA प्रकार के स्कैन में मिली SCA नीतियों से जुड़े स्कैन परिणाम Cycode पर भेजने के लिए, स्कैन कमांड में --monitor आर्ग्युमेंट जोड़ें।

उदाहरण के लिए, निम्न कमांड रिपॉज़िटरी को SCA नीति उल्लंघनों के लिए स्कैन करेगा और उन्हें Cycode प्लेटफ़ॉर्म पर भेजेगा:

cycode scan -t sca --monitor repository ~/home/git/codebase

Cycode रिपोर्ट विकल्प

Cycode CLI से किए गए हर स्कैन के लिए एक रिपोर्ट अपने-आप जनरेट होती है और उसके परिणाम Cycode को भेजे जाते हैं। ये परिणाम Cycode प्लेटफ़ॉर्म में संबंधित नीतियों से जुड़े होते हैं (उदाहरण के लिए, Repository स्कैन के लिए SCA नीतियाँ)।

स्कैन पूरा होने के बाद CLI आउटपुट में इस Cycode रिपोर्ट का सीधा URL दिखाने के लिए, अपने स्कैन कमांड में --cycode-report आर्ग्युमेंट जोड़ें।

cycode scan --cycode-report repository ~/home/git/codebase

CLI के सभी स्कैन परिणाम Cycode के CLI Logs अनुभाग में दिखाई देंगे। यदि आपने अपने कमांड में --cycode-report फ़्लैग शामिल किया है, तो स्कैन परिणामों के बाद आपके टर्मिनल में विशिष्ट रिपोर्ट का सीधा लिंक दिखाया जाएगा।

[!WARNING] इस पेज को देखने के लिए Cycode में आपके पास owner या admin भूमिका होनी चाहिए।

cli-report

रिपोर्ट पेज कुछ इस तरह दिखेगा:

पैकेज की कमज़ोरियों का विकल्प

[!NOTE] यह विकल्प केवल SCA स्कैन के लिए उपलब्ध है।

अपने स्थानीय रिपॉज़िटरी में किसी विशिष्ट पैकेज की कमज़ोरी स्कैन करने के लिए, -t sca या --scan-type sca विकल्प के बाद --sca-scan package-vulnerabilities आर्ग्युमेंट जोड़ें।

पिछले उदाहरण में, यदि आप केवल पैकेज की कमज़ोरियों के लिए SCA स्कैन चलाना चाहते हैं, तो यह कमांड चला सकते हैं:

cycode scan -t sca --sca-scan package-vulnerabilities repository ~/home/git/codebase

लाइसेंस अनुपालन विकल्प

[!NOTE] यह विकल्प केवल SCA स्कैन के लिए उपलब्ध है।

अपने स्थानीय रिपॉज़िटरी की किसी विशिष्ट ब्रांच को स्कैन करने के लिए, --sca-scan license-compliance आर्ग्युमेंट के बाद उस ब्रांच का नाम जोड़ें जिसे आप स्कैन करना चाहते हैं।

पिछले उदाहरण में, यदि आप केवल dev नाम की ब्रांच स्कैन करना चाहते हैं, तो यह कमांड चला सकते हैं:

cycode scan -t sca --sca-scan license-compliance repository ~/home/git/codebase -b dev

अनुरक्षण न किए गए पैकेज का विकल्प

[!NOTE] यह विकल्प केवल SCA स्कैन के लिए उपलब्ध है।

केवल अनुरक्षण न किए गए पैकेज स्कैन करने के लिए (ऐसे पैकेज जिनकी OpenSSF Scorecard Maintained जाँच का स्कोर कम है, यानी हाल में कम या कोई कमिट और इश्यू गतिविधि नहीं हुई है), -t sca या --scan-type sca विकल्प के बाद --sca-scan unmaintained-packages आर्ग्युमेंट जोड़ें।

[!NOTE] अनुरक्षण न किए गए पैकेज की रिपोर्ट की जाएगी या नहीं, यह आपके संगठन की नीति से नियंत्रित होता है। यह विकल्प स्कैन की रिपोर्ट को सीमित करता है; यह आपके टेनेंट के लिए बंद नीति को सक्षम नहीं कर सकता।

पिछले उदाहरण में, यदि आप केवल अनुरक्षण न किए गए पैकेज के लिए SCA स्कैन चलाना चाहते हैं, तो यह कमांड चला सकते हैं:

cycode scan -t sca --sca-scan unmaintained-packages repository ~/home/git/codebase

दुर्भावनापूर्ण पैकेज का विकल्प

[!NOTE] यह विकल्प केवल SCA स्कैन के लिए उपलब्ध है।

केवल दुर्भावनापूर्ण पैकेज स्कैन करने के लिए (ऐसी डिपेंडेंसी जिन्हें सुरक्षा सलाह में केवल कमज़ोर नहीं, बल्कि मैलवेयर के रूप में पहचाना गया है), -t sca या --scan-type sca विकल्प के बाद --sca-scan malicious-packages आर्ग्युमेंट जोड़ें।

दुर्भावनापूर्ण पैकेज के उल्लंघन हमेशा Critical के रूप में रिपोर्ट किए जाते हैं और उनमें CVSS स्कोर या फ़िक्स संस्करण नहीं होता: इसका एकमात्र समाधान डिपेंडेंसी हटाना है।

[!NOTE] दुर्भावनापूर्ण पैकेज की रिपोर्ट की जाएगी या नहीं, यह आपके संगठन की नीति से नियंत्रित होता है। यह विकल्प स्कैन की रिपोर्ट को सीमित करता है; यह आपके टेनेंट के लिए बंद नीति को सक्षम नहीं कर सकता।

पिछले उदाहरण में, यदि आप केवल दुर्भावनापूर्ण पैकेज के लिए SCA स्कैन चलाना चाहते हैं, तो यह कमांड चला सकते हैं:

cycode scan -t sca --sca-scan malicious-packages repository ~/home/git/codebase

लॉक रीस्टोर विकल्प

[!NOTE] यह विकल्प केवल SCA स्कैन के लिए उपलब्ध है।

SCA स्कैन चलाते समय, Cycode CLI मिलने वाली हर समर्थित मेनिफ़ेस्ट फ़ाइल के लिए डिपेंडेंसी लॉकफ़ाइल को रीस्टोर (जनरेट) करने की कोशिश अपने-आप करता है। इससे केवल मेनिफ़ेस्ट में सीधे सूचीबद्ध डिपेंडेंसी ही नहीं, बल्कि ट्रांज़िटिव डिपेंडेंसी भी स्कैन की जा सकती हैं। इस चरण को छोड़कर केवल सीधे डिपेंडेंसी स्कैन करने के लिए, --no-restore फ़्लैग का उपयोग करें।

निम्नलिखित इकोसिस्टम में लॉकफ़ाइल अपने-आप रीस्टोर की जा सकती है:

इकोसिस्टममेनिफ़ेस्ट फ़ाइलजनरेट की गई लॉकफ़ाइलचलाया जाने वाला टूल (जब लॉकफ़ाइल मौजूद न हो)
npmpackage.jsonpackage-lock.jsonnpm install --package-lock-only --ignore-scripts --no-audit
Yarnpackage.jsonyarn.lockyarn install --ignore-scripts
pnpmpackage.jsonpnpm-lock.yamlpnpm install --ignore-scripts
Denodeno.json / deno.jsoncdeno.lock(केवल मौजूदा लॉकफ़ाइल पढ़ता है)
Gogo.modgo.mod.graphgo list -m -json all + go mod graph
Mavenpom.xmlbcde.mvndepsmvn dependency:tree
Gradlebuild.gradle / build.gradle.ktsgradle-dependencies-generated.txtgradle dependencies -q --console plain
SBTbuild.sbtbuild.sbt.locksbt dependencyLockWrite
NuGet*.csprojpackages.lock.jsondotnet restore --use-lock-file
RubyGemfileGemfile.lockbundle --quiet
Poetrypyproject.tomlpoetry.lockpoetry lock
pippyproject.toml / requirements.txtpylock.tomlpip lock . / pip lock -r requirements.txt -o pylock.toml
PipenvPipfilePipfile.lockpipenv lock
PHP Composercomposer.jsoncomposer.lockcomposer update --no-cache --no-install --no-scripts --ignore-platform-reqs

यदि मेनिफ़ेस्ट के साथ लॉकफ़ाइल पहले से मौजूद है, तो Cycode उसे सीधे पढ़ता है और कोई इंस्टॉल कमांड नहीं चलाता। SBT पूर्वापेक्षा: sbt-dependency-lock प्लगइन इंस्टॉल होना चाहिए। project/plugins.sbt में निम्न पंक्ति जोड़ें:

addSbtPlugin("software.purpledragon" % "sbt-dependency-lock" % "1.5.1")

त्रुटि पर रुकने का विकल्प

डिफ़ॉल्ट रूप से, यदि कोई फ़ाइल पढ़ी नहीं जा सकती (उदाहरण के लिए, अनुमति संबंधी त्रुटि के कारण) या SCA स्कैन के दौरान निर्भरता लॉकफ़ाइल जनरेट नहीं की जा सकती, तो भी Cycode स्कैन जारी रखता है। विफल आइटम को चेतावनी के साथ छोड़ दिया जाता है और बाकी फ़ाइलों का स्कैन जारी रहता है।

इस व्यवहार को बदलने के लिए --stop-on-error का उपयोग करें: ऐसी पहली विफलता पर स्कैन तुरंत रुक जाता है और त्रुटि की रिपोर्ट करता है।

cycode scan -t sca --stop-on-error path ~/home/git/codebase

यह CI पाइपलाइन में उपयोगी है, जहाँ बिना सूचना के हुई विफलता से स्कैन का अधूरा परिणाम मिल सकता है। --stop-on-error ट्रिगर होने पर, आप मूल समस्या ठीक कर सकते हैं या, विशेष रूप से SCA रिस्टोर विफलताओं के लिए, लॉकफ़ाइल जनरेशन छोड़ने और केवल प्रत्यक्ष निर्भरताओं को स्कैन करने हेतु --no-restore जोड़ सकते हैं।

--stop-on-error का उपयोग करने पर, CLI निकास कोड के ज़रिए स्कैन त्रुटियों और नीति उल्लंघनों में अंतर करता है:

निकास कोडअर्थ
0स्कैन पूरा हुआ, कोई उल्लंघन नहीं मिला
1स्कैन पूरा हुआ और उल्लंघन मिले
2त्रुटि के कारण स्कैन रोक दिया गया (केवल तभी जब --stop-on-error सेट हो)

रिपॉज़िटरी स्कैन

रिपॉज़िटरी स्कैन किसी भी उजागर सीक्रेट या असुरक्षित कॉन्फ़िगरेशन के लिए पूरी स्थानीय रिपॉज़िटरी की जाँच करता है। यह अधिक व्यापक स्कैन प्रकार हर चीज़ की जाँच करता है: आपकी रिपॉज़िटरी की वर्तमान स्थिति और उसका कमिट इतिहास। यह न केवल रिपॉज़िटरी में वर्तमान में उजागर सीक्रेट, बल्कि पहले हटाए गए सीक्रेट भी खोजता है।

पूरी रिपॉज़िटरी का स्कैन चलाने के लिए, निम्न कमांड चलाएँ:

cycode scan repository {{path}}

उदाहरण के लिए, यदि आप ~/home/git/codebase में संग्रहीत रिपॉज़िटरी स्कैन करना चाहते हैं, तो यह कमांड चला सकते हैं:

cycode scan repository ~/home/git/codebase

इस कमांड के साथ निम्न विकल्प उपलब्ध है:

विकल्पविवरण
-b, --branch TEXTस्कैन करने वाली ब्रांच; सेट न होने पर डिफ़ॉल्ट ब्रांच स्कैन होती है

ब्रांच विकल्प

अपनी स्थानीय रिपॉज़िटरी की किसी विशिष्ट ब्रांच को स्कैन करने के लिए, -b (वैकल्पिक रूप से, --branch) आर्ग्युमेंट जोड़ें और उसके बाद उस ब्रांच का नाम दें जिसे आप स्कैन करना चाहते हैं।

पिछले उदाहरण के अनुसार, यदि आप केवल dev नाम की ब्रांच स्कैन करना चाहते हैं, तो यह कमांड चला सकते हैं:

cycode scan repository ~/home/git/codebase -b dev

पाथ स्कैन

पाथ स्कैन, केवल GIT रिपॉज़िटरी पर ध्यान केंद्रित करने के बजाय, किसी विशिष्ट स्थानीय डायरेक्टरी और उसकी सभी सामग्री की जाँच करता है।

डायरेक्टरी स्कैन चलाने के लिए, निम्न कमांड चलाएँ:

cycode scan path {{path}}

उदाहरण के लिए, मान लें कि आप ~/home/git/codebase पर स्थित डायरेक्टरी स्कैन करना चाहते हैं। तब आप यह कमांड चला सकते हैं:

cycode scan path ~/home/git/codebase

Terraform प्लान स्कैन

Cycode CLI, Terraform प्लान स्कैनिंग का समर्थन करता है (Terraform 0.12 और उसके बाद के संस्करणों के लिए)।

Terraform प्लान फ़ाइल JSON फ़ॉर्मैट में होनी चाहिए (उसका एक्सटेंशन .json होना चाहिए)।

यदि आपके पास केवल कॉन्फ़िगरेशन फ़ाइल है, तो आप निम्न तरीके से प्लान जनरेट कर सकते हैं:

  1. Terraform कॉन्फ़िगरेशन फ़ाइल वाली कार्यशील डायरेक्टरी को इनिशियलाइज़ करें:

    terraform init

  2. Terraform एक्ज़ीक्यूशन प्लान बनाएँ और बाइनरी आउटपुट सहेजें:

    terraform plan -out={tfplan_output}

  3. बाइनरी आउटपुट फ़ाइल को पढ़ने योग्य JSON में बदलें:

    terraform show -json {tfplan_output} > {tfplan}.json

  4. Cycode CLI से अपने {tfplan}.json को स्कैन करें:

    cycode scan -t iac path ~/PATH/TO/YOUR/{tfplan}.json

कमिट इतिहास स्कैन

[!NOTE] IaC स्कैन के लिए कमिट इतिहास स्कैन उपलब्ध नहीं है।

कमिट इतिहास स्कैन कमांड की दो मुख्य क्षमताएँ हैं:

  1. पूरा इतिहास स्कैन करना: रिपॉज़िटरी के इतिहास में सभी कमिट का विश्लेषण करना
  2. डिफ़ स्कैनिंग: विशिष्ट कमिट के बीच हुए बदलावों को स्कैन करना

सीक्रेट स्कैनिंग रिपॉज़िटरी के इतिहास में सभी कमिट का विश्लेषण कर सकती है, क्योंकि जो सीक्रेट जोड़े गए और बाद में हटाए गए, वे फिर भी लीक या उजागर हो सकते हैं। SCA और SAST स्कैन के लिए, कमिट इतिहास कमांड कमिट के बीच के अंतर/बदलावों को स्कैन करने पर केंद्रित है, इसलिए यह पुल रिक्वेस्ट की समीक्षा और क्रमिक स्कैनिंग के लिए उपयुक्त है।

कमिट इतिहास स्कैन आपकी Git रिपॉज़िटरी के कमिट इतिहास की जाँच करता है और इसका उपयोग व्यापक ऐतिहासिक विश्लेषण तथा विशिष्ट बदलावों की लक्षित डिफ़ स्कैनिंग, दोनों के लिए किया जा सकता है।

कमिट इतिहास स्कैन चलाने के लिए, निम्न कमांड चलाएँ:

cycode scan commit-history {{path}}

उदाहरण के लिए, मान लें कि आप ~/home/git/codebase में संग्रहीत रिपॉज़िटरी का कमिट इतिहास स्कैन करना चाहते हैं। तब आप यह कमांड चला सकते हैं:

cycode scan commit-history ~/home/git/codebase

इस कमांड के साथ निम्न विकल्प उपलब्ध हैं:

विकल्पविवरण
-r, --commit-range TEXTइस git रिपॉज़िटरी में कमिट की एक रेंज स्कैन करें; डिफ़ॉल्ट रूप से cycode पूरा कमिट इतिहास स्कैन करता है (उदाहरण: HEAD~1)

कमिट रेंज विकल्प (डिफ़ स्कैनिंग)

कमिट रेंज विकल्प डिफ़ स्कैनिंग सक्षम करता है — पूरी रिपॉज़िटरी के इतिहास के बजाय केवल विशिष्ट कमिट के बीच हुए बदलावों को स्कैन करना। यह विशेष रूप से इन स्थितियों में उपयोगी है:

  • पुल रिक्वेस्ट सत्यापन: PR में किए गए बदलावों को ही स्कैन करें
  • क्रमिक CI/CD स्कैनिंग: पूरे कोडबेस के बजाय हाल के बदलावों पर ध्यान दें
  • फ़ीचर ब्रांच की समीक्षा: बदलावों की तुलना main/master ब्रांच से करें
  • प्रदर्शन अनुकूलन: दायरे को प्रासंगिक बदलावों तक सीमित करके तेज़ स्कैन करें

कमिट रेंज सिंटैक्स

--commit-range (-r) विकल्प, Git के मानक रिविज़न सिंटैक्स का समर्थन करता है:

सिंटैक्सविवरणउदाहरण
commit1..commit2commit1 से commit2 तक के बदलावabc123..def456
commit1...commit2commit1 में नहीं, commit2 में मौजूद बदलावmain...feature-branch
commitकमिट से HEAD तक के बदलावHEAD~1
branch1..branch2branch1 से branch2 तक के बदलावmain..feature-branch

डिफ़ स्कैनिंग के उदाहरण

पिछले कमिट के बदलाव स्कैन करें:

cycode scan commit-history -r HEAD~1 ~/home/git/codebase

दो विशिष्ट कमिट के बीच के बदलाव स्कैन करें:

cycode scan commit-history -r abc123..def456 ~/home/git/codebase

main की तुलना में अपनी फ़ीचर ब्रांच के बदलाव स्कैन करें:

cycode scan commit-history -r main..HEAD ~/home/git/codebase

main और फ़ीचर ब्रांच के बीच के बदलाव स्कैन करें:

cycode scan commit-history -r main..feature-branch ~/home/git/codebase

पिछले 3 कमिट के सभी बदलाव स्कैन करें:

cycode scan commit-history -r HEAD~3..HEAD ~/home/git/codebase

[!TIP] CI/CD पाइपलाइन के लिए, केवल PR/MR बदलाव स्कैन करने हेतु ${{ github.event.pull_request.base.sha }}..${{ github.sha }} (GitHub Actions) या $CI_MERGE_REQUEST_TARGET_BRANCH_SHA..$CI_COMMIT_SHA (GitLab CI) जैसे एनवायरनमेंट वेरिएबल का उपयोग कर सकते हैं।

प्री-कमिट स्कैन

प्री-कमिट स्कैन, रिपॉज़िटरी में बदलाव कमिट करने से पहले किसी भी समस्या की अपने-आप पहचान करता है। इस स्कैन को मैन्युअल रूप से चलाने की आवश्यकता नहीं है; इस गाइड के इंस्टॉलेशन अनुभाग में बताए अनुसार प्री-कमिट हुक कॉन्फ़िगर करें।

प्री-कमिट हुक इंस्टॉल करने के बाद, कभी-कभी आप किसी विशिष्ट कमिट के दौरान स्कैन छोड़ना चाह सकते हैं। ऐसा करने के लिए, एक कमिट के लिए स्कैन छोड़ने हेतु अपने git कमांड में निम्न जोड़ें:

SKIP=cycode git commit -m <your commit message>`

इस कमांड के साथ निम्न विकल्प उपलब्ध हैं:

विकल्पविवरण
-b, --base-ref TEXTडिफ़ के लिए Git ref (कमिट, ब्रांच या टैग); डिफ़ॉल्ट HEAD है, जो प्री-कमिट हुक के व्यवहार से मेल खाता है
--include-unstagedकेवल स्टेज किए गए बदलावों के बजाय, ट्रैक की गई फ़ाइलों के अनस्टेज किए गए बदलाव भी स्कैन करें; डिफ़ॉल्ट रूप से बंद
--path PATHडिफ़ स्कैन का दायरा सीमित करने के लिए वैकल्पिक पाथ; इसे दोहराया जा सकता है; डिफ़ॉल्ट रूप से पूरी कार्यशील डायरेक्टरी

स्थानीय डिफ़ स्कैनिंग (IDE इंटीग्रेशन)

--base-ref और --include-unstaged, pre-commit को सामान्य प्रयोजन वाले स्थानीय डिफ़ स्कैन में बदल देते हैं: किसी भी कमिट (डिफ़ॉल्ट HEAD) की तुलना आपकी वर्तमान कार्यशील डायरेक्टरी से करना — इसमें वे बदलाव भी शामिल हैं जो अभी स्टेज नहीं किए गए हैं। यह IDE प्लगइन और ऐसे अन्य टूल के लिए है जिन्हें Git हुक के बजाय काम करते समय लगातार, रीयल-टाइम फ़ीडबैक चाहिए। --include-unstaged के साथ उपयोग करने पर, --path IDE को स्कैन का दायरा केवल एडिटर में वर्तमान में खुली फ़ाइल तक सीमित करने देता है।

[!NOTE] IaC स्कैन के लिए स्थानीय डिफ़ स्कैनिंग (इन फ़्लैग के ज़रिए) उपलब्ध नहीं है।

पिछले कमिट की तुलना में वर्तमान में बदले गए सभी बदलाव (स्टेज किए गए + अनस्टेज किए गए) स्कैन करें:

cycode scan pre-commit --include-unstaged

किसी विशिष्ट कमिट या ब्रांच की तुलना में बदलाव स्कैन करें:

cycode scan pre-commit --include-unstaged --base-ref main

केवल किसी विशिष्ट फ़ाइल को स्कैन करें (उदाहरण के लिए, आपके IDE में वर्तमान में खुली फ़ाइल):

cycode scan pre-commit --include-unstaged --path src/app.py

प्री-पुश स्कैन

प्री-पुश स्कैन, रिमोट रिपॉज़िटरी में बदलाव पुश करने से पहले किसी भी समस्या की अपने-आप पहचान करता है। यह हुक क्लाइंट की ओर चलता है और केवल उन कमिट को स्कैन करता है जिन्हें पुश किया जाने वाला है, जिससे समस्याओं को रिमोट रिपॉज़िटरी तक पहुँचने से पहले पकड़ना कुशल हो जाता है।

[!NOTE] IaC स्कैन के लिए प्री-पुश हुक उपलब्ध नहीं है।

प्री-पुश हुक, प्री-कमिट फ़्रेमवर्क के साथ इंटीग्रेट होता है और इसे किसी भी git push ऑपरेशन से पहले चलने के लिए कॉन्फ़िगर किया जा सकता है।

प्री-पुश हुक इंस्टॉल करना

प्री-कमिट फ़्रेमवर्क का उपयोग करके प्री-पुश हुक सेट अप करने के लिए:

  1. प्री-कमिट फ़्रेमवर्क इंस्टॉल करें (यदि पहले से इंस्टॉल नहीं है):

    pip3 install pre-commit
    
  2. अपने .pre-commit-config.yaml फ़ाइल में प्री-पुश हुक शामिल करें या उसे अपडेट करें:

    repos:
      - repo: https://github.com/cycodehq/cycode-cli
        rev: v3.25.0
        hooks:
          - id: cycode-pre-push
            stages: [pre-push]
    
  3. कई स्कैन प्रकारों के लिए, यह कॉन्फ़िगरेशन उपयोग करें:

    repos:
      - repo: https://github.com/cycodehq/cycode-cli
        rev: v3.25.0
        hooks:
          - id: cycode-pre-push          # Secrets scan
            stages: [pre-push]
          - id: cycode-sca-pre-push      # SCA scan
            stages: [pre-push]
          - id: cycode-sast-pre-push     # SAST scan
            stages: [pre-push]
    
  4. प्री-पुश हुक इंस्टॉल करें:

    pre-commit install --hook-type pre-push
    

    इंस्टॉलेशन सफल होने पर यह संदेश दिखाई देगा: Pre-push installed at .git/hooks/pre-push।

  5. प्री-पुश हुक को अद्यतन रखें:

    pre-commit autoupdate
    

प्री-पुश स्कैनिंग कैसे काम करती है

हुक पुश किए जा रहे हर कमिट को एक-एक करके स्कैन करता है, इसलिए एक कमिट में जोड़ा गया और बाद के कमिट में हटाया गया सीक्रेट भी पकड़ा जाता है। प्री-कमिट फ़्रेमवर्क के ज़रिए इंस्टॉल किए जाने पर, पुश की रेंज फ़्रेमवर्क से ली जाती है: मौजूदा ब्रांच के लिए रिमोट ब्रांच के बाद के नए कमिट, और नई ब्रांच के लिए वे कमिट जो अभी रिमोट पर नहीं हैं (खाली रिमोट पर पुश करते समय सभी कमिट)। हाथ से लिखे गए .git/hooks/pre-push से चलाने पर, रेंज git के हुक इनपुट से ली जाती है, और नई ब्रांच को डिफ़ॉल्ट ब्रांच के साथ उसके मर्ज बेस से स्कैन किया जाता है (नीचे देखें)।

जिन पुश में स्कैन करने के लिए कुछ नहीं होता, जैसे टैग, ब्रांच हटाना और पहले से अद्यतन पुश, वे बिना स्कैन के आगे बढ़ जाते हैं। यदि हुक यह निर्धारित नहीं कर पाता कि क्या पुश किया जा रहा है, तो वह चुपचाप आगे बढ़ने के बजाय विफल हो जाता है और पुश को रोक देता है।

Cycode प्री-पुश हुक always_run: true और pass_filenames: false सेट करते हैं, क्योंकि स्कैन फ़ाइलों की सूची के बजाय पुश किए गए कमिट को कवर करता है। always_run के बिना, यदि पुश किए गए कमिट में कुल मिलाकर कोई बदली हुई फ़ाइल नहीं होती, तो प्री-कमिट फ़्रेमवर्क हुक छोड़ देता है; उदाहरण के लिए, जब एक कमिट में सीक्रेट जोड़ा जाता है और अगले में हटा दिया जाता है। pass_filenames: false के बिना, फ़्रेमवर्क बदली हुई फ़ाइलों के नाम पास करता है, जिनका स्कैन उपयोग नहीं करता; बड़े पुश पर यह उन्हें बैच में बाँट देता है और हर बैच के लिए पूरा स्कैन एक बार चलाता है। यदि आप स्वयं हुक परिभाषित करते हैं (उदाहरण के लिए, repo: local हुक के रूप में), तो दोनों विकल्प सेट करें।

डिफ़ॉल्ट ब्रांच का स्मार्ट पता लगाना

हाथ से लिखे गए हुक से चलाने पर, प्री-पुश स्कैन मर्ज बेस की गणना के लिए डिफ़ॉल्ट ब्रांच का पता लगाने हेतु इस प्राथमिकता क्रम का उपयोग करता है:

  1. एनवायरनमेंट वेरिएबल: CYCODE_DEFAULT_BRANCH - मैन्युअल ओवरराइड की अनुमति देता है
  2. Git Remote HEAD: वास्तविक रिमोट डिफ़ॉल्ट ब्रांच का पता लगाने के लिए git symbolic-ref refs/remotes/origin/HEAD का उपयोग करता है
  3. Git Remote Info: symbolic-ref विफल होने पर git remote show origin पर फ़ॉलबैक करता है
  4. हार्डकोड किए गए फ़ॉलबैक: आम डिफ़ॉल्ट ब्रांच नामों (origin/main, origin/master, main, master) का उपयोग करता है

कस्टम डिफ़ॉल्ट ब्रांच सेट करना:

export CYCODE_DEFAULT_BRANCH=origin/develop

यह स्मार्ट पहचान सुनिश्चित करती है कि प्री-पुश हुक सही ढंग से काम करे, चाहे आपका रिपॉज़िटरी main, master, develop या किसी अन्य डिफ़ॉल्ट ब्रांच नाम का उपयोग करता हो।

प्री-पुश स्कैन छोड़ना

किसी विशिष्ट पुश ऑपरेशन के लिए प्री-पुश स्कैन छोड़ने हेतु, इसका उपयोग करें:

SKIP=cycode-pre-push git push

या सभी प्री-पुश हुक छोड़ने के लिए:

git push --no-verify

[!TIP] प्री-पुश हुक git push कमांड पर ट्रिगर होता है और केवल उन कमिट्स को स्कैन करता है जिन्हें पुश किया जाने वाला है। इससे पूरा रिपॉज़िटरी स्कैन करने की तुलना में यह अधिक कुशल होता है।

स्कैन से पाथ बाहर रखें

आप Cycode CLI को यह बताने के लिए .cycodeignore फ़ाइल का उपयोग कर सकते हैं कि स्कैन से किन फ़ाइलों और डायरेक्टरी को बाहर रखना है। यह .gitignore फ़ाइल की तरह ही काम करती है। इससे आप अपने प्रासंगिक कोड पर स्कैन केंद्रित कर सकते हैं और कुछ पाथ को स्थानीय रूप से उल्लंघन ट्रिगर करने से रोक सकते हैं।

यह कैसे काम करता है

  1. अपने वर्कफ़ोल्डर में .cycodeignore नाम की फ़ाइल बनाएँ।
  2. बाहर रखने वाली फ़ाइलों और डायरेक्टरी की सूची बनाएँ। इसके लिए .gitignore जैसे ही पैटर्न का उपयोग करें।
  3. इस फ़ाइल को उस डायरेक्टरी में रखें जहाँ आप cycode scan कमांड चलाने की योजना बना रहे हैं।

[!WARNING]

  • अमान्य फ़ाइलें: यदि .cycodeignore फ़ाइल में सिंटैक्स त्रुटि है, तो CLI स्कैन विफल हो जाएगा और एक त्रुटि लौटाएगा।
  • पाथ को अनदेखा करना बनाम उल्लंघन: यह फ़ाइल पाथ को बाहर रखने के लिए है। यह विशिष्ट उल्लंघनों को अनदेखा करने की CLI की क्षमता से अलग है (उदाहरण के लिए, --ignore-violation फ़्लैग का उपयोग करके)।

समर्थित स्कैनर

  • SAST
  • IaC (जल्द आ रहा है)
  • SCA (जल्द आ रहा है)

स्कैन के परिणाम

हर स्कैन पूरा होने पर यह बताने वाला संदेश दिखेगा कि कोई समस्या मिली या नहीं।

यदि कोई समस्या नहीं मिलती, तो स्कैन निम्नलिखित सफलता संदेश के साथ समाप्त होता है:

Good job! No issues were found!!! 👏👏👏

यदि कोई समस्या मिलती है, तो इसके बजाय स्कैन पूरा होने पर उल्लंघन कार्ड दिखाई देता है। इस स्थिति में, परिणाम संदेश में हाइलाइट की गई विशिष्ट पंक्ति के लिए संबंधित फ़ाइल की समीक्षा करें। समस्या हल करने के लिए आवश्यक बदलाव लागू करें, फिर स्कैन दोबारा चलाएँ।

सीक्रेट दिखाएँ/छिपाएँ

नीचे दिए गए उदाहरणों में, secret_test फ़ाइल में एक सीक्रेट मिला, जो cli सबफ़ोल्डर में स्थित है। संदेश का दूसरा भाग उस विशिष्ट पंक्ति को दिखाता है जिसमें सीक्रेट मौजूद है। इस मामले में, यह googleApiKey को असाइन किया गया मान है।

ध्यान दें कि उदाहरण में वास्तविक सीक्रेट मान को छिपाकर, उसके अधिकांश हिस्से को तारांकन चिह्नों से बदल दिया गया है। स्कैन डिफ़ॉल्ट रूप से सीक्रेट छिपाते हैं, लेकिन आप चाहें तो पूरा सीक्रेट देखने के लिए इस सुविधा को बंद कर सकते हैं (यह मानते हुए कि जिस मशीन पर आप स्कैन का परिणाम देख रहे हैं, वह ताक-झाँक से पर्याप्त रूप से सुरक्षित है)।

सीक्रेट छिपाने की सुविधा बंद करने के लिए, किसी भी प्रकार के स्कैन में --show-secret आर्ग्युमेंट जोड़ें।

निम्नलिखित उदाहरण में, cli सबडायरेक्टरी पर Path Scan चलाया गया है और मिले किसी भी सीक्रेट को पूरा दिखाने का विकल्प सक्षम है:

cycode scan --show-secret path ./cli

इसके बाद परिणाम छिपाया नहीं जाएगा।

सॉफ्ट फ़ेल

सामान्य रूप से, स्कैन के परिणामों में समस्याएँ मिलने पर CLI 1 का एग्ज़िट कोड लौटाएगा। आपके CI/CD सेटअप के आधार पर, इससे आम तौर पर पूरी प्रक्रिया विफल हो जाएगी। यदि आप ऐसा नहीं चाहते, तो सॉफ्ट फ़ेल सुविधा का उपयोग कर सकते हैं।

किसी भी प्रकार के स्कैन में --soft-fail विकल्प जोड़ने पर, परिणाम मिले या न मिले, एग्ज़िट कोड को 0 पर सेट कर दिया जाएगा।

स्कैन परिणामों के उदाहरण

Secrets परिणाम का उदाहरण

╭─────────────────────────────────────────────────────────────── Hardcoded generic-password is used ───────────────────────────────────────────────────────────────╮
│                                                                                                                                               Violation 12 of 12 │
│ ╭─ 🔍 Details ───────────────────────────────────────╮ ╭─ 💻 Code Snippet ─────────────────────────────────────────────────────────────────────────────────────╮ │
│ │  Severity    🟠 MEDIUM                             │ │   34 };                                                                                               │ │
│ │  In file     /Users/cycodemacuser/NodeGoat/test/s  │ │   35                                                                                                  │ │
│ │              ecurity/profile-test.js               │ │   36 var sutUserName = "user1";                                                                       │ │
│ │  Secret SHA  b4ea3116d868b7c982ee6812cce61727856b  │ │ ❱ 37 var sutUserPassword = "Us*****23";                                                               │ │
│ │              802b3063cd5aebe7d796988552e0          │ │   38                                                                                                  │ │
│ │  Rule ID     68b6a876-4890-4e62-9531-0e687223579f  │ │   39 chrome.setDefaultService(service);                                                               │ │
│ ╰────────────────────────────────────────────────────╯ │   40                                                                                                  │ │
│                                                        ╰───────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
│ ╭─ 📝 Summary ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │
│ │ A generic secret or password is an authentication token used to access a computer or application and is assigned to a password variable.                     │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯

IaC परिणाम का उदाहरण

╭──────────── Enable Content Encoding through the attribute 'MinimumCompressionSize'. This value should be greater than -1 and smaller than 10485760. ─────────────╮
│                                                                                                                                              Violation 45 of 110 │
│ ╭─ 🔍 Details ───────────────────────────────────────╮ ╭─ 💻 Code Snippet ─────────────────────────────────────────────────────────────────────────────────────╮ │
│ │  Severity      🟠 MEDIUM                           │ │   20 BinaryMediaTypes:                                                                                │ │
│ │  In file       ...ads-copy/iac/cft/api-gateway/ap  │ │   21   - !Ref binaryMediaType1                                                                        │ │
│ │                i-gateway-rest-api/deploy.yml       │ │   22   - !Ref binaryMediaType2                                                                        │ │
│ │  IaC Provider  CloudFormation                      │ │ ❱ 23 MinimumCompressionSize: -1                                                                       │ │
│ │  Rule ID       33c4b90c-3270-4337-a075-d3109c141b  │ │   24 EndpointConfiguration:                                                                           │ │
│ │                53                                  │ │   25   Types:                                                                                         │ │
│ ╰────────────────────────────────────────────────────╯ │   26     - EDGE                                                                                       │ │
│                                                        ╰───────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
│ ╭─ 📝 Summary ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │
│ │ This policy validates the proper configuration of content encoding in AWS API Gateway. Specifically, the policy checks for the attribute                     │ │
│ │ 'minimum_compression_size' in API Gateway REST APIs. Correct configuration of this attribute is important for enabling content encoding of API responses for │ │
│ │ improved API performance and reduced payload sizes.                                                                                                          │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯

SCA परिणाम का उदाहरण

╭─────────────────────────────────────────────────────── [CVE-2019-10795] Prototype Pollution in undefsafe ────────────────────────────────────────────────────────╮
│                                                                                                                                             Violation 172 of 195 │
│ ╭─ 🔍 Details ───────────────────────────────────────╮ ╭─ 💻 Code Snippet ─────────────────────────────────────────────────────────────────────────────────────╮ │
│ │  Severity               🟠 MEDIUM                  │ │   26758   "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=",                                           │ │
│ │  In file                /Users/cycodemacuser/Node  │ │   26759   "dev": true                                                                                 │ │
│ │                         Goat/package-lock.json     │ │   26760 },                                                                                            │ │
│ │  CVEs                   CVE-2019-10795             │ │ ❱ 26761 "undefsafe": {                                                                                │ │
│ │  Package                undefsafe                  │ │   26762   "version": "2.0.2",                                                                         │ │
│ │  Version                2.0.2                      │ │   26763   "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.2.tgz",                   │ │
│ │  First patched version  Not fixed                  │ │   26764   "integrity": "sha1-Il9rngM3Zj4Njnz9aG/Cg2zKznY=",                                           │ │
│ │  Dependency path        nodemon 1.19.1 ->          │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
│ │                         undefsafe 2.0.2            │                                                                                                           │
│ │  Rule ID                9c6a8911-e071-4616-86db-4  │                                                                                                           │
│ │                         943f2e1df81                │                                                                                                           │
│ ╰────────────────────────────────────────────────────╯                                                                                                           │
│ ╭─ 📝 Summary ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │
│ │ undefsafe before 2.0.3 is vulnerable to Prototype Pollution. The 'a' function could be tricked into adding or modifying properties of Object.prototype using │ │
│ │ a __proto__ payload.                                                                                                                                         │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯

SAST परिणाम का उदाहरण

╭───────────────────────────────────────────── [CWE-208: Observable Timing Discrepancy] Observable Timing Discrepancy ─────────────────────────────────────────────╮
│                                                                                                                                               Violation 24 of 49 │
│ ╭─ 🔍 Details ───────────────────────────────────────╮ ╭─ 💻 Code Snippet ─────────────────────────────────────────────────────────────────────────────────────╮ │
│ │  Severity       🟠 MEDIUM                          │ │   173         " including numbers, lowercase and uppercase letters.";                                 │ │
│ │  In file        /Users/cycodemacuser/NodeGoat/app  │ │   174     return false;                                                                               │ │
│ │                 /routes/session.js                 │ │   175 }                                                                                               │ │
│ │  CWE            CWE-208                            │ │ ❱ 176 if (password !== verify) {                                                                      │ │
│ │  Subcategory    Security                           │ │   177     errors.verifyError = "Password must match";                                                 │ │
│ │  Language       js                                 │ │   178     return false;                                                                               │ │
│ │  Security Tool  Bearer (Powered by Cycode)         │ │   179 }                                                                                               │ │
│ │  Rule ID        19fbca07-a8e7-4fa6-92ac-a36d15509  │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
│ │                 fa9                                │                                                                                                           │
│ ╰────────────────────────────────────────────────────╯                                                                                                           │
│ ╭─ 📝 Summary ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │
│ │ Observable Timing Discrepancy occurs when the time it takes for certain operations to complete can be measured and observed by attackers. This vulnerability │ │
│ │ is particularly concerning when operations involve sensitive information, such as password checks or secret comparisons. If attackers can analyze how long   │ │
│ │ these operations take, they might be able to deduce confidential details, putting your data at risk.                                                         │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯

कंपनी के कस्टम सुधार दिशानिर्देश

यदि आपकी कंपनी ने Cycode पोर्टल के माध्यम से संबंधित नीति में कस्टम सुधार दिशानिर्देश सेट किए हैं, तो आपको “Company Guidelines” फ़ील्ड दिखाई देगा, जिसमें आपके जोड़े गए सुधार दिशानिर्देश होंगे। ध्यान दें कि यदि आपने कंपनी के कोई दिशानिर्देश नहीं जोड़े हैं, तो यह फ़ील्ड CLI टूल में दिखाई नहीं देगा।

स्कैन परिणामों को अनदेखा करना

विशिष्ट सीक्रेट मानों, विशिष्ट SHA512 मानों, विशिष्ट पाथ और विशिष्ट Cycode सीक्रेट तथा IaC नियम ID को अनदेखा करने के लिए अनदेखा करने के नियम जोड़े जा सकते हैं। इससे स्कैन इन मानों के लिए अलर्ट नहीं करेगा। अनदेखा करने के नियम स्थानीय रूप से ./.cycode/config.yaml फ़ाइल में लिखे और सहेजे जाते हैं।

[!WARNING] अनदेखा किए जाने वाले मान जोड़ते समय, मानों, पाथ और नीतियों पर सावधानीपूर्वक विचार करें, ताकि स्कैन वास्तविक सकारात्मक परिणामों का पता लगा सकें।

cycode ignore कमांड के लिए उपलब्ध विकल्प निम्नलिखित हैं:

विकल्पविवरण
--by-value TEXTसीक्रेट स्कैन करते समय किसी विशिष्ट मान को अनदेखा करें। अधिक जानकारी के लिए सीक्रेट मान को अनदेखा करना देखें।
--by-sha TEXTसीक्रेट स्कैन करते समय किसी स्ट्रिंग के विशिष्ट SHA512 निरूपण को अनदेखा करें। अधिक जानकारी के लिए सीक्रेट SHA मान को अनदेखा करना देखें।
--by-path TEXTकिसी विशिष्ट पाथ को स्कैन करने से बचें। स्कैन का प्रकार निर्दिष्ट करना आवश्यक है। अधिक जानकारी के लिए पाथ को अनदेखा करना देखें।
--by-rule TEXTकिसी विशिष्ट सीक्रेट नियम ID/IaC नियम ID/SCA नियम ID को स्कैन करने से बचें। अधिक जानकारी के लिए सीक्रेट या Iac नियम को अनदेखा करना देखें।
--by-package TEXTSCA स्कैन चलाते समय किसी विशिष्ट पैकेज संस्करण को स्कैन करने से बचें। अपेक्षित पैटर्न - name@version। अधिक जानकारी के लिए पैकेज को अनदेखा करना देखें।
--by-cve TEXTSCA स्कैन चलाते समय किसी विशिष्ट CVE को स्कैन करने से बचें। अपेक्षित पैटर्न: CVE-YYYY-NNN।
-t, --scan-type [secret|iac|sca|sast]वह स्कैन निर्दिष्ट करें जिसे आप चलाना चाहते हैं (secret/iac/sca/sast)। डिफ़ॉल्ट मान secret है।
-g, --globalअनदेखा करने का नियम जोड़ें और उसे वैश्विक .cycode कॉन्फ़िग फ़ाइल में अपडेट करें।

सीक्रेट मान को अनदेखा करना

किसी विशिष्ट सीक्रेट मान को अनदेखा करने के लिए, आपको --by-value फ़्लैग का उपयोग करना होगा। इससे दिया गया सीक्रेट मान भविष्य के सभी स्कैन में अनदेखा किया जाएगा। अनदेखा किए जाने वाले सीक्रेट मान को जोड़ने के लिए निम्नलिखित कमांड का उपयोग करें:

cycode ignore --by-value {{secret-value}}

इस सेक्शन के शीर्ष पर दिए गए उदाहरण में, किसी विशिष्ट सीक्रेट मान को अनदेखा करने का कमांड इस प्रकार है:

cycode ignore --by-value h3110w0r1d!@#$350

ऊपर दिए गए उदाहरण में, h3110w0r1d!@#$350 मान को अपने बिना छिपाए गए सीक्रेट मान से बदलें। स्कैन परिणामों में सीक्रेट मान देखने का तरीका जानने के लिए Cycode स्कैन विकल्प देखें।

सीक्रेट SHA मान को अनदेखा करना

किसी विशिष्ट सीक्रेट SHA मान को अनदेखा करने के लिए, आपको --by-sha फ़्लैग का उपयोग करना होगा। इससे दिया गया सीक्रेट SHA मान भविष्य के सभी स्कैन में अनदेखा किया जाएगा। अनदेखा किए जाने वाले सीक्रेट SHA मान को जोड़ने के लिए निम्नलिखित कमांड का उपयोग करें:

cycode ignore --by-sha {{secret-sha-value}}

इस सेक्शन के शीर्ष पर दिए गए उदाहरण में, किसी विशिष्ट सीक्रेट SHA मान को अनदेखा करने का कमांड इस प्रकार है:

cycode ignore --by-sha a44081db3296c84b82d12a35c446a3cba19411dddfa0380134c75f7b3973bff0

ऊपर दिए गए उदाहरण में, a44081db3296c84b82d12a35c446a3cba19411dddfa0380134c75f7b3973bff0 मान को अपने सीक्रेट SHA मान से बदलें।

पाथ को अनदेखा करना

सीक्रेट, IaC या SCA स्कैन में किसी विशिष्ट पाथ को अनदेखा करने के लिए, आपको --by-path फ़्लैग के साथ -t, --scan-type फ़्लैग का उपयोग करना होगा (स्कैन का प्रकार निर्दिष्ट करना आवश्यक है)। इससे दिया गया पाथ, निर्दिष्ट स्कैन प्रकार के भविष्य के सभी स्कैन में अनदेखा किया जाएगा। अनदेखा किए जाने वाले पाथ को जोड़ने के लिए निम्नलिखित कमांड का उपयोग करें:

cycode ignore -t {{scan-type}} --by-path {{path}}

इस सेक्शन के शीर्ष पर दिए गए उदाहरण में, किसी सीक्रेट के लिए विशिष्ट पाथ को अनदेखा करने का कमांड इस प्रकार है:

cycode ignore -t secret --by-path ~/home/my-repo/config

ऊपर दिए गए उदाहरण में, ~/home/my-repo/config मान को अपने पाथ मान से बदलें।

इस सेक्शन के शीर्ष पर दिए गए उदाहरण में, IaC स्कैन से किसी विशिष्ट पाथ को अनदेखा करने का कमांड इस प्रकार है:

cycode ignore -t iac --by-path ~/home/my-repo/config

ऊपर दिए गए उदाहरण में, ~/home/my-repo/config मान को अपने पाथ मान से बदलें।

इस सेक्शन के शीर्ष पर दिए गए उदाहरण में, SCA स्कैन से किसी विशिष्ट पाथ को अनदेखा करने का कमांड इस प्रकार है:

cycode ignore -t sca --by-path ~/home/my-repo/config

ऊपर दिए गए उदाहरण में, ~/home/my-repo/config मान को अपने पाथ मान से बदलें।

सीक्रेट, IaC, SCA या SAST नियम को अनदेखा करना

किसी विशिष्ट सीक्रेट, IaC, SCA या SAST नियम को अनदेखा करने के लिए, आपको --by-rule फ़्लैग के साथ -t, --scan-type फ़्लैग का उपयोग करना होगा (स्कैन का प्रकार निर्दिष्ट करना आवश्यक है)। इससे दिया गया नियम ID मान भविष्य के सभी स्कैन में अनदेखा किया जाएगा। अनदेखा किए जाने वाले नियम ID मान को जोड़ने के लिए निम्नलिखित कमांड का उपयोग करें:

cycode ignore -t {{scan-type}} --by-rule {{rule-ID}}

इस सेक्शन के शीर्ष पर दिए गए उदाहरण में, विशिष्ट सीक्रेट नियम ID को अनदेखा करने का कमांड इस प्रकार है:

cycode ignore -t secret --by-rule ce3a4de0-9dfc-448b-a004-c538cf8b4710

ऊपर दिए गए उदाहरण में, ce3a4de0-9dfc-448b-a004-c538cf8b4710 मान को उस नियम ID से बदलें जिसे आप अनदेखा करना चाहते हैं।

इस सेक्शन के शीर्ष पर दिए गए उदाहरण में, विशिष्ट IaC नियम ID को अनदेखा करने का कमांड इस प्रकार है:

cycode ignore -t iac --by-rule bdaa88e2-5e7c-46ff-ac2a-29721418c59c

ऊपर दिए गए उदाहरण में, bdaa88e2-5e7c-46ff-ac2a-29721418c59c मान को उस नियम ID से बदलें जिसे आप अनदेखा करना चाहते हैं।

इस सेक्शन के शीर्ष पर दिए गए उदाहरण में, विशिष्ट SCA नियम ID को अनदेखा करने का कमांड इस प्रकार है:

cycode ignore -t sca --by-rule dc21bc6b-9f4f-46fb-9f92-e4327ea03f6b

ऊपर दिए गए उदाहरण में, dc21bc6b-9f4f-46fb-9f92-e4327ea03f6b मान को उस नियम ID से बदलें जिसे आप अनदेखा करना चाहते हैं।

पैकेज को अनदेखा करना

[!NOTE] यह विकल्प केवल SCA स्कैन के लिए उपलब्ध है।

SCA स्कैन में किसी विशिष्ट पैकेज को अनदेखा करने के लिए, आपको --by-package फ़्लैग के साथ -t, --scan-type फ़्लैग का उपयोग करना होगा (आपको sca स्कैन प्रकार निर्दिष्ट करना होगा)। इससे दिया गया पैकेज, {{package_name}}@{{package_version}} फ़ॉर्मैटिंग का उपयोग करके, भविष्य के सभी स्कैन में अनदेखा किया जाएगा। अनदेखा किए जाने वाले पैकेज और संस्करण को जोड़ने के लिए निम्नलिखित कमांड का उपयोग करें:

cycode ignore --scan-type sca --by-package {{package_name}}@{{package_version}}

या

cycode ignore -t sca --by-package {{package_name}}@{{package_version}}

नीचे दिए गए उदाहरण में, किसी विशिष्ट SCA पैकेज को अनदेखा करने का कमांड इस प्रकार है:

cycode ignore --scan-type sca --by-package pyyaml@5.3.1

ऊपर दिए गए उदाहरण में, pyyaml को पैकेज नाम से और 5.3.1 को उस पैकेज संस्करण से बदलें जिसे आप अनदेखा करना चाहते हैं।

कॉन्फ़िग फ़ाइल के माध्यम से अनदेखा करना

लागू किए गए अनदेखा करने के नियम config.yaml नाम की कॉन्फ़िगरेशन फ़ाइल में संग्रहीत होते हैं। इस फ़ाइल को डेवलपरों के बीच आसानी से साझा किया जा सकता है या रिमोट Git में कमिट भी किया जा सकता है। ये फ़ाइलें हमेशा .cycode फ़ोल्डर में स्थित होती हैं। फ़ोल्डर का नाम डॉट (.) से शुरू होता है, इसलिए इसे देखने के लिए आपको छिपी हुई फ़ाइलों का प्रदर्शन सक्षम करना होगा।

कॉन्फ़िग फ़ाइलों का पाथ

डिफ़ॉल्ट रूप से, सभी cycode ignore कमांड अनदेखा करने का नियम उस मौजूदा डायरेक्टरी में सहेजते हैं जहाँ से CLI चलाया गया है।

उदाहरण: /Users/name/projects/backend से अनदेखा करने वाला CLI कमांड चलाने पर /Users/name/projects/backend/.cycode में config.yaml बनेगा।

➜  backend  pwd
/Users/name/projects/backend
➜  backend  cycode ignore --by-value test-value
➜  backend  tree -a
.
└── .cycode
    └── config.yaml

2 directories, 1 file

दूसरा विकल्प अनदेखा करने के नियमों को वैश्विक कॉन्फ़िगरेशन फ़ाइलों में सहेजना है। वैश्विक कॉन्फ़िग का पाथ ~/.cycode/config.yaml है, जहाँ ~ का अर्थ macOS पर users home directory, for example, /Users/name` है।

वैश्विक स्थान में सहेजने के लिए cycode ignore कमांड के -g फ़्लैग का उपयोग किया जा सकता है। उदाहरण के लिए: cycode ignore -g --by-value test-value।

सही कार्यशील डायरेक्टरी

.cycode फ़ोल्डर को सही जगह पर रखना और CLI को उसी जगह से चलाना बेहद ज़रूरी है। CI/CD (GitHub Actions, Jenkins आदि) जैसे अलग-अलग परिवेशों में काम करते समय इसकी दोबारा जाँच करें।

आप .cycode फ़ोल्डर को अपने रिपॉज़िटरी के रूट में कमिट कर सकते हैं। इस स्थिति में, आपको CLI स्कैन रिपॉज़िटरी के रूट से चलाने होंगे। यदि यह आपकी आवश्यकताओं के अनुरूप नहीं है, तो आप अस्थायी रूप से .cycode फ़ोल्डर को अपनी इच्छित जगह पर कॉपी कर सकते हैं और इस फ़ोल्डर से CLI स्कैन चला सकते हैं।

कॉन्फ़िगरेशन में अनदेखा करने के नियमों की संरचना

CLI अनदेखा किए गए नियमों को कैसे संग्रहीत करता है, यह समझना ज़रूरी है, ताकि आप इन कॉन्फ़िगरेशन फ़ाइलों को पढ़ सकें या CLI के बिना उनमें बदलाव कर सकें।

अमूर्त YAML संरचना:

exclusions:
  {scanTypeName}:
    {ignoringType}:
    - someIgnoringValue1
    - someIgnoringValue2

scanTypeName के संभावित मान: iac, sca, sast, secret।

ignoringType के संभावित मान: paths, values, rules, packages, shas, cves।

[!WARNING] "मान के आधार पर अनदेखा करें" के मान सादे टेक्स्ट के रूप में संग्रहीत नहीं होते हैं! CLI इसके बजाय मानों के sha256 हैश संग्रहीत करता है। कॉन्फ़िगरेशन फ़ाइल को हाथ से संशोधित करते समय, आपको स्ट्रिंग के हैश डालने चाहिए।

वास्तविक config.yaml का उदाहरण:

exclusions:
  iac:
    rules:
    - bdaa88e2-5e7c-46ff-ac2a-29721418c59c
  sca:
    packages:
    - pyyaml@5.3.1
  secret:
    paths:
    - /Users/name/projects/build
    rules:
    - ce3a4de0-9dfc-448b-a004-c538cf8b4710
    shas:
    - a44081db3296c84b82d12a35c446a3cba19411dddfa0380134c75f7b3973bff0
    values:
    - a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3
    - 60303ae22b998861bce3b28f33eec1be758a213c86c93c076dbe9f558c11c752

रिपोर्ट कमांड

SBOM रिपोर्ट जनरेट करना

सॉफ़्टवेयर बिल ऑफ़ मटेरियल्स (SBOM), किसी एप्लिकेशन के विकास और डिलीवरी में शामिल सभी घटक और सॉफ़्टवेयर निर्भरताओं की सूची है। इस कमांड का उपयोग करके, आप अपने स्थानीय प्रोजेक्ट या रिपॉज़िटरी URI के लिए SBOM रिपोर्ट बना सकते हैं।

इस कमांड के लिए निम्नलिखित विकल्प उपलब्ध हैं:

विकल्पविवरणआवश्यकडिफ़ॉल्ट
-f, --format [spdx-2.2|spdx-2.3|cyclonedx-1.4]SBOM फ़ॉर्मैटहाँ
-o, --output-format [JSON]आउटपुट फ़ाइल फ़ॉर्मैट निर्दिष्ट करेंनहींjson
--output-file PATHआउटपुट फ़ाइलनहींस्वतः जनरेट किया गया फ़ाइल नाम, जो मौजूदा डायरेक्टरी में सहेजा जाता है
--include-vulnerabilitiesकमज़ोरियों को शामिल करेंनहींFalse
--include-dev-dependenciesडेवलपमेंट निर्भरताएँ शामिल करेंनहींFalse

इस कमांड के लिए निम्नलिखित कमांड उपलब्ध हैं:

कमांडविवरण
pathकमांड में दिए गए पाथ के लिए SBOM रिपोर्ट जनरेट करें
repository-urlकमांड में दिए गए रिपॉज़िटरी URI के लिए SBOM रिपोर्ट जनरेट करें

रिपॉज़िटरी

रिपॉज़िटरी URI के लिए SBOM रिपोर्ट बनाने हेतु:
cycode report sbom --format <sbom format> --include-vulnerabilities --include-dev-dependencies --output-file </path/to/file> repository_url <repository url>

उदाहरण के लिए:
cycode report sbom --format spdx-2.3 --include-vulnerabilities --include-dev-dependencies repository_url https://github.com/cycodehq/cycode-cli.git

स्थानीय प्रोजेक्ट

पाथ के लिए SBOM रिपोर्ट बनाने हेतु:
cycode report sbom --format <sbom format> --include-vulnerabilities --include-dev-dependencies --output-file </path/to/file> path </path/to/project>

उदाहरण के लिए:
cycode report sbom --format spdx-2.3 --include-vulnerabilities --include-dev-dependencies path /path/to/local/project

path सबकमांड निम्नलिखित अतिरिक्त विकल्पों का समर्थन करता है:

विकल्पविवरण
--no-restoreलॉकफ़ाइल रिस्टोर छोड़ें और केवल सीधे निर्भरताओं को स्कैन करें। विवरण के लिए Lock Restore Option देखें।
--gradle-all-sub-projectsसभी सब-प्रोजेक्ट के लिए Gradle रिस्टोर कमांड चलाएँ (मल्टी-प्रोजेक्ट Gradle बिल्ड के रूट से उपयोग करें)।
--maven-settings-fileकेवल Maven के लिए, निर्भरता ट्री बनाते समय कस्टम settings.xml फ़ाइल का उपयोग करने की अनुमति देता है।

इंपोर्ट कमांड

SBOM इंपोर्ट करना

सॉफ़्टवेयर बिल ऑफ़ मटेरियल्स (SBOM), किसी एप्लिकेशन के विकास और डिलीवरी में शामिल सभी घटक और सॉफ़्टवेयर निर्भरताओं की सूची है। इस कमांड का उपयोग करके, आप अपने फ़ाइल सिस्टम से SBOM फ़ाइल को Cycode में इंपोर्ट कर सकते हैं।

इस कमांड के लिए निम्नलिखित विकल्प उपलब्ध हैं:

विकल्पविवरणआवश्यकडिफ़ॉल्ट
-n, --name TEXTSBOM का डिस्प्ले नामहाँ
-v, --vendor TEXTSBOM प्रदान करने वाली इकाई का नामहाँ
-l, --label TEXTSBOM में लेबल जोड़ेंनहीं
-o, --owner TEXTइस SBOM के संपर्क व्यक्ति के रूप में कार्य करने वाले Cycode उपयोगकर्ता का ईमेल पतानहीं
-b, --business-impact [High | Medium | Low]व्यावसायिक प्रभावनहींMedium

उदाहरण के लिए:
cycode import sbom --name example-sbom --vendor cycode -label tag1 -label tag2 --owner example@cycode.com /path/to/local/project

स्कैन लॉग

सभी CLI स्कैन Cycode में लॉग किए जाते हैं। लॉग Settings > CLI Logs के अंतर्गत मिल सकते हैं।

सिंटैक्स सहायता

उपलब्ध विकल्पों और उनके सिंटैक्स को दिखाने वाला सहायता संदेश देखने के लिए, आप किसी भी समय किसी भी कमांड में --help आर्ग्युमेंट जोड़ सकते हैं।

सामान्य सहायता देखने के लिए, बस यह कमांड दर्ज करें:

cycode --help

स्कैन विकल्प देखने के लिए, दर्ज करें:

cycode scan --help

किसी विशिष्ट प्रकार के स्कैन के लिए उपलब्ध विकल्प देखने हेतु, दर्ज करें:

cycode scan {{option}} --help

उदाहरण के लिए, Path Scan के लिए उपलब्ध विकल्प देखने हेतु, यह दर्ज करें:

cycode scan path --help

इग्नोर स्कैन फ़ंक्शन के लिए उपलब्ध विकल्प देखने हेतु, यह कमांड इस्तेमाल करें:

cycode ignore --help

रिपोर्ट के लिए उपलब्ध विकल्प देखने हेतु, यह कमांड इस्तेमाल करें:

cycode report --help

किसी विशिष्ट प्रकार की रिपोर्ट के लिए उपलब्ध विकल्प देखने हेतु, दर्ज करें:

cycode scan {{option}} --help