Cycode

resmi

Cycode ile SAST, SCA, Sırlar ve IaC taraması yaparak geliştirme yaşam döngünüzde güvenliği artırın.

Cycode MCP ile neler yapabilirsiniz?

  • Gizli bilgileri tara — cycode_secret_scan kullanarak asistandan dosyalarda veya dizinlerde sabit kodlanmış gizli bilgileri taramasını isteyin.
  • SCA sorunlarını tara — cycode_sca_scan aracılığıyla güvenlik açıkları ve lisans sorunları için bir Yazılım Bileşimi Analizi taraması isteyin.
  • IaC yanlış yapılandırmalarını tara — Asistandan cycode_iac_scan ile kod olarak altyapıyı yanlış yapılandırmalara karşı denetlemesini isteyin.
  • SAST sorunlarını tara — Kod kalitesi sorunlarını ve güvenlik açıklarını bulmak için cycode_sast_scan kullanarak Statik Uygulama Güvenliği Testi taraması çalıştırın.
  • CLI durumunu kontrol et — cycode_status aracılığıyla Cycode CLI sürümünü, kimlik doğrulama durumunu ve yapılandırma ayrıntılarını isteyin.

Dokümantasyon

Cycode CLI Kullanım Kılavuzu

MCP Toplist

Cycode Komut Satırı Arayüzü (CLI), depolarınızı gizli bilgiler, kod olarak altyapı yanlış yapılandırmaları, yazılım bileşimi analizi güvenlik açıkları ve statik uygulama güvenliği testi sorunları açısından taramak için yerel olarak yükleyebileceğiniz bir uygulamadır.

Bu kılavuzda hem kurulum hem de kullanım adımları açıklanmaktadır.

İçindekiler

  1. Ön koşullar
  2. Kurulum
    1. Cycode CLI'yi yükleme
      1. Auth komutunu kullanma
      2. Configure komutunu kullanma
      3. Ortam değişkenlerine ekleme
        1. Unix/Linux'ta
        2. Windows'ta
    2. Pre-Commit Hook'u yükleme
  3. Cycode CLI komutları
  4. Sertifikalar ve proxy'ler
  5. MCP komutu
    1. MCP sunucusunu başlatma
    2. Kullanılabilir seçenekler
    3. MCP araçları
    4. Kullanım örnekleri
    5. Gelişmiş yapılandırma
  6. Platform komutu
    1. Komutları keşfetme
    2. Örnekler
    3. Notlar ve sınırlamalar
  7. AI Guardrails
    1. AI Guardrails tarafından toplanan veriler
  8. Scan komutu
    1. Tarama çalıştırma
      1. Seçenekler
        1. Önem derecesi eşiği
        2. İzleme
        3. Cycode raporu
        4. Paket güvenlik açıkları
        5. Lisans uyumluluğu
        6. Kilit geri yükleme
        7. Hata durumunda durdur
      2. Depo taraması
        1. Branch seçeneği
      3. Yol taraması
        1. Terraform planı taraması
      4. Commit geçmişi taraması
        1. Commit aralığı seçeneği (fark taraması)
      5. Pre-Commit taraması
        1. Yerel fark taraması (IDE entegrasyonları)
      6. Pre-Push taraması
    2. Tarama sonuçları
      1. Gizli bilgileri gösterme/gizleme
      2. Yumuşak başarısızlık
      3. Örnek tarama sonuçları
        1. Gizli bilgiler sonucu örneği
        2. IaC sonucu örneği
        3. SCA sonucu örneği
        4. SAST sonucu örneği
      4. Şirkete özel düzeltme yönergeleri
    3. Tarama sonuçlarını yoksayma
      1. Bir gizli değeri yoksayma
      2. Bir gizli SHA değerini yoksayma
      3. Bir yolu yoksayma
      4. Bir gizli bilgi, IaC veya SCA kuralını yoksayma
      5. Bir paketi yoksayma
      6. Bir yapılandırma dosyası aracılığıyla yoksayma
  9. Report komutu
    1. SBOM raporu oluşturma
  10. Import komutu
  11. Tarama günlükleri
  12. Sözdizimi yardımı

Ön koşullar

  • Cycode CLI uygulaması için Python 3.10 veya üzeri gerekir.
  • CLI ile Cycode'da kimlik doğrulaması yapmak için cycode auth komutunu kullanın
    • Alternatif olarak, bu değerleri edinme ayrıntılarını içeren Service Account Token ve Personal Access Token sayfalarında açıklanan adımları izleyerek bir Cycode Client ID ve Client Secret Key edinebilirsiniz.

Kurulum

Aşağıdaki kurulum adımları hem Windows hem de UNIX / Linux işletim sistemleri için geçerlidir.

[!NOTE] Aşağıdaki adımlarda Python ile ilgili komutlar için python3 ve pip3 kullanıldığı varsayılır; ancak Python ortamınızın yapılandırmasına bağlı olarak bazı sistemlerde bunun yerine python ve pip komutları kullanılabilir.

Cycode CLI'yi yükleme

Cycode CLI uygulamasını yerel makinenize yüklemek için aşağıdaki adımları uygulayın:

  1. Komut satırı veya terminal uygulamanızı açın.

  2. Aşağıdaki komutlardan birini çalıştırın:

    • PyPI üzerinden yüklemek için:

      pip3 install cycode
      
    • Homebrew üzerinden yüklemek için:

      brew install cycode
      
    • GitHub Releases sayfasına gidip işletim sisteminiz ve mimariniz için yürütülebilir dosyayı indirin, ardından aşağıdaki komutu çalıştırın:

    cd /path/to/downloaded/cycode-cli
    chmod +x cycode
    ./cycode
    
  3. Son olarak CLI'de kimlik doğrulaması yapın. Cycode istemci kimliğini ve kimlik bilgilerini (istemci gizli anahtarı veya OIDC ID token) ayarlamak için üç yöntem vardır:

Auth komutunu kullanma

[!NOTE] Bu, yerel makinenizi Cycode CLI ile kimlik doğrulaması yapacak şekilde ayarlamak için önerilen yöntemdir.

  1. Terminal/komut satırı penceresine aşağıdaki komutu yazın:

    cycode auth

  2. Cycode'da oturum açmanızı isteyen bir tarayıcı penceresi açılır (aşağıda gösterildiği gibi):

    Cycode login
  3. Bu sayfada oturum açma bilgilerinizi girip oturum açın.

  4. Sonunda, Cycode'u yetkilendirmek istediğiniz iş grubunu seçmeniz istenen aşağıdaki sayfaya yönlendirilirsiniz (varsa):

    authorize CLI

    [!NOTE] Bu, Cycode CLI ile kimlik doğrulaması için varsayılan yöntem olacaktır.

  5. Seçilen iş grubunda Cycode CLI'yi yetkilendirmek için Allow düğmesine tıklayın.

    allow CLI
  6. İşlem başarıyla tamamlandığında aşağıdaki ekranı görürsünüz:

    successfully auth
  7. Tarayıcı penceresini kapattığınızda terminal/komut satırı ekranında aşağıdakini görürsünüz:

    Successfully logged into cycode

Configure komutunu kullanma

[!NOTE] Cycode Client ID ve Client Secret bilgilerinizi Linux veya Windows ortam değişkenleri aracılığıyla zaten ayarladıysanız, bu kimlik bilgileri bu yönteme göre öncelikli olur.

  1. Terminal/komut satırı penceresine aşağıdaki komutu yazın:

    cycode configure
    
  2. Cycode API URL değerini girin (varsayılan değeri kullanmak için boş bırakabilirsiniz).

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

  3. Cycode APP URL değerini girin (varsayılan değeri kullanmak için boş bırakabilirsiniz).

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

  4. Cycode Client ID değerini girin.

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

  5. Cycode Client Secret değerini girin (OIDC ID token kullanmayı planlıyorsanız bu adımı atlayın).

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

  6. Cycode OIDC ID Token değerini girin (isteğe bağlı).

    Cycode ID Token []: eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...

  7. Değerler başarıyla girildiyse aşağıdaki mesajı görürsünüz:

    Successfully configured CLI credentials!

    veya/ve

    Successfully configured Cycode URLs!

Kullanıcı klasörünüzün altındaki .cycode klasörüne giderseniz, bu kimlik bilgilerinin oluşturulup o klasördeki credentials.yaml dosyasına yerleştirildiğini görürsünüz. URL'ler, o klasördeki config.yaml dosyasına yerleştirilir.

Ortam değişkenlerine ekleme

Unix/Linux'ta:

export CYCODE_CLIENT_ID={your Cycode ID}

ve

export CYCODE_CLIENT_SECRET={your Cycode Secret Key}

Kuruluşunuz OIDC kimlik doğrulaması kullanıyorsa bunun yerine (veya buna ek olarak) ID token sağlayabilirsiniz:

export CYCODE_ID_TOKEN={your Cycode OIDC ID token}

Windows'ta

  1. Denetim Masası'ndan Sistem menüsüne gidin:

    system menu
  2. Ardından Gelişmiş sistem ayarları'na tıklayın:

    advanced system setting
  3. Açılan Sistem Özellikleri penceresinde Ortam Değişkenleri düğmesine tıklayın:

    environments variables button
  4. ID ve Secret Key değerlerinizle eşleşen değerleri kullanarak CYCODE_CLIENT_ID ve CYCODE_CLIENT_SECRET değişkenlerini oluşturun. OIDC ile kimlik doğrulaması yapıyorsanız, OIDC ID token değerinizle birlikte CYCODE_ID_TOKEN değişkenini de ekleyin:

    environment variables window
  5. Kurulumu tamamlamak için cycode.exe öğesini yola ekleyin.

Pre-Commit Hook'u yükleme

Cycode'un pre-commit ve pre-push hook'ları yerel deponuzda ayarlanabilir. Böylece Cycode CLI uygulaması, kodunuzu commit etmeden veya kod tabanınıza push etmeden önce sorunları otomatik olarak belirler.

[!NOTE] IaC taramaları için pre-commit ve pre-push hook'ları kullanılamaz.

Pre-commit hook'unu yüklemek için aşağıdaki adımları uygulayın:

Pre-Commit Hook'u yükleme

  1. pre-commit çerçevesini yükleyin (Python 3.10 veya üzeri yüklü olmalıdır):

    pip3 install pre-commit
    
  2. Yapılandırmak istediğiniz yerel Git deposunun en üst dizinine gidin.

  3. Deponun en üst dizininde .pre-commit-config.yaml adlı yeni bir YAML dosyası oluşturun (başındaki . dahil) ve aşağıdakileri ekleyin:

    repos:
      - repo: https://github.com/cycodehq/cycode-cli
        rev: v3.25.0
        hooks:
          - id: cycode
            stages: [pre-commit]
    
  4. Oluşturduğunuz dosyayı ihtiyaçlarınıza göre düzenleyin. Gizli bilgiler taramasını etkinleştirmek için cycode hook ID'sini kullanın. SCA taramasını etkinleştirmek için cycode-sca hook ID'sini kullanın. SAST taramasını etkinleştirmek için cycode-sast hook ID'sini kullanın. Tüm tarama türlerini etkinleştirmek istiyorsanız şu yapılandırmayı kullanın:

    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'unu yükleyin:

    pre-commit install
    

    Hook başarıyla yüklendiğinde şu mesaj görüntülenir: Pre-commit installed at .git/hooks/pre-commit.

  6. Pre-commit hook'unu güncel tutun:

    pre-commit autoupdate
    

    Bu işlem, .pre-commit-config.yaml içindeki rev değerini otomatik olarak Cycode CLI'nin kullanılabilir en son sürümüne yükseltir.

[!NOTE] Tetikleme, git commit komutunda gerçekleşir. Hook yalnızca commit için hazırlanan dosyalarda tetiklenir.

Pre-Push Hook'u yükleme

Pre-commit hook'una ek olarak veya onun yerine pre-push hook'unu yüklemek için:

  1. Pre-push hook'larını .pre-commit-config.yaml dosyanıza ekleyin:

    repos:
      - repo: https://github.com/cycodehq/cycode-cli
        rev: v3.25.0
        hooks:
          - id: cycode-pre-push
            stages: [pre-push]
    
  2. Pre-push hook'unu yükleyin:

    pre-commit install --hook-type pre-push
    
  3. Hem pre-commit hem de pre-push hook'ları için şunu kullanın:

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

[!NOTE] Pre-push hook'ları git push komutunda tetiklenir ve yalnızca push edilmek üzere olan commit'leri tarar.

Cycode CLI komutları

Cycode CLI uygulamasında kullanılabilen seçenekler ve komutlar şunlardır:

SeçenekAçıklama
-v, --verboseAyrıntılı günlükleri gösterir.
--no-progress-meterİlerleme göstergesini göstermez.
--no-update-notifierCLI güncellemelerini denetlemez.
-o, --output [rich|text|json|table]Çıktı türünü belirtir. Varsayılan değer rich şeklindedir.
--client-id TEXTBu tarama yürütmesi için bir Cycode istemci kimliği belirtir.
--client-secret TEXTBu tarama yürütmesi için bir Cycode istemci gizli anahtarı belirtir.
--id-token TEXTBu tarama yürütmesi için bir Cycode OIDC ID token belirtir.
--install-completionGeçerli kabuk için tamamlama özelliğini yükler.
--show-completion [bash|zsh|fish|powershell|pwsh]Kopyalamak veya yüklemeyi özelleştirmek üzere belirtilen kabuğun tamamlama ayarlarını gösterir.
-h, --helpBelirtilen komutun seçeneklerini gösterir.
KomutAçıklama
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
authCLI'yi Cycode hesabınızla ilişkilendirmek için makinenizin kimliğini doğrulayın.
configureCLI istemcisi kimlik doğrulamasını yapılandırmak için kullanılan ilk komut.
ignoreBelirli bir değeri, yolu veya kural kimliğini yoksayın.
mcpCycode tarama özelliklerinin yapay zekâ entegrasyonunu etkinleştirmek için Model Context Protocol (MCP) sunucusunu başlatın.
scanİçeriği Secrets/IaC/SCA/SAST ihlallerine karşı tarayın. Hangi tarama türünün gerçekleştirileceğini belirtmeniz gerekir: commit-history/path/repository/etc.
reportRapor oluşturun. SBOM gibi hangi rapor türünün oluşturulacağını belirtmeniz gerekir.
statusCLI durumunu gösterin ve çıkın.

Sertifikalar ve Proxy'ler

Varsayılan olarak Cycode CLI, HTTPS bağlantılarını CLI ile birlikte gelen CA paketiyle doğrular.

Kuruluşunuz HTTPS trafiğini inceleyen bir proxy kullanıyorsa veya kendi CA'sına sahip şirket içi bir kurulumunuz varsa iki seçeneğiniz vardır.

Seçenek 1 — makinede zaten yüklü olan sertifikaları kullanın. CA'nız makinenin sertifika deposundaysa (yönetilen bir cihazda genellikle böyledir), bu seçeneği etkinleştirin:

export CYCODE_CLI_ENABLE_TRUSTSTORE=1

CLI daha sonra Windows sertifika deposuna, macOS Keychain'e veya Linux'taki sistem CA dizinine göre doğrulama yapar ve sertifika yollarının yapılandırılması gerekmez.

[!IMPORTANT] Bu seçenek bilerek varsayılan olarak kapalıdır. Makine deposuna güvenmek, o makinede bulunan tüm kök sertifikalara, yönetici veya kötü amaçlı yazılım tarafından yüklenenler de dahil olmak üzere, güvenmek anlamına gelir. Bu seçeneği yalnızca makinenizin sertifika deposuna güvendiğinizden emin olduğunuzda etkinleştirin.

Seçenek 2 — CLI'yi bir CA paketi dosyasına yönlendirin. Bu seçenek, ilk seçeneği etkinleştirmeden çalışır:

Ortam DeğişkeniAçıklama
REQUESTS_CA_BUNDLEGüvenilecek bir CA paketi dosyasının yolu (.pem veya .crt).
CURL_CA_BUNDLEREQUESTS_CA_BUNDLE için diğer ad; ikincisi ayarlanmamışsa kullanılır.

İki seçenek birlikte kullanılabilir: CYCODE_CLI_ENABLE_TRUSTSTORE=1 ile REQUESTS_CA_BUNDLE sertifikalarına makine deposuna ek olarak güvenilir; onun yerine değil.

[!TIP] Hangi güven kaynağının kullanıldığını görmek için herhangi bir komutu -v ile çalıştırın; örneğin cycode -v status.

Notlar:

  • Windows'ta CLI, REQUESTS_CA_BUNDLE veya CURL_CA_BUNDLE ayarlanmamışsa her zaman sistem sertifika deposuna geri döner. Bu davranış değişmemiştir.
  • Proxy'ler standart HTTP_PROXY, HTTPS_PROXY ve NO_PROXY ortam değişkenleriyle yapılandırılır.

MCP Komutu [EXPERIMENT]

Model Context Protocol (MCP) komutu, Cycode'un tarama özelliklerini yapay zekâ sistemlerine ve uygulamalarına sunan bir MCP sunucusu başlatmanızı sağlar. Böylece yapay zekâ modelleri, standartlaştırılmış bir protokol aracılığıyla Cycode CLI araçlarıyla etkileşim kurabilir.

[!TIP] En iyi deneyim için Cycode CLI'yi pip install cycode veya brew install cycode kullanarak sisteminize genel olarak yükleyin, ardından cycode auth ile bir kez kimlik doğrulaması yapın. Genel yükleme ve kimlik doğrulamasından sonra MCP yapılandırma dosyalarınızda CYCODE_CLIENT_ID ve CYCODE_CLIENT_SECRET ortam değişkenlerini yapılandırmanız gerekmez.

Add MCP Server to Cursor using UV

MCP Sunucusunu Başlatma

MCP sunucusunu başlatmak için aşağıdaki komutu kullanın:

cycode mcp

Varsayılan olarak sunucu, yerel entegrasyonlar ve alt süreçleri başlatabilen yapay zekâ uygulamaları için uygun olan stdio aktarımını kullanarak başlatılır.

Kullanılabilir Seçenekler

SeçenekAçıklama
-t, --transportMCP sunucusu için aktarım türü: stdio, sse veya streamable-http (varsayılan: stdio)
-H, --hostSunucunun bağlanacağı ana bilgisayar adresi (yalnızca stdio dışı aktarımda kullanılır) (varsayılan: 127.0.0.1)
-p, --portSunucunun bağlanacağı bağlantı noktası numarası (yalnızca stdio dışı aktarımda kullanılır) (varsayılan: 8000)
--helpYardım iletisini ve kullanılabilir seçenekleri göster

MCP Araçları

MCP sunucusu, yapay zekâ sistemlerinin kullanabileceği aşağıdaki araçları sağlar:

Araç AdıAçıklama
cycode_secret_scanSabit kodlanmış gizli bilgileri tarar
cycode_sca_scanYazılım Bileşimi Analizi (SCA) taraması yapar - güvenlik açıkları ve lisans sorunları
cycode_iac_scanKod Olarak Altyapı (IaC) yanlış yapılandırmalarını tarar
cycode_sast_scanStatik Uygulama Güvenliği Testi (SAST) taraması yapar - kod kalitesi ve güvenlik kusurları
cycode_statusCycode CLI sürümünü, kimlik doğrulama durumunu ve yapılandırma bilgilerini alır

Her tarama aracı, birbirini dışlayan iki giriş modunu kabul eder:

  • paths (tercih edilen) — diskte bulunan bir veya daha fazla dosya ya da dizin yolu. Dizinler özyinelemeli olarak taranır. Cycode altyapısı, CLI'deki cycode scan -t <type> path ./src gibi dosyaları bulup filtreler.
  • files (yedek seçenek) — dosya yollarını tam içeriklerini dizeler olarak eşleyen bir sözlük. Bunu yalnızca dosyalar diskte bulunmadığında kullanın (ör. henüz kaydedilmemiş bellek içi düzenlemeler).

[!TIP] Mümkün olduğunda paths kullanın. Büyük dosyaları (ör. package-lock.json) satır içi içerik olarak geçirmek belirteç sınırlarını aşabilir ve yapay zekâ istemcisini yavaşlatabilir. paths ile Cycode altyapısı dosyaları doğrudan diskten okur.

Tüm tarama araçları, tam "detections" dizisine ek olarak, insan tarafından okunabilir ihlal sayısını (ör. "Cycode found 3 violations: 1 CRITICAL, 2 HIGH.") içeren bir "summary" alanına sahip bir JSON nesnesi döndürür.

Kullanım Örnekleri

Temel Komut Örnekleri

MCP sunucusunu varsayılan ayarlarla başlatın (stdio aktarımı):

cycode mcp

MCP sunucusunu açıkça belirtilmiş stdio aktarımıyla başlatın:

cycode mcp -t stdio

MCP sunucusunu Server-Sent Events (SSE) aktarımıyla başlatın:

cycode mcp -t sse -p 8080

MCP sunucusunu özel ana bilgisayar ve bağlantı noktasıyla akış özellikli HTTP aktarımında başlatın:

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

MCP aktarım türleri hakkında daha fazla bilgi için MCP Protocol Specification – Transports sayfasına bakın.

Yapılandırma Örnekleri

Cursor/VS Code/Claude Desktop vb. ile MCP kullanımı (mcp.json)

[!NOTE] AB Cycode ortamlarında, ortam değişkenlerinde uygun CYCODE_API_URL ve CYCODE_APP_URL değerlerini ayarladığınızdan emin olun (ör. https://api.eu.cycode.com ve https://app.eu.cycode.com).

MCP sunucusunu VS Code/GitHub Copilot içinde yapılandırmak için bu kılavuzu izleyin. settings.json içinde bağımsız bir mcpServers nesnesi yerine iç içe bir servers alt nesnesi içeren bir mcp nesnesi bulunduğunu unutmayın.

stdio aktarımı için (doğrudan çalıştırma):

{
  "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 yüklemesiyle stdio aktarımı için:

{
  "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 yüklemesiyle stdio aktarımı için:

{
  "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 aktarımı için (Server-Sent Events):

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

Özel bağlantı noktasıyla SSE aktarımı için:

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

Akış özellikli HTTP aktarımı için:

{
  "mcpServers": {
    "cycode": {
      "url": "http://127.0.0.1:8000/mcp"
    }
  }
}
MCP Sunucusunu Arka Planda Çalıştırma

SSE aktarımı için (önce sunucuyu başlatın, ardından istemciyi yapılandırın):

# 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"
    }
  }
}

Akış özellikli HTTP aktarımı için:

# 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"
    }
  }
}

Gelişmiş Yapılandırma

Zaman Aşımları ve Özel Sertifikalar (Proxy Ortamları)

Uzun süren taramalar MCP istemciniz tarafından erken sonlandırılıyorsa araç çağrısı zaman aşımını artırın.

Ortam DeğişkeniAçıklama
MCP_TOOL_TIMEOUTClaude ve GitHub Copilot gibi MCP istemcilerinin bir araç çağrısının tamamlanmasını bekleyeceği süre (saniye). Uzun süren taramalar tamamlanmadan kesiliyorsa bu değeri artırın.

Kurumsal bir proxy arkasındaysanız sertifika değişkenlerini MCP sunucusunun env bloğunda ayarlayın. Seçenekler için Sertifikalar ve Proxy'ler bölümüne bakın: makinede zaten bulunan sertifikaları kullanmak için CYCODE_CLI_ENABLE_TRUSTSTORE=1 veya bir CA paketi dosyasını belirtmek için REQUESTS_CA_BUNDLE.

Özel CA paketi ve daha uzun zaman aşımı içeren örnek mcp.json yapılandırması:

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

[!NOTE] MCP sunucusunun çalışması için Cycode CLI kimlik doğrulamasının doğru şekilde yapılmış olması gerekir. MCP sunucusunu başlatmadan önce cycode auth kullanarak kimlik doğrulaması yaptığınızdan veya kimlik bilgilerinizi yapılandırdığınızdan emin olun.

Alt Ajanlar için Araçları Önceden Yetkilendirme (Claude Code)

Claude Code işleri arka plan alt ajanlarına devrettiğinde (ör. taramaları paralel çalıştırmak için), bu alt ajanlar etkileşimli izin istemlerini görüntüleyemez. Cycode araçları önceden onaylanmamışsa alt ajan bağlamlarında taramalar sessizce başarısız olur.

Cycode MCP araçlarını alt ajanlar dahil tüm bağlamlarda çalışacak şekilde önceden yetkilendirmek için bunları Claude Code ayarlarındaki (~/.claude/settings.json) allowedTools listesine ekleyin:

{
  "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"
  ]
}

Eklendikten sonra Claude Code, bu araçlar çağrıldığında onay istemez ve araçlar alt ajanlarda doğru şekilde çalışır.

MCP Sorunlarını Giderme

MCP sunucusuyla ilgili sorunlarla karşılaşırsanız neler olduğunu daha ayrıntılı görmek için hata ayıklama günlüklerini etkinleştirebilirsiniz. Hata ayıklama günlüklerini etkinleştirmenin iki yolu vardır:

  1. -v veya --verbose bayrağını kullanarak:
cycode -v mcp
  1. CYCODE_CLI_VERBOSE ortam değişkenini kullanarak:
CYCODE_CLI_VERBOSE=1 cycode mcp

Hata ayıklama günlükleri aşağıdakiler hakkında ayrıntılı bilgi gösterir:

  • Sunucunun başlatılması ve yapılandırması
  • Bağlantı girişimleri ve durumu
  • Araçların yürütülmesi ve sonuçları
  • Oluşan hatalar veya uyarılar

Bu bilgiler şu durumlarda yardımcı olabilir:

  • Bağlantı sorunlarını teşhis etme
  • Belirli araçların neden çalışmadığını anlama
  • Kimlik doğrulama sorunlarını belirleme
  • Aktarım türüne özgü sorunları ayıklama

MCP Yapılandırması

Platform Komutu [BETA]

[!WARNING] platform komutu beta aşamasındadır. Komutlar, bağımsız değişkenler ve çıktı biçimleri Cycode API spesifikasyonundan dinamik olarak oluşturulur ve sürümler arasında önceden haber verilmeksizin değişebilir. Henüz üretim otomasyonlarında bunlara güvenmeyin.

cycode platform komutu, Cycode platformunun okuma API'lerini CLI komutları olarak sunar. Uç noktaları kaynağa göre gruplandırır (ör. projects, violations, workflows) ve her uç noktanın parametrelerini türü belirlenmiş CLI bağımsız değişkenlerine ve --option bayraklarına dönüştürür.

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

OpenAPI spesifikasyonu ilk kullanımda Cycode API'sinden alınır ve 24 saat boyunca ~/.cycode/openapi-spec.json konumunda önbelleğe alınır. İlgisiz komutlar (cycode scan, cycode status vb.) indirme işlemini başlatmaz.

[!NOTE] cycode platform komutları keşfetmek ve çalıştırmak için kimlik doğrulaması yapmış olmanız gerekir (cycode auth veya CYCODE_CLIENT_ID / CYCODE_CLIENT_SECRET ortam değişkenleri). Diğer Cycode CLI komutları kimlik doğrulaması olmadan çalışır.

Komutları Keşfetme

Komutlar spesifikasyondan oluşturulduğundan, kullanılabilir komutlar için tek doğruluk kaynağı --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

Platform Örnekleri

# 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

Tüm çıktılar varsayılan olarak JSON biçimindedir — anlık filtreleme için çıktıyı jq üzerinden yönlendirin:

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

Platform Notları ve Sınırlamalar

  • Şimdilik salt okunur. Bu beta sürümünde yalnızca GET uç noktaları kullanıma sunulmuştur.
  • Spesifikasyon odaklı. API'ye yeni bir uç nokta eklendiğinde, önbellek bir sonraki yenilenişinde bu uç nokta otomatik olarak kullanıma sunulur.
  • Birlikte gelen spesifikasyon yoktur. Kurulumdan sonra (veya 24 saatlik önbellek süresi dolduktan sonra) yapılan ilk cycode platform çağrısı ağ üzerinden veri alır. Yavaş bağlantılarda bu ilk çağrı birkaç saniye sürebilir; önbellek süresi dolana kadar sonraki çağrılar neredeyse anında tamamlanır.
  • Önbellek TTL'sini CYCODE_SPEC_CACHE_TTL=<seconds> ile geçersiz kılın.

AI Guardrails [BETA]

AI Guardrails, desteklenen AI kodlama aracılarına (Claude Code, Cursor, Copilot, Codex) kancalar yükler; böylece istemler, aracının okuduğu dosyalar ve MCP aracı bağımsız değişkenleri modele ulaşmadan önce gizli bilgiler açısından taranır.

AI Guardrails Tarafından Toplanan Veriler

Tarama sunucu tarafında gerçekleştiğinden, taranan içerik makineden dışarı çıkar: istem metni, aracının okuduğu dosyaların içeriği ve MCP aracı bağımsız değişkenleri gizli bilgiler açısından denetlenmek üzere Cycode kiracınıza gönderilir.

Her olay ayrıca geliştirici ve makine hakkındaki bağlam bilgileriyle raporlanır; böylece bir bulgu, geldiği cihaz ve kullanıcıyla ilişkilendirilebilir. Bu bilgilerin bazıları kişisel veridir:

  • Cihaz tanımlayıcıları — makinenin ana bilgisayar adı ve donanım seri numarası.
  • Kullanıcı tanımlayıcıları — AI kodlama aracısında oturum açmış kullanıcının e-posta adresi ve yerel işletim sistemi kullanıcı adı.
  • Ortam ayrıntıları — işletim sistemi ve sürümü, AI aracısı, aracının sürümü ve kullanılan model, aracının MCP yapılandırma dosyalarının içeriği ve etkin eklentileri.

Donanım seri numarası, yalnızca komutu çalıştıran kullanıcının okuyabildiği yerel bir geçici dosyada önbelleğe alınır; böylece kanca her çalıştığında donanım yeniden sorgulanmaz.

Bu verilerin toplanması ortamınızda kabul edilebilir değilse guardrails kancalarını yüklemeyin (cycode ai-guardrails uninstall önceden yüklenmiş kancaları kaldırır).

Tarama Komutu

Tarama Çalıştırma

Cycode CLI uygulaması, durumunuza en uygun seçeneği belirleyebilmeniz için çeşitli tarama türleri sunar. Kullanılabilir seçenekler ve komutlar şunlardır:

SeçenekAçıklama
-t, --scan-type [secret|iac|sca|sast]Çalıştırmak istediğiniz taramayı belirtin (secret/iac/sca/sast); varsayılan secret değeridir.
--show-secret BOOLEANGizli bilgileri düz metin olarak gösterir. Daha fazla bilgi için Gizli Bilgileri Göster/Gizle bölümüne bakın.
--soft-fail BOOLEANTaramayı başarısız olmadan çalıştırır ve her zaman hata olmayan bir durum kodu döndürür. Daha fazla bilgi için Yumuşak Hata bölümüne bakın.
--severity-threshold [INFO|LOW|MEDIUM|HIGH|CRITICAL]Yalnızca belirtilen düzeydeki veya daha yüksek düzeydeki ihlalleri gösterir.
--sca-scanÇalıştırmak istediğiniz SCA taramasını belirtin (package-vulnerabilities/license-compliance/unmaintained-packages/malicious-packages). Varsayılan olarak tümü seçilir.
--monitorBelirtildiğinde tarama sonuçları Cycode'a kaydedilir.
--cycode-reportKonsol çıktısında Cycode platformundaki tarama raporuna bir bağlantı gösterir.
--no-restoreBelirtildiğinde Cycode restore komutunu çalıştırmaz. Bu seçenek yalnızca doğrudan bağımlılıkları tarar!
--stop-on-errorBaşarısız dosyayı atlayıp devam etmek yerine, dosya toplama veya bağımlılık geri yükleme işlemlerinden herhangi biri başarısız olursa taramayı durdurur.
--gradle-all-sub-projectsTüm alt projeler için gradle restore komutunu çalıştırır. Bu komut şu dizinden çalıştırılmalıdır
--maven-settings-fileYalnızca Maven için, bağımlılıkları tararken özel bir settings.xml dosyası kullanılmasına olanak tanır
--helpVerilen komutun seçeneklerini gösterir.
KomutAçıklama
commit-historyİşleme geçmişini tarar veya belirli işlemeler arasında fark taraması yapar
pathKomutta belirtilen yoldaki dosyaları tarar
pre-commitHenüz işlenmemiş içeriği tarar; ayrıca bayraklar aracılığıyla yerel fark taramasını da destekler (IDE dostu)
repositoryGit deposunu geçmişiyle birlikte tarar

Seçenekler

Önem Derecesi Seçeneği

Tarama sonuçlarını belirli bir önem derecesi eşiğiyle sınırlamak için tarama komutuna --severity-threshold bağımsız değişkeni eklenebilir.

Örneğin, aşağıdaki komut depoyu Orta veya daha yüksek önem derecesine sahip ilke ihlalleri açısından tarar:

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

İzleme Seçeneği

[!NOTE] Bu seçenek yalnızca SCA taramalarında kullanılabilir.

SCA türündeki bir taramada bulunan SCA ilkeleri ile ilişkili tarama sonuçlarını Cycode'a göndermek için tarama komutuna --monitor bağımsız değişkenini ekleyin.

Örneğin, aşağıdaki komut depoyu SCA ilke ihlalleri açısından tarar ve sonuçları Cycode platformuna gönderir:

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

Cycode Raporu Seçeneği

Cycode CLI kullanılarak gerçekleştirilen her tarama için otomatik olarak bir rapor oluşturulur ve sonuçları Cycode'a gönderilir. Bu sonuçlar, Cycode platformundaki ilgili ilkelerle (ör. Depo taramaları için SCA ilkeleri) ilişkilendirilir.

Tarama tamamlandıktan sonra bu Cycode raporunun doğrudan URL'sinin CLI çıktısında gösterilmesi için tarama komutunuza --cycode-report bağımsız değişkenini ekleyin.

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

CLI'daki tüm tarama sonuçları Cycode'un CLI Günlükleri bölümünde görünür. Komutunuza --cycode-report bayrağını eklediyseniz, tarama sonuçlarının ardından terminalinizde ilgili rapora doğrudan bir bağlantı gösterilir.

[!WARNING] Bu sayfayı görüntülemek için Cycode'da owner veya admin rolüne sahip olmanız gerekir.

cli-report

Rapor sayfası aşağıdakine benzer görünür:

Paket Güvenlik Açıkları Seçeneği

[!NOTE] Bu seçenek yalnızca SCA taramalarında kullanılabilir.

Yerel deponuzdaki belirli bir paket güvenlik açığını taramak için -t sca veya --scan-type sca seçeneğinin ardından --sca-scan package-vulnerabilities bağımsız değişkenini ekleyin.

Önceki örnekte yalnızca paket güvenlik açıkları için SCA taraması çalıştırmak isteseydiniz, aşağıdaki komutu çalıştırabilirdiniz:

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

Lisans Uyumluluğu Seçeneği

[!NOTE] Bu seçenek yalnızca SCA taramalarında kullanılabilir.

Yerel deponuzun belirli bir dalını taramak için --sca-scan license-compliance bağımsız değişkenini ve ardından taramak istediğiniz dalın adını ekleyin.

Önceki örnekte yalnızca dev adlı dalı taramak isteseydiniz, aşağıdaki komutu çalıştırabilirdiniz:

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

Bakımı Yapılmayan Paketler Seçeneği

[!NOTE] Bu seçenek yalnızca SCA taramalarında kullanılabilir.

Yalnızca bakımı yapılmayan paketleri (düşük Maintained denetim puanına sahip OpenSSF Scorecard paketleri; yani yakın zamanda çok az işlem veya sorun etkinliği olan ya da hiç olmayan paketleri) taramak için -t sca veya --scan-type sca seçeneğinin ardından --sca-scan unmaintained-packages bağımsız değişkenini ekleyin.

[!NOTE] Bakımı yapılmayan paketlerin raporlanıp raporlanmayacağı kuruluşunuzun ilkesi tarafından belirlenir. Bu seçenek, taramanın raporladığı sonuçları daraltır; kiracınız için kapalı olan bir ilkeyi etkinleştiremez.

Önceki örnekte yalnızca bakımı yapılmayan paketler için SCA taraması çalıştırmak isteseydiniz, aşağıdaki komutu çalıştırabilirdiniz:

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

Kötü Amaçlı Paketler Seçeneği

[!NOTE] Bu seçenek yalnızca SCA taramalarında kullanılabilir.

Yalnızca kötü amaçlı paketleri (güvenlik duyurusunda yalnızca güvenlik açığı bulunan değil, kötü amaçlı yazılım olarak tanımlanan bağımlılıkları) taramak için -t sca veya --scan-type sca seçeneğinin ardından --sca-scan malicious-packages bağımsız değişkenini ekleyin.

Kötü amaçlı paket ihlalleri her zaman Critical olarak raporlanır; CVSS puanı veya düzeltme sürümü içermez. Tek çözüm, bağımlılığı kaldırmaktır.

[!NOTE] Kötü amaçlı paketlerin raporlanıp raporlanmayacağı kuruluşunuzun ilkesi tarafından belirlenir. Bu seçenek, taramanın raporladığı sonuçları daraltır; kiracınız için kapalı olan bir ilkeyi etkinleştiremez.

Önceki örnekte yalnızca kötü amaçlı paketler için SCA taraması çalıştırmak isteseydiniz, aşağıdaki komutu çalıştırabilirdiniz:

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

Kilit Dosyasını Geri Yükleme Seçeneği

[!NOTE] Bu seçenek yalnızca SCA taramalarında kullanılabilir.

SCA taraması çalıştırılırken Cycode CLI, bulduğu desteklenen her bildirim dosyası için otomatik olarak bir bağımlılık kilit dosyası geri yüklemeyi (oluşturmayı) dener. Böylece yalnızca bildirimde doğrudan listelenenler değil, geçişli bağımlılıklar da taranabilir. Bu adımı atlayıp yalnızca doğrudan bağımlılıkları taramak için --no-restore bayrağını kullanın.

Aşağıdaki ekosistemlerde kilit dosyası otomatik olarak geri yüklenir:

EkosistemBildirim dosyasıOluşturulan kilit dosyasıÇağrılan araç (kilit dosyası yoksa)
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(yalnızca mevcut kilit dosyası okunur)
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

Bildirim dosyasının yanında zaten bir kilit dosyası varsa Cycode, herhangi bir yükleme komutu çalıştırmadan bu dosyayı doğrudan okur. SBT ön koşulu: sbt-dependency-lock eklentisi yüklenmiş olmalıdır. project/plugins.sbt dosyasına aşağıdaki satırı ekleyin:

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

Hata Durumunda Durdur Seçeneği

Varsayılan olarak Cycode, bir dosya okunamadığında (ör. izin hatası nedeniyle) veya bir SCA taraması sırasında bağımlılık kilit dosyası oluşturulamadığında bile taramaya devam eder. Başarısız öğe bir uyarıyla atlanır ve tarama kalan dosyalarla sürdürülür.

Bu davranışı değiştirmek için --stop-on-error kullanın: tarama bu tür ilk hatada hemen durur ve hatayı bildirir.

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

Bu seçenek, sessiz bir hatanın eksik tarama sonucuna yol açacağı CI işlem hatlarında kullanışlıdır. --stop-on-error tetiklendiğinde, altta yatan sorunu düzeltebilir veya özellikle SCA geri yükleme hatalarında, kilit dosyası oluşturmayı atlamak ve yalnızca doğrudan bağımlılıkları taramak için --no-restore ekleyebilirsiniz.

--stop-on-error kullanıldığında CLI, tarama hataları ile ilke ihlallerini çıkış kodlarıyla birbirinden ayırır:

Çıkış koduAnlamı
0Tarama ihlal bulunmadan tamamlandı
1Tarama tamamlandı ve ihlaller bulundu
2Tarama bir hata nedeniyle durduruldu (yalnızca --stop-on-error ayarlandığında)

Depo Taraması

Depo taraması, açığa çıkmış gizli bilgileri veya güvenli olmayan yanlış yapılandırmaları bulmak için yerel bir deponun tamamını inceler. Bu daha kapsamlı tarama türü her şeyi inceler: deponuzun mevcut durumunu ve commit geçmişini. Yalnızca depoda şu anda açığa çıkmış gizli bilgileri değil, daha önce silinmiş gizli bilgileri de arar.

Tam depo taraması gerçekleştirmek için aşağıdaki komutu çalıştırın:

cycode scan repository {{path}}

Örneğin, ~/home/git/codebase konumunda depolanmış bir depoyu taramak istiyorsanız aşağıdaki komutu çalıştırabilirsiniz:

cycode scan repository ~/home/git/codebase

Bu komutla kullanılabilecek seçenek:

SeçenekAçıklama
-b, --branch TEXTTaranacak dal; ayarlanmazsa varsayılan dal taranır

Dal Seçeneği

Yerel deponuzun belirli bir dalını taramak için -b (alternatif olarak --branch) bağımsız değişkenini ve ardından taramak istediğiniz dalın adını ekleyin.

Önceki örnekte, yalnızca dev adlı bir dalı taramak istiyorsanız aşağıdaki komutu çalıştırabilirsiniz:

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

Yol Taraması

Yol taraması, yalnızca bir GIT deposuna odaklanmak yerine belirli bir yerel dizini ve içindeki tüm içeriği inceler.

Dizin taraması gerçekleştirmek için aşağıdaki komutu çalıştırın:

cycode scan path {{path}}

Örneğin, ~/home/git/codebase konumundaki dizini taramak istediğinizi varsayalım. Bu durumda aşağıdaki komutu çalıştırabilirsiniz:

cycode scan path ~/home/git/codebase

Terraform Planı Taraması

Cycode CLI, Terraform planı taramasını destekler (Terraform 0.12 ve sonraki sürümler desteklenir).

Terraform planı dosyası JSON biçiminde olmalıdır (.json uzantısına sahip olmalıdır).

Yalnızca bir yapılandırma dosyanız varsa aşağıdakileri yaparak bir plan oluşturabilirsiniz:

  1. Terraform yapılandırma dosyasını içeren bir çalışma dizinini başlatın:

    terraform init

  2. Terraform yürütme planı oluşturun ve ikili çıktıyı kaydedin:

    terraform plan -out={tfplan_output}

  3. İkili çıktı dosyasını okunabilir JSON biçimine dönüştürün:

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

  4. {tfplan}.json dosyanızı Cycode CLI ile tarayın:

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

Commit Geçmişi Taraması

[!NOTE] IaC taramalarında commit geçmişi taraması kullanılamaz.

Commit geçmişi taraması komutu iki temel özellik sunar:

  1. Tüm Geçmişi Tarama: Depo geçmişindeki tüm commit'leri analiz eder
  2. Diff Taraması: Yalnızca belirli commit'ler arasındaki değişiklikleri tarar

Gizli bilgi taraması, depo geçmişindeki tüm commit'leri analiz edebilir; çünkü eklenip daha sonra kaldırılan gizli bilgiler yine de sızdırılmış veya açığa çıkmış olabilir. SCA ve SAST taramalarında commit geçmişi komutu, commit'ler arasındaki farkları/değişiklikleri taramaya odaklanır. Bu da onu çekme isteği incelemeleri ve artımlı tarama için ideal kılar.

Commit geçmişi taraması, Git deponuzun commit geçmişini inceler ve hem kapsamlı geçmiş analizinde hem de belirli değişikliklerin hedefli diff taramasında kullanılabilir.

Commit geçmişi taraması gerçekleştirmek için aşağıdaki komutu çalıştırın:

cycode scan commit-history {{path}}

Örneğin, ~/home/git/codebase konumunda depolanmış bir deponun commit geçmişini taramak istediğinizi varsayalım. Bu durumda aşağıdaki komutu çalıştırabilirsiniz:

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

Bu komutla kullanılabilecek seçenekler:

SeçenekAçıklama
-r, --commit-range TEXTBu git deposunda bir commit aralığını tarar; varsayılan olarak cycode tüm commit geçmişini tarar (örnek: HEAD~1)

Commit Aralığı Seçeneği (Diff Taraması)

Commit aralığı seçeneği, deponun tüm geçmişi yerine yalnızca belirli commit'ler arasındaki değişiklikleri tarayan diff taramasını etkinleştirir. Bu seçenek özellikle şunlar için kullanışlıdır:

  • Çekme isteği doğrulaması: Yalnızca bir PR'da yapılan değişiklikleri tarar
  • Artımlı CI/CD taraması: Tüm kod tabanı yerine son değişikliklere odaklanır
  • Özellik dalı incelemesi: Değişiklikleri main/master dalıyla karşılaştırır
  • Performans iyileştirmesi: Kapsamı ilgili değişikliklerle sınırlayarak taramaları hızlandırır

Commit Aralığı Sözdizimi

--commit-range (-r) seçeneği, standart Git revizyon sözdizimini destekler:

SözdizimiAçıklamaÖrnek
commit1..commit2commit1'den commit2'ye kadar olan değişikliklerabc123..def456
commit1...commit2commit1'de olmayan commit2 değişikliklerimain...feature-branch
commitcommit'ten HEAD'e kadar olan değişikliklerHEAD~1
branch1..branch2branch1'den branch2'ye kadar olan değişikliklermain..feature-branch

Diff Taraması Örnekleri

Son commit'teki değişiklikleri tarayın:

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

İki belirli commit arasındaki değişiklikleri tarayın:

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

Özellik dalınızdaki değişiklikleri main ile karşılaştırarak tarayın:

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

Main ile bir özellik dalı arasındaki değişiklikleri tarayın:

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

Son 3 commit'teki tüm değişiklikleri tarayın:

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

[!TIP] CI/CD işlem hatlarında, yalnızca PR/MR değişikliklerini taramak için ${{ github.event.pull_request.base.sha }}..${{ github.sha }} (GitHub Actions) veya $CI_MERGE_REQUEST_TARGET_BRANCH_SHA..$CI_COMMIT_SHA (GitLab CI) gibi ortam değişkenlerini kullanabilirsiniz.

Pre-Commit Taraması

Pre-commit taraması, deponuzda değişiklikleri commit etmeden önce sorunları otomatik olarak belirler. Bu taramayı elle çalıştırmanız gerekmez; bu kılavuzun Kurulum bölümünde açıklandığı şekilde pre-commit hook'unu yapılandırın.

Pre-commit hook'unu yükledikten sonra, belirli bir commit sırasında taramayı atlamak isteyebilirsiniz. Tek bir commit için taramayı atlamak üzere git komutunuza aşağıdakini ekleyin:

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

Bu komutla kullanılabilecek seçenekler:

SeçenekAçıklama
-b, --base-ref TEXTDiff alınacak Git referansı (commit, dal veya etiket); varsayılan değer HEAD olup pre-commit hook davranışıyla eşleşir
--include-unstagedYalnızca hazırlama alanına eklenenleri değil, izlenen dosyalardaki hazırlanmamış değişiklikleri de tarar; varsayılan olarak kapalıdır
--path PATHDiff taramasının kapsamını belirlemek için isteğe bağlı yol(lar); yinelenebilir; varsayılan olarak tüm çalışma dizinini kapsar

Yerel Diff Taraması (IDE Entegrasyonları)

--base-ref ve --include-unstaged, pre-commit komutunu genel amaçlı bir yerel diff taramasına dönüştürür: herhangi bir commit'i (varsayılan HEAD) henüz hazırlama alanına eklenmemiş düzenlemeler de dahil olmak üzere mevcut çalışma dizininizle karşılaştırır. Bu özellik, git hook akışı yerine çalışırken sürekli ve gerçek zamanlı geri bildirime ihtiyaç duyan IDE eklentileri ve diğer araçlar için tasarlanmıştır. --include-unstaged ile birlikte kullanıldığında --path, IDE'nin taramayı yalnızca düzenleyicide o anda açık olan dosyayla sınırlamasını sağlar.

[!NOTE] Yerel diff taraması (bu bayraklar aracılığıyla) IaC taramalarında kullanılamaz.

Şu anda değiştirilmiş her şeyi (hazırlanmış + hazırlanmamış) son commit ile karşılaştırarak tarayın:

cycode scan pre-commit --include-unstaged

Değişiklikleri belirli bir commit veya dalla karşılaştırarak tarayın:

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

Yalnızca belirli bir dosyayı (ör. IDE'nizde o anda açık olan dosyayı) tarayın:

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

Pre-Push Taraması

Pre-push taraması, değişiklikleri uzak depoya göndermeden önce sorunları otomatik olarak belirler. Bu hook istemci tarafında çalışır ve yalnızca gönderilmek üzere olan commit'leri tarar; böylece sorunları uzak depoya ulaşmadan önce verimli bir şekilde yakalar.

[!NOTE] IaC taramalarında pre-push hook'u kullanılamaz.

Pre-push hook'u pre-commit çerçevesiyle bütünleşir ve herhangi bir git push işleminden önce çalışacak şekilde yapılandırılabilir.

Pre-Push Hook'unu Yükleme

Pre-commit çerçevesini kullanarak pre-push hook'unu ayarlamak için:

  1. Pre-commit çerçevesini yükleyin (henüz yüklenmemişse):

    pip3 install pre-commit
    
  2. Pre-push hook'larını eklemek için .pre-commit-config.yaml dosyanızı oluşturun veya güncelleyin:

    repos:
      - repo: https://github.com/cycodehq/cycode-cli
        rev: v3.25.0
        hooks:
          - id: cycode-pre-push
            stages: [pre-push]
    
  3. Birden fazla tarama türü için bu yapılandırmayı kullanın:

    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-push hook'unu yükleyin:

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

    Yükleme başarılı olduğunda şu ileti görüntülenir: Pre-push installed at .git/hooks/pre-push.

  5. Pre-push hook'unu güncel tutun:

    pre-commit autoupdate
    

Pre-Push Taraması Nasıl Çalışır?

Hook, gönderilen her commit'i tek tek tarar; böylece bir commit'te eklenip sonraki bir commit'te kaldırılan bir gizli bilgi yine de yakalanır. Pre-commit çerçevesi üzerinden yüklendiğinde gönderilen aralık çerçeveden alınır: mevcut dallar için uzak daldan sonraki yeni commit'ler, yeni dallar içinse henüz uzak depoda bulunmayan commit'ler (boş bir uzak depoya gönderim yapıldığında tüm commit'ler). Elle yazılmış bir .git/hooks/pre-push dosyasından çalıştırıldığında aralık git'in hook girdisinden okunur ve yeni dallar varsayılan dalla birleştirme tabanından itibaren taranır (aşağıya bakın).

Etiketler, dal silme işlemleri ve güncel dallara yapılan gönderimler gibi taranacak bir şey bulunmayan gönderimler tarama yapılmadan geçer. Hook gönderilenleri belirleyemezse sessizce geçmek yerine başarısız olur ve gönderimi engeller.

Cycode pre-push hook'ları always_run: true ve pass_filenames: false değerlerini ayarlar; çünkü tarama bir dosya listesi yerine gönderilen commit'leri kapsar. always_run olmadan, gönderilen commit'lerde değişen dosya kalmadığında (örneğin bir commit'te eklenip sonraki commit'te silinen bir gizli bilgi) pre-commit çerçevesi hook'u atlar. pass_filenames: false olmadan çerçeve, taramanın kullanmadığı değişen dosya adlarını iletir ve büyük gönderimlerde bunları gruplara ayırarak her grup için tam taramayı bir kez çalıştırır. Hook'u kendiniz tanımlarsanız (örneğin bir repo: local hook'u olarak) her iki seçeneği de ayarlayın.

Akıllı Varsayılan Dal Algılama

Elle yazılmış bir hook'tan çalıştırıldığında pre-push taraması, birleştirme tabanı hesaplaması için varsayılan dalı şu öncelik sırasına göre algılar:

  1. Ortam Değişkeni: CYCODE_DEFAULT_BRANCH - elle geçersiz kılmaya olanak tanır
  2. Git Uzak HEAD'i: Gerçek uzak varsayılan dalı algılamak için git symbolic-ref refs/remotes/origin/HEAD kullanılır
  3. Git Uzak Bilgisi: symbolic-ref başarısız olursa git remote show origin kullanılır
  4. Sabit Kodlanmış Geri Dönüş Değerleri: Yaygın varsayılan dal adları kullanılır (origin/main, origin/master, main, master)

Özel Varsayılan Dal Ayarlama:

export CYCODE_DEFAULT_BRANCH=origin/develop

Bu akıllı algılama, deponuz main, master, develop veya başka bir varsayılan dal adı kullanıyor olsa da pre-push kancasının doğru çalışmasını sağlar.

Pre-Push Taramalarını Atlamak

Belirli bir push işlemi için pre-push taramasını atlamak üzere şunu kullanın:

SKIP=cycode-pre-push git push

Ya da tüm pre-push kancalarını atlamak için:

git push --no-verify

[!TIP] Pre-push kancası git push komutunda tetiklenir ve yalnızca gönderilmek üzere olan commit'leri tarar. Bu nedenle tüm depoyu taramaktan daha verimlidir.

Taramaların Dışında Tutulacak Yollar

Cycode CLI'ye taramalardan hangi dosya ve dizinleri hariç tutacağını bildirmek için bir .cycodeignore dosyası kullanabilirsiniz. Bu dosya, .gitignore dosyasıyla aynı şekilde çalışır. Böylece taramaları ilgili kodunuza odaklayabilir ve belirli yolların yerel ortamda ihlalleri tetiklemesini önleyebilirsiniz.

Nasıl Çalışır?

  1. Çalışma klasörünüzde .cycodeignore adlı bir dosya oluşturun.
  2. Hariç tutmak istediğiniz dosya ve dizinleri, .gitignore ile aynı kalıpları kullanarak listeleyin.
  3. Bu dosyayı cycode scan komutunu çalıştırmayı planladığınız dizine yerleştirin.

[!WARNING]

  • Geçersiz dosyalar: .cycodeignore dosyasında bir sözdizimi hatası varsa CLI taraması başarısız olur ve hata döndürür.
  • Yolları yok sayma ve ihlalleri yok sayma: Bu dosya, yolları hariç tutmak içindir. CLI'nin belirli ihlalleri yok sayma özelliğinden (örneğin, --ignore-violation bayrağını kullanarak) farklıdır.

Desteklenen Tarayıcılar

  • SAST
  • IaC (yakında)
  • SCA (yakında)

Tarama Sonuçları

Her tarama, herhangi bir sorun bulunup bulunmadığını belirten bir mesajla tamamlanır.

Sorun bulunmazsa tarama aşağıdaki başarı mesajıyla sona erer:

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

Bir sorun bulunursa bunun yerine tarama tamamlandığında bir ihlal kartı görüntülenir. Bu durumda, sonuç mesajında vurgulanan belirli satır için ilgili dosyayı inceleyin. Sorunu çözmek için gereken değişiklikleri yapın ve ardından taramayı yeniden çalıştırın.

Gizli Bilgileri Gösterme/Gizleme

Aşağıdaki örneklerde, cli alt klasöründe bulunan secret_test dosyasında bir gizli bilgi bulunmuştur. Mesajın ikinci kısmında, gizli bilginin göründüğü belirli satır gösterilir. Bu örnekte gizli bilgi, googleApiKey öğesine atanmış bir değerdir.

Örnekte gerçek gizli bilgi değerinin çoğunun yıldız işaretleriyle değiştirilerek gizlendiğine dikkat edin. Taramalar gizli bilgileri varsayılan olarak gizler; ancak tam gizli bilgiyi görüntülemek için bu özelliği isteğe bağlı olarak devre dışı bırakabilirsiniz (tarama sonucunu görüntülediğiniz makinenin meraklı gözlerden yeterince korunduğunu varsayarak).

Gizli bilgileri gizleme özelliğini devre dışı bırakmak için her tür taramaya --show-secret bağımsız değişkenini ekleyin.

Aşağıdaki örnekte, bulunan gizli bilgileri tam olarak görüntüleme seçeneği etkinleştirilerek cli alt dizininde bir Path Scan çalıştırılır:

cycode scan --show-secret path ./cli

Bu durumda sonuç gizlenmez.

Yumuşak Başarısızlık

Normal çalışma sırasında CLI, tarama sonuçlarında sorun bulunduğunda 1 çıkış kodunu döndürür. CI/CD kurulumunuza bağlı olarak bu genellikle genel bir başarısızlıkla sonuçlanır. Bunun olmasını istemiyorsanız yumuşak başarısızlık özelliğini kullanabilirsiniz.

Her tür taramaya --soft-fail seçeneğini eklediğinizde, herhangi bir sonuç bulunup bulunmadığına bakılmaksızın çıkış kodu 0 olarak ayarlanır.

Örnek Tarama Sonuçları

Gizli Bilgi Sonucu Örneği

╭─────────────────────────────────────────────────────────────── 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 Sonucu Örneği

╭──────────── 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 Sonucu Örneği

╭─────────────────────────────────────────────────────── [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 Sonucu Örneği

╭───────────────────────────────────────────── [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.                                                         │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯

Şirkete Özel Düzeltme Yönergeleri

Şirketiniz Cycode portalı üzerinden ilgili politikada özel düzeltme yönergeleri belirlediyse, eklediğiniz düzeltme yönergelerini içeren “Company Guidelines” alanını görürsünüz. Şirket yönergesi eklemediyseniz bu alanın CLI aracında görünmeyeceğini unutmayın.

Tarama Sonuçlarını Yok Sayma

Belirli gizli bilgi değerlerini, belirli SHA512 değerlerini, belirli yolları ve belirli Cycode gizli bilgi ve IaC kural kimliklerini yok saymak için yok sayma kuralları eklenebilir. Böylece tarama bu değerler için uyarı vermez. Yok sayma kuralları yerel olarak ./.cycode/config.yaml dosyasına yazılır ve kaydedilir.

[!WARNING] Yok sayılacak değerleri eklerken taramaların gerçek pozitifleri algılamasını sağlamak için değerleri, yolları ve politikaları dikkatlice değerlendirin.

cycode ignore komutu için kullanılabilen seçenekler şunlardır:

SeçenekAçıklama
--by-value TEXTGizli bilgileri tararken belirli bir değeri yok sayar. Daha fazla bilgi için Gizli Bilgi Değerini Yok Sayma bölümüne bakın.
--by-sha TEXTGizli bilgileri tararken bir dizenin belirli SHA512 gösterimini yok sayar. Daha fazla bilgi için Gizli Bilginin SHA Değerini Yok Sayma bölümüne bakın.
--by-path TEXTBelirli bir yolu taramaktan kaçınır. Tarama türü belirtilmelidir. Daha fazla bilgi için Bir Yolu Yok Sayma bölümüne bakın.
--by-rule TEXTBelirli bir gizli bilgi kuralı kimliğini/IaC kuralı kimliğini/SCA kuralı kimliğini taramayı yok sayar. Daha fazla bilgi için Bir Gizli Bilgi veya IaC Kuralını Yok Sayma bölümüne bakın.
--by-package TEXTSCA taraması sırasında belirli bir paket sürümünü taramayı yok sayar. Beklenen kalıp - name@version. Daha fazla bilgi için Bir Paketi Yok Sayma bölümüne bakın.
--by-cve TEXTSCA taraması sırasında belirli bir CVE'yi taramayı yok sayar. Beklenen kalıp: CVE-YYYY-NNN.
-t, --scan-type [secret|iac|sca|sast]Çalıştırmak istediğiniz taramayı belirtir (secret/iac/sca/sast). Varsayılan değer secret şeklindedir.
-g, --globalBir yok sayma kuralı ekler ve bunu genel .cycode yapılandırma dosyasında günceller.

Gizli Bilgi Değerini Yok Sayma

Belirli bir gizli bilgi değerini yok saymak için --by-value bayrağını kullanmanız gerekir. Bu, verilen gizli bilgi değerinin gelecekteki tüm taramalarda yok sayılmasını sağlar. Yok sayılacak bir gizli bilgi değeri eklemek için aşağıdaki komutu kullanın:

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

Bu bölümün başındaki örnekte, belirli bir gizli bilgi değerini yok sayma komutu şöyledir:

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

Yukarıdaki örnekte h3110w0r1d!@#$350 değerini maskelenmemiş gizli bilgi değerinizle değiştirin. Tarama sonuçlarında gizli bilgi değerlerini nasıl görebileceğiniz hakkında ayrıntılar için Cycode tarama seçeneklerine bakın.

Gizli Bilginin SHA Değerini Yok Sayma

Belirli bir gizli bilgi SHA değerini yok saymak için --by-sha bayrağını kullanmanız gerekir. Bu, verilen gizli bilgi SHA değerinin gelecekteki tüm taramalarda yok sayılmasını sağlar. Yok sayılacak bir gizli bilgi SHA değeri eklemek için aşağıdaki komutu kullanın:

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

Bu bölümün başındaki örnekte, belirli bir gizli bilgi SHA değerini yok sayma komutu şöyledir:

cycode ignore --by-sha a44081db3296c84b82d12a35c446a3cba19411dddfa0380134c75f7b3973bff0

Yukarıdaki örnekte a44081db3296c84b82d12a35c446a3cba19411dddfa0380134c75f7b3973bff0 değerini gizli bilgi SHA değerinizle değiştirin.

Bir Yolu Yok Sayma

Gizli bilgi, IaC veya SCA taramalarında belirli bir yolu yok saymak için --by-path bayrağını -t, --scan-type bayrağıyla birlikte kullanmanız gerekir (tarama türünü belirtmelisiniz). Böylece verilen yol, belirtilen tarama türü için gelecekteki tüm taramalarda yok sayılır. Yok sayılacak bir yol eklemek için aşağıdaki komutu kullanın:

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

Bu bölümün başındaki örnekte, gizli bilgi taramasında belirli bir yolu yok sayma komutu şöyledir:

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

Yukarıdaki örnekte ~/home/my-repo/config değerini yolunuzla değiştirin.

Bu bölümün başındaki örnekte, IaC taramalarında belirli bir yolu yok sayma komutu şöyledir:

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

Yukarıdaki örnekte ~/home/my-repo/config değerini yolunuzla değiştirin.

Bu bölümün başındaki örnekte, SCA taramalarında belirli bir yolu yok sayma komutu şöyledir:

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

Yukarıdaki örnekte ~/home/my-repo/config değerini yolunuzla değiştirin.

Gizli Bilgi, IaC, SCA veya SAST Kuralını Yok Sayma

Belirli bir gizli bilgi, IaC, SCA veya SAST kuralını yok saymak için --by-rule bayrağını -t, --scan-type bayrağıyla birlikte kullanmanız gerekir (tarama türünü belirtmelisiniz). Böylece verilen kural kimliği değeri gelecekteki tüm taramalarda yok sayılır. Yok sayılacak bir kural kimliği değeri eklemek için aşağıdaki komutu kullanın:

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

Bu bölümün başındaki örnekte, belirli bir gizli bilgi kuralı kimliğini yok sayma komutu şöyledir:

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

Yukarıdaki örnekte ce3a4de0-9dfc-448b-a004-c538cf8b4710 değerini yok saymak istediğiniz kural kimliğiyle değiştirin.

Bu bölümün başındaki örnekte, belirli bir IaC kuralı kimliğini yok sayma komutu şöyledir:

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

Yukarıdaki örnekte bdaa88e2-5e7c-46ff-ac2a-29721418c59c değerini yok saymak istediğiniz kural kimliğiyle değiştirin.

Bu bölümün başındaki örnekte, belirli bir SCA kuralı kimliğini yok sayma komutu şöyledir:

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

Yukarıdaki örnekte dc21bc6b-9f4f-46fb-9f92-e4327ea03f6b değerini yok saymak istediğiniz kural kimliğiyle değiştirin.

Bir Paketi Yok Sayma

[!NOTE] Bu seçenek yalnızca SCA taramalarında kullanılabilir.

SCA taramalarında belirli bir paketi yok saymak için --by-package bayrağını -t, --scan-type bayrağıyla birlikte kullanmanız gerekir (sca tarama türünü belirtmelisiniz). Böylece verilen paket, {{package_name}}@{{package_version}} biçimlendirmesi kullanılarak gelecekteki tüm taramalarda yok sayılır. Yok sayılacak bir paket ve sürüm eklemek için aşağıdaki komutu kullanın:

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

VEYA

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

Aşağıdaki örnekte, belirli bir SCA paketini yok sayma komutu şöyledir:

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

Yukarıdaki örnekte pyyaml yerine paket adını, 5.3.1 yerine ise yok saymak istediğiniz paket sürümünü yazın.

Yapılandırma dosyası aracılığıyla yok sayma

Uygulanan yok sayma kuralları config.yaml adlı yapılandırma dosyasında saklanır. Bu dosya geliştiriciler arasında kolayca paylaşılabilir, hatta uzak Git deposuna commit edilebilir. Bu dosyalar her zaman .cycode klasöründe bulunur. Klasörün adı noktayla (.) başlar; klasörü görebilmek için gizli dosyaların görüntülenmesini etkinleştirmeniz gerekir.

Yapılandırma dosyalarının yolu

Varsayılan olarak tüm cycode ignore komutları yok sayma kuralını CLI'nin çalıştırıldığı geçerli dizine kaydeder.

Örnek: yok sayma CLI komutunu /Users/name/projects/backend konumundan çalıştırmak, /Users/name/projects/backend/.cycode içinde config.yaml oluşturur.

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

2 directories, 1 file

İkinci seçenek, yok sayma kurallarını genel yapılandırma dosyalarına kaydetmektir. Genel yapılandırmanın yolu ~/.cycode/config.yaml şeklindedir; burada ~, macOS'te users home directory, for example, /Users/name` anlamına gelir.

Genel alana kaydetmek için cycode ignore komutunun -g bayrağı kullanılabilir. Örneğin: cycode ignore -g --by-value test-value.

Doğru çalışma dizini

.cycode klasörünü doğru yere yerleştirmek ve CLI'yi aynı konumdan çalıştırmak son derece önemlidir. CI/CD (GitHub Actions, Jenkins vb.) gibi farklı ortamlarla çalışırken bunu mutlaka kontrol edin.

.cycode klasörünü deponuzun kök dizinine commit edebilirsiniz. Bu durumda CLI taramalarını depo kök dizininden çalıştırmanız gerekir. Bu gereksinimlerinize uymuyorsa .cycode klasörünü geçici olarak istediğiniz konuma kopyalayabilir ve CLI taramasını bu klasörden çalıştırabilirsiniz.

Yapılandırmadaki yok sayma kuralları

Bu yapılandırma dosyalarını okuyabilmek, hatta CLI olmadan değiştirebilmek için CLI'ın yok sayılan kuralları nasıl sakladığını anlamak önemlidir.

Soyut YAML yapısı:

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

scanTypeName için olası değerler: iac, sca, sast, secret.

ignoringType için olası değerler: paths, values, rules, packages, shas, cves.

[!WARNING] "Değere göre yok say" için kullanılan değerler düz metin olarak saklanmaz! CLI bunun yerine değerlerin sha256 karmalarını saklar. Yapılandırma dosyasını elle değiştirirken dizenin karmalarını kullanmalısınız.

Gerçek bir config.yaml örneği:

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

Report Command

SBOM Raporu Oluşturma

Yazılım malzeme listesi (SBOM), bir uygulamanın geliştirilmesi ve teslim edilmesinde yer alan tüm bileşenlerin ve yazılım bağımlılıklarının envanteridir. Bu komutu kullanarak yerel projeniz veya depo URI'niz için bir SBOM raporu oluşturabilirsiniz.

Bu komutla kullanılabilecek seçenekler şunlardır:

SeçenekAçıklamaGerekliVarsayılan
-f, --format [spdx-2.2|spdx-2.3|cyclonedx-1.4]SBOM biçimiEvet
-o, --output-format [JSON]Çıktı dosyası biçimini belirtinHayırjson
--output-file PATHÇıktı dosyasıHayırgeçerli dizine kaydedilen otomatik oluşturulmuş dosya adı
--include-vulnerabilitiesGüvenlik açıklarını dahil etHayırFalse
--include-dev-dependenciesGeliştirme bağımlılıklarını dahil etHayırFalse

Bu komutla kullanılabilecek komutlar şunlardır:

KomutAçıklama
pathKomutta belirtilen yol için SBOM raporu oluşturur
repository-urlKomutta belirtilen depo URI'si için SBOM raporu oluşturur

Depo

Bir depo URI'si için SBOM raporu oluşturmak üzere:
cycode report sbom --format <sbom format> --include-vulnerabilities --include-dev-dependencies --output-file </path/to/file> repository_url <repository url>

Örneğin:
cycode report sbom --format spdx-2.3 --include-vulnerabilities --include-dev-dependencies repository_url https://github.com/cycodehq/cycode-cli.git

Yerel Proje

Bir yol için SBOM raporu oluşturmak üzere:
cycode report sbom --format <sbom format> --include-vulnerabilities --include-dev-dependencies --output-file </path/to/file> path </path/to/project>

Örneğin:
cycode report sbom --format spdx-2.3 --include-vulnerabilities --include-dev-dependencies path /path/to/local/project

path alt komutu aşağıdaki ek seçenekleri destekler:

SeçenekAçıklama
--no-restoreKilit dosyasının geri yüklenmesini atlar ve yalnızca doğrudan bağımlılıkları tarar. Ayrıntılar için Lock Restore Option bölümüne bakın.
--gradle-all-sub-projectsTüm alt projeler için Gradle geri yükleme komutunu çalıştırır (çok projeli bir Gradle derlemesinin kök dizininden kullanın).
--maven-settings-fileYalnızca Maven için, bağımlılık ağacını oluştururken özel bir settings.xml dosyası kullanılmasına olanak tanır.

Import Command

SBOM İçe Aktarma

Yazılım malzeme listesi (SBOM), bir uygulamanın geliştirilmesi ve teslim edilmesinde yer alan tüm bileşenlerin ve yazılım bağımlılıklarının envanteridir. Bu komutu kullanarak dosya sisteminizdeki bir SBOM dosyasını Cycode'a aktarabilirsiniz.

Bu komutla kullanılabilecek seçenekler şunlardır:

SeçenekAçıklamaGerekliVarsayılan
-n, --name TEXTSBOM'un görünen adıEvet
-v, --vendor TEXTSBOM'u sağlayan kuruluşun adıEvet
-l, --label TEXTSBOM'a etiket ekleHayır
-o, --owner TEXTBu SBOM için iletişim noktası olan Cycode kullanıcısının e-posta adresiHayır
-b, --business-impact [High | Medium | Low]İş EtkisiHayırMedium

Örneğin:
cycode import sbom --name example-sbom --vendor cycode -label tag1 -label tag2 --owner example@cycode.com /path/to/local/project

Tarama Günlükleri

Tüm CLI taramaları Cycode'da günlüğe kaydedilir. Günlükleri Settings > CLI Logs altında bulabilirsiniz.

Sözdizimi Yardımı

Kullanılabilir seçenekleri ve bunların sözdizimini gösteren bir yardım iletisi görüntülemek için istediğiniz zaman herhangi bir komuta --help bağımsız değişkenini ekleyebilirsiniz.

Genel yardımı görmek için şu komutu girmeniz yeterlidir:

cycode --help

Tarama seçeneklerini görmek için şunu girin:

cycode scan --help

Belirli bir tarama türü için kullanılabilir seçenekleri görmek üzere şunu girin:

cycode scan {{option}} --help

Örneğin, Yol Taraması için kullanılabilir seçenekleri görmek üzere şunu girin:

cycode scan path --help

Tarama yok sayma işlevi için kullanılabilir seçenekleri görmek üzere şu komutu kullanın:

cycode ignore --help

Bir rapor için kullanılabilir seçenekleri görmek üzere şu komutu kullanın:

cycode report --help

Belirli bir rapor türü için kullanılabilir seçenekleri görmek üzere şunu girin:

cycode scan {{option}} --help