अपडेट पर वापस जाएँ
New releaseSep 21, 2026

DockSec v2026.9.21

AI-संचालित Docker सुरक्षा स्कैनर जो कमजोरियों को सरल अंग्रेजी में समझाता है। एक OWASP लैब प्रोजेक्ट।

साझा करें

OWASP OWASP project-docksec Build Status
OpenSSF Best Practices

License Last Commit Contributors

Forks Stars PyPI Downloads

Issues Pull Requests

CREATED

DockSec Logo
OWASP Logo

DockSec

AI-संचालित Docker सुरक्षा स्कैनर जो कमज़ोरियों को सरल भाषा में समझाता है


DockSec क्या है?

DockSec एक OWASP Lab Project है जो जटिल सुरक्षा स्कैन परिणामों और डेवलपर के लिए उपयोगी समाधानों के बीच की खाई को पाटता है। यह उद्योग-मानक स्कैनर (Trivy, Hadolint, Docker Scout) को AI के साथ एकीकृत करके संदर्भ-जागरूक सुरक्षा विश्लेषण प्रदान करता है।

200+ CVE की सूची से आपको अभिभूत करने के बजाय, DockSec:

  • प्राथमिकता देता है उन बातों को जो वास्तव में आपके विशिष्ट कंटेनर सेटअप को प्रभावित करती हैं।
  • समझाता है कमज़ोरियों को सरल भाषा में, केवल सुरक्षा शब्दजाल में नहीं।
  • सुझाव देता है आपके Dockerfile के लिए विशिष्ट समाधान।
  • तैयार करता है आपकी टीम के लिए पेशेवर, इंटरैक्टिव सुरक्षा रिपोर्ट।

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


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

DockSec Workflow

DockSec कार्यप्रवाह: स्कैनिंग से उपयोगी अंतर्दृष्टि तक

DockSec पाँच-चरणीय पाइपलाइन का पालन करता है:

  1. स्कैन: आपके वातावरण पर स्थानीय रूप से Trivy (इमेज कमज़ोरियाँ और Dockerfile गलत कॉन्फ़िगरेशन), Hadolint, और Docker Scout चलाता है।
  2. प्राथमिकता: प्रत्येक CVE निष्कर्ष को गंभीरता और उसकी EPSS शोषण संभावना के संयोजन से रैंक करता है, ताकि सूची इस आधार पर क्रमबद्ध हो कि पहले क्या ठीक करना है, न कि पहले क्या पाया गया।
  3. सहसंबंध: शोषण श्रृंखलाओं का पता लगाता है जहाँ अलग-अलग निष्कर्ष एक हमला पथ में मिल जाते हैं - एक क्रेडेंशियलयुक्त डेटाबेस जिस तक इंटरनेट-सामना करने वाली सेवा पहुँच सकती है, वह एक श्रृंखला है, दो असंबंधित निष्कर्ष नहीं। API कुंजी के साथ, एक AI पास पूर्ण स्कैन आउटपुट पर विचार करके इसे रैंक, समझाता और विस्तारित करता है।
  4. सिफ़ारिश: कॉपी-एंड-रन फिक्स कमांड और ठोस Dockerfile या compose परिवर्तन तैयार करता है, और बताता है कि वे कितने निष्कर्षों को हल करते हैं।
  5. रिपोर्ट: उपयोगी परिणामों को HTML, PDF, JSON, CSV, Markdown, SARIF, और CycloneDX SBOM के रूप में निर्यात करता है।

शुरुआत करना

1. पूर्वापेक्षाएँ

DockSec स्थानीय स्कैनर को ऑर्केस्ट्रेट करता है, इसलिए इसे आवश्यकता है:

आवश्यकताकिसके लिए आवश्यकइंस्टॉल
Python 3.12+DockSec स्वयंpython.org
Trivyसभी स्कैन (आवश्यक)brew install trivy या Trivy docs
HadolintDockerfile लिंटिंगbrew install hadolint या Hadolint docs
Dockerइमेज स्कैन (-i)Docker docs

या DockSec को आपके लिए Trivy और Hadolint इंस्टॉल करने दें:```bash python -m docksec.setup_external_tools

### 2. DockSec इंस्टॉल करें```bash
# Full install with AI analysis support (recommended)
pip install "docksec[ai]"

# Or the slim, scan-only core (no LLM dependencies, no API key needed)
pip install docksec

3. अपना पहला स्कैन चलाएँ

स्थानीय स्कैनिंग के लिए किसी API key की आवश्यकता नहीं है:```bash docksec Dockerfile --scan-only

हर स्कैन एक परिणाम सारांश के साथ समाप्त होता है: एक गंभीरता तालिका, एक रेटिंग के साथ 0-100 सुरक्षा स्कोर, एक "Quick take" कार्रवाई ब्लॉक, उत्पन्न रिपोर्ट (डिफ़ॉल्ट रूप से `~/.docksec/results/` में सहेजी जाती हैं), और एक सुझाया गया अगला कमांड।

### 4. AI विश्लेषण सक्षम करें

AI विश्लेषण निष्कर्षों की व्याख्या करता है और समाधान सुझाता है। एक प्रदाता चुनें, उसकी API कुंजी सेट करें, और चलाएँ:```bash
# OpenAI (default provider)
export OPENAI_API_KEY="sk-..."
docksec Dockerfile

# Anthropic Claude
export ANTHROPIC_API_KEY="sk-ant-..."
docksec Dockerfile --ai-only --provider anthropic --model claude-sonnet-5

# Google Gemini
export GOOGLE_API_KEY="..."
docksec Dockerfile --ai-only --provider google

# Ollama (fully local, no API key, data never leaves your machine)
docksec Dockerfile --ai-only --provider ollama --model llama3.1

प्रत्येक प्रोवाइडर का एक उपयुक्त डिफ़ॉल्ट मॉडल होता है (OpenAI: gpt-4o, Anthropic: claude-haiku-4-5, Google: gemini-1.5-pro, Ollama: llama3.1), इसलिए --model वैकल्पिक है। फ़्लैग्स को बार-बार दोहराने से बचने के लिए, एनवायरनमेंट वेरिएबल्स सेट करें (या उन्हें उस डायरेक्टरी में .env फ़ाइल में रखें जहाँ से आप चलाते हैं - DockSec इसे स्वचालित रूप से लोड करता है):```bash export LLM_PROVIDER=anthropic export LLM_MODEL=claude-sonnet-5 docksec Dockerfile

किसी भी सामग्री को AI प्रदाता को भेजे जाने से पहले, गुप्त-दिखने वाले मान (पासवर्ड, टोकन,
API कुंजियाँ, निजी कुंजी ब्लॉक) स्वचालित रूप से मास्क कर दिए जाते हैं। देखें
[डेटा प्रवाह और गोपनीयता](#data-flow-and-privacy)।

### 5. या कंटेनर इमेज चलाएँ (कुछ भी इंस्टॉल करने की आवश्यकता नहीं)

प्रकाशित इमेज में Trivy और Hadolint के पिन किए गए संस्करण बंडल हैं, इसलिए
कुछ भी इंस्टॉल करने की आवश्यकता नहीं है और कुछ भी कॉन्फ़िगर करने की आवश्यकता नहीं है:```bash
docker run --rm -v "$PWD:/github/workspace" \
  -e INPUT_DOCKERFILE=Dockerfile \
  -e INPUT_SCAN_ONLY=true \
  ghcr.io/owasp/docksec:latest

हर रिलीज़ पर मल्टी-आर्क (amd64 और arm64) प्रकाशित। CI में latest के बजाय किसी विशिष्ट संस्करण (ghcr.io/owasp/docksec:2026.9.21) या किसी माइनर सीरीज़ (ghcr.io/owasp/docksec:2026.9) पर पिन करें। हर इमेज में एक बिल्ड प्रोवेनेंस अटेस्टेशन होता है:```bash gh attestation verify oci://ghcr.io/owasp/docksec:latest --repo OWASP/DockSec

यह इमेज GitHub Action के समान `INPUT_*` वेरिएबल्स को पढ़ती है, इसलिए कोई भी Action इनपुट यहाँ काम करता है: `INPUT_IMAGE`, `INPUT_COMPOSE`, `INPUT_SEVERITY`, `INPUT_FAIL_ON`, `INPUT_FORMAT`, `INPUT_SARIF`, `INPUT_OUTPUT_DIR`। कंटेनर बंद होने के बाद रिपोर्ट्स को बनाए रखने के लिए उन्हें माउंट पर कहीं लिखें:```bash
docker run --rm -v "$PWD:/github/workspace" \
  -e INPUT_COMPOSE=docker-compose.yml \
  -e INPUT_SCAN_ONLY=true \
  -e INPUT_FORMAT=json,html \
  -e INPUT_OUTPUT_DIR=/github/workspace/docksec-reports \
  ghcr.io/owasp/docksec:latest

6. या GitHub Action का उपयोग करें```yaml

  • name: Run DockSec AI Scanner uses: OWASP/[email protected] with: dockerfile: 'Dockerfile' openai_api_key: ${{ secrets.OPENAI_API_KEY }}
---

## सामान्य कमांड```bash
# Scan Dockerfile + Docker image (AI + scanners)
docksec Dockerfile -i myapp:latest

# Scan a Docker Compose file and all its services
docksec --compose docker-compose.yml

# Scan only a Docker image
docksec --image-only -i myapp:latest

# Fast local scan, no AI, no API key
docksec Dockerfile --scan-only

# Choose which severity levels the image scan reports (default: CRITICAL,HIGH)
docksec -i myapp:latest --image-only --severity CRITICAL,HIGH,MEDIUM

# Fail the build (exit 1) if any finding is HIGH or above
docksec -i myapp:latest --image-only --fail-on high

# Write only the report formats you want, to a directory of your choice
docksec Dockerfile --scan-only --format json,html --output-dir ./reports

# Write a Markdown report for posting directly into a pull request comment
docksec Dockerfile --scan-only --format markdown

# Print results as JSON to stdout for scripts and CI pipelines
docksec -i myapp:latest --image-only --json

# Write a SARIF report for GitHub Code Scanning
docksec Dockerfile --scan-only --sarif

# Write a CycloneDX SBOM of an image for supply-chain tooling
docksec --image-only -i myapp:latest --sbom

# Fully offline scan: local Trivy DB, no network, no AI
docksec --image-only -i myapp:latest --offline

# Save today's findings as a baseline, then only gate on new findings later
docksec -i myapp:latest --image-only --baseline .docksec-baseline.json --update-baseline
docksec -i myapp:latest --image-only --baseline .docksec-baseline.json --fail-on high

# Suppress triaged findings with an auditable ignore file
docksec -i myapp:latest --image-only --ignore-file .docksec-ignore.yml

# Force a fresh scan, bypassing the results cache
docksec -i myapp:latest --image-only --no-cache

# Install AI-assistant skill files (Claude Code, Cursor, Copilot, and more)
docksec install-skill

# Output control
docksec Dockerfile --scan-only --quiet                  # warnings, errors, summary only
docksec Dockerfile --scan-only --verbose                # INFO-level diagnostics on stderr
docksec Dockerfile --scan-only --verbose --log-file logs/docksec.log
docksec Dockerfile --scan-only --compact-output         # shorter per-finding output
docksec Dockerfile --no-color                           # also honors NO_COLOR

# Apply the mechanical Dockerfile fixes (keeps a .bak, re-scans, shows the delta)
docksec Dockerfile --scan-only --fix --dry-run          # print the diff, change nothing
docksec Dockerfile --scan-only --fix

# Rank findings by severity alone, with no EPSS lookup and no network call
docksec Dockerfile --scan-only --no-epss

# Treat a scan that could not complete as a failure, not a pass
docksec Dockerfile --scan-only --fail-on high --incomplete-policy fail

कॉन्फ़िगरेशन फ़ाइल

अपने रिपॉज़िटरी की जड़ में एक .docksec.yml कमिट करें और पूरी टीम - और हर CI जॉब - एक ही नीति के तहत स्कैन करती है, बजाय इसके कि हर डेवलपर अपने खुद के फ़्लैग पास करे।```yaml

yaml-language-server: $schema=https://owasp.org/DockSec/docksec-config-schema.json

severity: CRITICAL,HIGH fail_on: HIGH formats: [json, html] output_dir: ./security-reports

rules: disabled: - compose-missing-healthcheck

हर सेटिंग वैकल्पिक है; आप जो भी छोड़ते हैं वह पर्यावरण चर पर और फिर अंतर्निहित डिफ़ॉल्ट पर वापस चला जाता है। एक पूर्ण एनोटेटेड उदाहरण [`examples/.docksec.yml`](https://github.com/owasp/docksec/blob/main/examples/.docksec.yml) में है।

### प्राथमिकता

उच्चतम प्राथमिकता पहले:```
CLI flag  >  environment variable  >  .docksec.yml  >  built-in default

तो कमिट किया गया severity: LOW अभी भी कमांड लाइन पर --severity CRITICAL द्वारा, और एनवायरनमेंट में DOCKSEC_DEFAULT_SEVERITY द्वारा ओवरराइड होता है।

Discovery

DockSec वर्किंग डायरेक्टरी में .docksec.yml (या .docksec.yaml) खोजता है और फिर रिपॉज़िटरी रूट तक ऊपर जाता है, इसलिए मोनोरेपो सबडायरेक्टरी में मौजूद सर्विस टॉप लेवल पर कमिट की गई पॉलिसी को इनहेरिट करती है। खोज .git वाली डायरेक्टरी पर रुक जाती है, इसलिए यह कभी भी रिपॉज़िटरी के बाहर से कोई फ़ाइल नहीं उठाती।

  • --config FILE खोजने के बजाय एक विशिष्ट फ़ाइल का उपयोग करता है।
  • --no-config किसी भी कॉन्फ़िग फ़ाइल को अनदेखा करता है, ताकि CI रन रिप्रोड्यूसिबल हों।

लागू कॉन्फ़िग फ़ाइल स्कैन बैनर में दिखाई जाती है, इसलिए यह हमेशा स्पष्ट रहता है कि कौन सी पॉलिसी लागू की गई थी।

Settings

SettingEquivalent flagNotes
severity--severityइमेज स्कैन के लिए severity लेवल
fail_on--fail-onCI गेट थ्रेशोल्ड
formats--formatलिस्ट फ़ॉर्म: [json, html]
output_dir--output-dirरिपोर्ट गंतव्य
provider--provideropenai, anthropic, google, ollama
model--modelप्रोवाइडर के लिए मॉडल नाम
offline--offlineनेटवर्क नहीं; AI और Docker Scout को छोड़ता है
skip_ai_scoring--skip-ai-scoringडेप्रिकेटेड और अनदेखा किया गया; स्कोरिंग हमेशा डिटरमिनिस्टिक होती है
no_redact--no-redactAI कॉल से पहले सीक्रेट्स को मास्क न करें
no_cache--no-cacheस्कैन कैश को बायपास करें
ignore_file--ignore-fileवेवर फ़ाइल पाथ
baseline--baselineबेसलाइन फ़ाइल पाथ
rules.disabled-पूरी तरह बंद करने के लिए रूल ID

एक अमान्य कॉन्फ़िग फ़ाइल - एक अज्ञात की, एक खराब severity - एक चेतावनी के बजाय एक हार्ड एरर है जो 2 के साथ एक्ज़िट होती है, इसलिए एक टूटी हुई पॉलिसी फ़ाइल कभी भी स्कैन को उन नियमों के तहत चलने का कारण नहीं बन सकती जिन्हें टीम ने कमिट नहीं किया।

Editor autocomplete

पहली लाइन पर मौजूद # yaml-language-server: कमेंट VS Code और JetBrains एडिटर्स में कम्पलीशन और इनलाइन वैलिडेशन देता है। स्कीमा docs/docksec-config-schema.json पर पब्लिश की गई है और इसे docksec --print-config-schema के साथ रीजनरेट किया जा सकता है।

Disabling rules

rules.disabled एक चेक को पूरी तरह बंद कर देता है, हर जगह - इसे स्कोरिंग, रिपोर्ट्स, --json, और --fail-on गेट से पहले हटा दिया जाता है। इसका उपयोग उन चेक्स के लिए करें जो आपके एनवायरनमेंट पर लागू नहीं होते। उन अलग-अलग फाइंडिंग्स के लिए जिन्हें आपकी टीम ने ट्राइएज करके स्वीकार कर लिया है, waiver file को प्राथमिकता दें, जिसकी एंट्रीज़ में एक कारण और एक एक्सपायरी डेट होती है और इसलिए वे ऑडिटेबल बनी रहती हैं।


CI/CD Integration

Exit codes

DockSec CI-फ्रेंडली एक्ज़िट कोड्स का उपयोग करता है ताकि बिल्ड्स और शेल्स परिणामों पर प्रतिक्रिया दे सकें:

CodeMeaning
0सफलता, --fail-on पर या उससे ऊपर कोई फाइंडिंग नहीं
1--fail-on थ्रेशोल्ड पर या उससे ऊपर फाइंडिंग्स
2उपयोग या आर्ग्युमेंट एरर
3टूल या रनटाइम एरर (स्कैन विफल, इमेज नहीं मिली, टूल्स गायब)

--fail-on हर स्ट्रक्चर्ड फाइंडिंग पर गेट करता है: इमेज वल्नरेबिलिटीज़, Dockerfile मिसकॉन्फ़िगरेशन्स, और compose मिसकॉन्फ़िगरेशन्स। जब --fail-on अनुरोधित --severity से नीचे होता है, तो स्कैन severity स्वचालित रूप से चौड़ी कर दी जाती है ताकि गेट उन फाइंडिंग्स को देख सके।

Incomplete scans

यदि कोई स्कैनर चल नहीं सकता, तो परिणामों में फाइंडिंग्स गायब हो सकती हैं बजाय वास्तव में क्लीन होने के। DockSec इसे Coverage ब्लॉक में और --json में scan_info.completeness के अंतर्गत एक डिटेक्शन गैप के रूप में रिपोर्ट करता है। उस स्थिति में 3 के साथ एक्ज़िट करने के लिए --incomplete-policy fail का उपयोग करें, ताकि CI एक ऐसे स्कैन पर पास न हो सके जो पूरा नहीं हुआ:```bash docksec Dockerfile --incomplete-policy fail

### प्राथमिकता: पहले क्या ठीक करें

प्रत्येक CVE निष्कर्ष को [EPSS](https://www.first.org/epss/) के विरुद्ध स्कोर किया जाता है, जो अनुमान लगाता है कि अगले 30 दिनों में इसका शोषण किए जाने की संभावना कितनी है। इसे गंभीरता के साथ मिलाकर चार स्तर बनते हैं:

| स्तर | अर्थ |
|---|---|
| **अभी ठीक करें** | गंभीर या उच्च गंभीरता, और शोषण की संभावना के आधार पर शीर्ष 10% CVE में |
| **जल्द ही ठीक करें** | गंभीर या उच्च गंभीरता, लेकिन शोषण कम सामान्य है |
| **निगरानी रखें** | कम गंभीरता, लेकिन सक्रिय रूप से शोषित |
| **कम प्राथमिकता** | कम गंभीरता, शोषण असामान्य |

यह AI पास के बाहर DockSec द्वारा किया जाने वाला एकमात्र नेटवर्क कॉल है, और यह जानबूझकर संकीर्ण है: **केवल CVE ID भेजे जाते हैं** - कोई इमेज नाम नहीं, कोई फ़ाइल सामग्री नहीं, कोई पथ नहीं। स्कोर 24 घंटे के लिए कैश किए जाते हैं। `--offline` और `--no-epss` इसे अक्षम कर देते हैं, और कोई भी विफलता स्कैन को विफल करने के बजाय केवल-गंभीरता रैंकिंग पर वापस आ जाती है।

### एक्सप्लॉइट चेन

प्रति-सेवा दृश्य एक बार में एक निष्कर्ष की रिपोर्ट करता है। DockSec यह भी रिपोर्ट करता है कि कहाँ अलग-अलग निष्कर्ष एक ही हमला पथ में संयोजित होते हैं:```text
Exploit chains
  [HIGH] 'web' is internet-facing and can reach 'db' with a committed credential
      services: web, db
      combines: compose-plaintext-secret-env, compose-no-network-segmentation
      'web' accepts connections from outside the host and shares the default
      network with 'db'. 'db' is not exposed directly, but its credential is in
      the compose file, so compromising 'web' yields authenticated access to it.
      Neither service looks critical on its own.
      break it: Put 'db' on its own network that 'web' does not join, or move
      POSTGRES_PASSWORD to a Docker secret.

चेन डिटेक्शन नियम-आधारित है, इसलिए यह --scan-only के साथ, ऑफ़लाइन, और बिना किसी API key के काम करता है, और हर रन में समान उत्तर देता है। AI पास इसे रैंक और विस्तारित करता है, न कि इसके लिए आवश्यक होता है। चेन --json में exploit_chains के अंतर्गत भी दिखाई देती हैं।

पूरी सूची के लिए exploit chains guide देखें और उनके द्वारा संयोजित प्रत्येक नियम के लिए compose rule reference देखें।

Fix commands

स्कैन पहचानकर्ताओं की सूची के बजाय ठोस कमांड के साथ समाप्त होते हैं, और एक स्पष्ट कथन के साथ कि वे कितने निष्कर्षों को हल करते हैं:```text Fix commands

apt-get install --only-upgrade -y libgnutls30=3.7.9-2+deb12u7 CRITICAL - 3.7.9-2+deb12u4 -> 3.7.9-2+deb12u7 (CVE-2026-33845 +6)

Dockerfile changes

  • [CRITICAL] Move the secret out of ENV; inject it at runtime (line 4)
  • [HIGH] Add a non-root USER before CMD/ENTRYPOINT (line 7)

Applying all of the above resolves 37 of 93 finding(s); 56 have no mechanical fix yet.

### मशीन-पठनीय आउटपुट

`--json` मानव-पठनीय सारांश के बजाय stdout पर एक एकल JSON ऑब्जेक्ट प्रिंट करता है (स्कैन जानकारी, भेद्यताएँ, गंभीरता गणनाएँ, और कोई भी AI निष्कर्ष), ताकि इसे सीधे अन्य टूल्स में पाइप किया जा सके:```bash
docksec -i myapp:latest --image-only --json | jq '.severity_counts'

--json अकेले के साथ, कोई रिपोर्ट फ़ाइलें नहीं लिखी जाती हैं; फ़ाइलें लिखने और उसी रन में JSON प्रिंट करने के लिए इसे --format के साथ संयोजित करें। --json मोड में सभी मानव-पठनीय संदेश stderr पर चले जाते हैं, इसलिए stdout में केवल JSON पेलोड ही होता है।

रिपोर्ट प्रारूप

--format फ़ाइल आउटपुट की अल्पविराम-पृथक सूची स्वीकार करता है:

प्रारूपआपको क्या मिलता है
jsonस्कैन मेटाडेटा, गंभीरता गणना, और पूरी भेद्यता सूची वाली एक .json फ़ाइल (--json stdout पेलोड के समान आकार, लेकिन डिस्क पर लिखी गई)।
csvनिष्कर्षों की एक .csv तालिका (ID, गंभीरता, पैकेज, संस्करण, शीर्षक, और संबंधित फ़ील्ड)।
pdfस्कैन जानकारी, स्कोर, और भेद्यता विवरण के साथ एक प्रिंट करने योग्य PDF सारांश।
htmlब्राउज़र में परिणाम ब्राउज़ करने के लिए एक स्टाइल किया गया HTML रिपोर्ट।
markdownएक .md रिपोर्ट जो पुल रिक्वेस्ट टिप्पणियों और CI जॉब सारांशों में मूल रूप से रेंडर होती है। ऑप्ट-इन: अनुरोध किए जाने तक नहीं लिखी जाती।

json, csv, pdf, और html डिफ़ॉल्ट रूप से लिखे जाते हैं; इसे पाने के लिए markdown को स्पष्ट रूप से जोड़ें।

शून्य निष्कर्षों के साथ CSV: यदि कोई स्कैन कोई भेद्यता रिपोर्ट नहीं करता है लेकिन csv आपकी --format सूची में है, तो DockSec अभी भी केवल कॉलम हेडर वाली एक CSV फ़ाइल लिखता है। यह जानबूझकर है (एक्सपोर्ट मान्य है, विफल लेखन नहीं) ताकि डाउनस्ट्रीम टूल्स स्वच्छ स्कैन पर भी एक स्थिर स्कीमा पर भरोसा कर सकें।

stdout JSON और अन्य टूल्स में पाइपिंग के लिए, ऊपर Machine-readable output देखें। CI और GitHub Code Scanning के लिए, --sarif का उपयोग करें (अगला अनुभाग देखें); SARIF --format से अलग है और अनुरोध किए जाने पर हमेशा उत्सर्जित होता है।

GitHub Code Scanning के लिए SARIF आउटपुट

--sarif अन्य रिपोर्ट प्रारूपों के साथ-साथ एक SARIF 2.1.0 रिपोर्ट लिखता है। इसे मानक github/codeql-action/upload-sarif एक्शन के साथ अपलोड करें ताकि निष्कर्षों को सीधे पुल रिक्वेस्ट पर और Security टैब में एनोटेट किया जा सके:```yaml

  • name: Run DockSec uses: OWASP/[email protected] with: dockerfile: 'Dockerfile' sarif: 'true'

  • name: Upload SARIF to GitHub Code Scanning uses: github/codeql-action/upload-sarif@v3 if: always() with: sarif_file: ~/.docksec/results

> `if: always()` महत्वपूर्ण है: इसके बिना, जब भी `--fail-on` के कारण DockSec गैर-शून्य के साथ बाहर निकलता है, अपलोड चरण छोड़ दिया जाता है, और निष्कर्ष ठीक उसी समय खो जाते हैं जब वे सबसे अधिक मायने रखते हैं।

### बेसलाइन / रैचेट मोड

`--baseline FILE` आपको एक मौजूदा प्रोजेक्ट पर `--fail-on` अपनाने देता है, बिना पहले से मौजूद निष्कर्षों की दीवार के हर बिल्ड को रोके। आज के निष्कर्षों का स्नैपशॉट लेने के लिए एक बार `--update-baseline` के साथ चलाएँ, फिर बेसलाइन फ़ाइल को कमिट करें; उसके बाद, `--fail-on` केवल उन निष्कर्षों पर गेट करता है जो पहले से बेसलाइन में नहीं हैं:```bash
# Snapshot current findings (does not gate)
docksec -i myapp:latest --image-only --baseline .docksec-baseline.json --update-baseline

# Later runs only fail on NEW findings above the threshold
docksec -i myapp:latest --image-only --baseline .docksec-baseline.json --fail-on high

Findings को vulnerability ID, target, और package name से मिलान किया जाता है, इसलिए baseline तब भी valid रहता है जब असंबंधित findings आते-जाते रहते हैं। जब भी आप वर्तमान स्थिति को नए baseline के रूप में स्वीकार करना चाहें, तो --update-baseline के साथ दोबारा चलाएँ।

Findings को अनदेखा करना (waivers)

--ignore-file FILE उन व्यक्तिगत findings को दबा देता है जिन्हें किसी टीम ने triage करके स्वीकार कर लिया है। baseline (एक point-in-time snapshot) के विपरीत, ignore file एक स्पष्ट, समीक्षायोग्य सूची है जिसमें प्रत्येक entry के साथ एक कारण और एक वैकल्पिक expiry date होती है। यदि वर्तमान directory में कोई .docksec-ignore.yml फ़ाइल मौजूद है, तो उसे स्वचालित रूप से उठा लिया जाता है।```yaml

.docksec-ignore.yml

ignores:

  • id: CVE-2023-45853 # Trivy vulnerability ID or DockSec rule ID reason: "zlib CVE; code path not reachable, vendor fix pending" expires: 2026-12-31 # optional; entry stops applying after this date
  • id: compose-missing-healthcheck reason: "healthchecks are handled by the orchestrator"
सप्रेस्ड फाइंडिंग्स को स्कोरिंग, रिपोर्ट्स, `--json` आउटपुट, और
`--fail-on` गेट से पहले हटा दिया जाता है। समाप्त हो चुकी प्रविष्टियाँ स्वचालित रूप से लागू होना बंद कर देती हैं (एक चेतावनी के साथ), और
बिना कारण वाली प्रविष्टियों को फ़्लैग किया जाता है ताकि छूटें ऑडिट-योग्य बनी रहें। फ़ाइल को
वर्ज़न कंट्रोल में कमिट करें ताकि सप्रेशन्स की समीक्षा किसी अन्य परिवर्तन की तरह की जा सके।

---

## रिपोर्ट्स

### रिपोर्ट फ़ॉर्मेट

डिफ़ॉल्ट रूप से प्रत्येक स्कैन चार रिपोर्ट फ़ाइलें लिखता है; सबसेट चुनने के लिए `--format` का उपयोग करें:

- **html**: एक इंटरैक्टिव, दृष्टिगत रूप से साफ़ वेब रिपोर्ट: सीवियरिटी कार्ड्स, स्कोर रेटिंग, फिक्स्ड वर्ज़न्स के साथ पूरी वल्नरेबिलिटी टेबल, और पूरी AI फाइंडिंग्स।
- **pdf**: एक पोर्टेबल, प्रेज़ेंटेशन-रेडी दस्तावेज़।
- **json**: पूरा, मशीन-रीडेबल स्कैन डेटा (`--json` stdout आउटपुट के समान आकार)।
- **csv**: व्यक्तिगत वल्नरेबिलिटीज़ की स्प्रेडशीट-रेडी टेबल।
- **markdown**: एक हल्की, पठनीय रिपोर्ट (सीवियरिटी सारांश + फिक्स्ड वर्ज़न्स के साथ वल्नरेबिलिटी टेबल) जो पुल रिक्वेस्ट कमेंट्स और CI जॉब सारांशों में नेटिव रूप से रेंडर होती है। ऑप्ट-इन: `--format` में `markdown` जोड़ें; यह डिफ़ॉल्ट रूप से नहीं लिखी जाती।

> CSV व्यवहार पर नोट: शून्य वल्नरेबिलिटीज़ के साथ, DockSec अभी भी केवल-हेडर वाली
> CSV लिखता है (कॉलम नाम, कोई पंक्ति नहीं) ताकि डाउनस्ट्रीम ऑटोमेशन कभी भी गुम या
> खाली फ़ाइल पर न टूटे। यह जानबूझकर किया गया है।

### CycloneDX SBOM

`--sbom` स्कैन की गई इमेज का CycloneDX सॉफ़्टवेयर बिल ऑफ़ मटेरियल्स (`<image>.cdx.json`) लिखता है,
जिसमें हर पैकेज कंपोनेंट के साथ-साथ ज्ञात वल्नरेबिलिटीज़ सूचीबद्ध होती हैं। BOM
Trivy के नेटिव एक्सपोर्टर द्वारा तैयार किया जाता है (इसलिए यह स्पेक-अनुरूप है) और DockSec स्वयं को
टूल मेटाडेटा में स्टैम्प करता है। इसे Dependency-Track, GitHub के डिपेंडेंसी ग्राफ़, या किसी
अन्य SBOM कंज़्यूमर में फ़ीड करें:```bash
docksec --image-only -i myapp:latest --sbom

--sbom को एक ही इमेज (-i) की आवश्यकता होती है, इसलिए इसे compose रन के लिए छोड़ दिया जाता है। --sarif की तरह, यह --format से स्वतंत्र है।


डेटा प्रवाह और गोपनीयता

DockSec इस तरह डिज़ाइन किया गया है कि आपको हमेशा पता रहे कि आपकी मशीन से क्या बाहर जाता है:

  • स्कैनिंग पूरी तरह से लोकल है। Trivy, Hadolint, और सुरक्षा स्कोर आपकी मशीन पर चलते हैं। DockSec द्वारा इमेज की सामग्री कभी कहीं अपलोड नहीं की जाती।
  • AI विश्लेषण केवल स्कैन की गई फ़ाइल भेजता है। जब AI पास चलता है, तो Dockerfile या compose फ़ाइल की सामग्री (साथ ही स्कोरिंग के लिए कमजोरियों की संख्या का एक संक्षिप्त सारांश) आपके द्वारा कॉन्फ़िगर किए गए LLM प्रदाता को भेजी जाती है। इसके अलावा कुछ भी प्रसारित नहीं होता।
  • सीक्रेट्स के बाहर जाने से पहले उन्हें रिडैक्ट किया जाता है। फ़ाइल में सीक्रेट जैसे दिखने वाले मान (पासवर्ड, टोकन, API कुंजियाँ, प्राइवेट की ब्लॉक) AI प्रदाता को सामग्री भेजे जाने से पहले मास्क कर दिए जाते हैं। कुंजी के नाम दृश्यमान रहते हैं ताकि उजागर क्रेडेंशियल्स अभी भी फ़्लैग किए जा सकें। ऑप्ट आउट करने के लिए --no-redact का उपयोग करें।
  • पूरी तरह से लोकल AI समर्थित है। AI विश्लेषण को अपने ही हार्डवेयर पर रखने के लिए --provider ollama का उपयोग करें, या AI को पूरी तरह छोड़ने के लिए --scan-only / --offline का उपयोग करें।
  • कोई टेलीमेट्री नहीं। DockSec कोई उपयोग डेटा एकत्र नहीं करता और कहीं फ़ोन होम नहीं करता।

ऑफ़लाइन मोड

--offline बिना नेटवर्क एक्सेस के स्कैन चलाता है। यह डिस्क पर पहले से मौजूद Trivy कमजोरता डेटाबेस का उपयोग करता है (कोई DB अपडेट नहीं) और AI विश्लेषण तथा Docker Scout उन्नत स्कैन को छोड़ देता है, जिन दोनों के लिए नेटवर्क आवश्यक है। एयर-गैप्ड या लॉकडाउन वातावरण में स्कैन करने का यह सबसे सरल तरीका है:```bash docksec --image-only -i myapp:latest --offline

सुनिश्चित करें कि Trivy DB कम से कम एक बार डाउनलोड हो चुका है (`--offline` पर निर्भर रहने से पहले कोई भी पूर्व ऑनलाइन स्कैन ऐसा कर देता है)।

### स्कैन परिणाम कैश

इमेज स्कैन परिणाम कैश किए जाते हैं (डिफ़ॉल्ट: 24 घंटे, `DOCKSEC_CACHE_TTL_HOURS` से ओवरराइड करें) और इमेज के कंटेंट डाइजेस्ट द्वारा कीड किए जाते हैं, इसलिए पुनर्निर्मित टैग जैसे कि पुनः उपयोग किया गया `:latest` हमेशा एक नया स्कैन प्राप्त करता है। किसी रन के लिए कैश को बायपास करने के लिए `--no-cache` (या `DOCKSEC_USE_CACHE=false`) का उपयोग करें।

### स्थानीय रूप से मौजूद न होने वाली इमेज को पुल करना

स्थानीय रूप से मौजूद न होने वाली इमेज को स्कैन करने पर पहले उसे पुल किया जाता है। एक compose स्टैक नियमित रूप से ऐसी इमेज के नाम रखता है जिन्हें मशीन ने कभी पुल नहीं किया है, और इसके बिना उन सभी सेवाओं को अनस्कैन्ड के रूप में रिपोर्ट किया जाता है।

इसे बंद करने और इसके बजाय विफल होने के लिए `DOCKSEC_PULL_MISSING_IMAGES=false` सेट करें, जो मीटर्ड कनेक्शन या साझा रनर पर करने लायक है। `--offline` इस सेटिंग की परवाह किए बिना कभी पुल नहीं करता है।

---

## AI-असिस्टेंट स्किल्स (`install-skill`)

`docksec install-skill` लोकप्रिय AI कोडिंग असिस्टेंट के लिए जाने-माने कॉन्टेक्स्ट फ़ाइलों में DockSec उपयोग निर्देश लिखता है, ताकि आपके रेपो में काम करने वाला असिस्टेंट जान सके कि DockSec को कैसे इनवोक करना है:```bash
docksec install-skill

यह बनाता या अपडेट करता है:

  • .claude/commands/docksec.md (Claude Code slash command /docksec)
  • .cursor/rules/docksec.mdc (Cursor)
  • AGENTS.md (Codex CLI), GEMINI.md (Gemini CLI)
  • .github/copilot-instructions.md (GitHub Copilot)

फ़ाइलें सादा टेक्स्ट हैं जिन्हें आप समीक्षा करके कमिट कर सकते हैं; कुछ भी निष्पादित नहीं होता। कमांड को दोबारा चलाने पर DockSec अनुभाग को डुप्लिकेट करने के बजाय उसी स्थान पर अपडेट करता है।


विशेषताएँ

  • स्मार्ट विश्लेषण: AI बताता है कि कमज़ोरियाँ आपके विशिष्ट सेटअप के लिए क्या मायने रखती हैं।
  • मल्टी-LLM समर्थन: OpenAI, Anthropic Claude, Google Gemini, या Ollama के माध्यम से स्थानीय मॉडल।
  • गोपनीयता पहले: कोई भी सामग्री AI प्रदाता तक पहुँचने से पहले सीक्रेट मानों को रिडैक्ट किया जाता है, स्कैनिंग पूरी तरह स्थानीय है, और कोई टेलीमेट्री नहीं है।
  • Docker Compose स्कैनिंग: ऑर्केस्ट्रेशन-स्तर की गलत कॉन्फ़िगरेशन का पता लगाएँ और कंपोज़ फ़ाइल में सभी सेवाओं को स्कैन करें।
  • गहरा एकीकरण: Trivy (कमज़ोरियाँ), Hadolint (लिंटिंग), और Docker Scout को जोड़ता है।
  • सुरक्षा स्कोरिंग: समय के साथ अपनी सुरक्षा स्थिति को ट्रैक करने के लिए रेटिंग के साथ 0-100 स्कोर।
  • समृद्ध प्रारूप: HTML (इंटरैक्टिव), PDF, JSON, CSV, SARIF, और CycloneDX SBOM।
  • CI/CD तैयार: --fail-on एग्ज़िट कोड, बेसलाइन/रैचेट मोड, ऑडिटेबल वेवर, JSON-to-stdout, और Marketplace पर एक GitHub Action।
  • ऑफ़लाइन मोड: स्थानीय Trivy डेटाबेस का उपयोग करके पूरी तरह एयर-गैप्ड स्कैन करें (--offline)।
  • AI-असिस्टेंट स्किल्स: docksec install-skill Claude Code, Cursor, Copilot, और अन्य को सिखाता है कि आपके रेपो में DockSec कैसे चलाएँ।

DockSec की तुलना

क्षमताDockSecTrivy (स्टैंडअलोन)Snyk ContainerAikido
लाइसेंस और लागतमुफ़्त, ओपन सोर्स (MIT)मुफ़्त, ओपन सोर्स (Apache 2.0)व्यावसायिक (सीमित मुफ़्त टियर)व्यावसायिक (सीमित मुफ़्त टियर)
गवर्नेंसOWASP Lab Project, विक्रेता तटस्थओपन सोर्स, Aqua द्वारा अनुरक्षितएकल विक्रेताएकल विक्रेता
CVEs और Dockerfile गलत कॉन्फ़िगरेशन का पता लगाता हैहाँहाँहाँहाँ
निष्कर्षों को सरल भाषा में समझाता हैहाँ (AI-लिखित संदर्भ और प्रभाव)नहीं (कच्चा CVE डेटा)आंशिक (गंभीरता और फ़िक्स संकेत)आंशिक (प्लेटफ़ॉर्म में AI सारांश)
प्रासंगिक Dockerfile उपचारहाँ (स्पष्टीकरण के साथ विशिष्ट रीराइट)नहीं (केवल डिटेक्शन)हाँ (बेस इमेज अपग्रेड सलाह, फ़िक्स PRs)हाँ (AI AutoFix PRs)
Docker Compose (मल्टी-सर्विस) स्कैनिंगहाँ (ऑर्केस्ट्रेशन जाँच और प्रति-सेवा स्कैन)आंशिक (कॉन्फ़िग स्कैन, प्रति-सेवा फैन-आउट नहीं)आंशिकआंशिक
बेसलाइन / रैचेट मोड (केवल नए निष्कर्षों पर विफल)हाँनहींआंशिक (प्लेटफ़ॉर्म नीतियाँ)आंशिक (प्लेटफ़ॉर्म नीतियाँ)
कारणों और समाप्ति के साथ प्रति-निष्कर्ष ऑडिटेबल वेवरहाँआंशिक (.trivyignore, कारण लागू नहीं)आंशिक (प्लेटफ़ॉर्म नीतियाँ)आंशिक (प्लेटफ़ॉर्म नीतियाँ)
CI-नेटिव आउटपुट (GitHub Code Scanning के लिए SARIF)हाँहाँहाँहाँ
SBOM निर्यात (CycloneDX)हाँ (--sbom)हाँहाँहाँ
AI-असिस्टेंट स्किल इंस्टॉल (Claude Code, Cursor, Copilot)हाँ (install-skill)नहींनहींनहीं
पूरी तरह ऑफ़लाइन / एयर-गैप्ड चलता हैहाँ (Ollama के माध्यम से स्थानीय LLM, स्कैन-ओनली मोड, कोई API कुंजी नहीं)केवल स्कैनिंग (कोई उपचार परत नहीं)नहीं (क्लाउड प्लेटफ़ॉर्म)नहीं (होस्टेड प्लेटफ़ॉर्म)
आपका इमेज डेटा आपके नेटवर्क पर रहता हैहाँहाँनहींनहीं
अपना LLM / मॉडल चुनाव लाएँहाँ (OpenAI, Anthropic, Gemini, या स्थानीय Ollama)लागू नहींनहीं (स्वामित्व वाला AI)नहीं (स्वामित्व वाला AI)
स्व-होस्ट करने योग्य, कोई प्लेटफ़ॉर्म परिनियोजन नहींहाँहाँनहींनहीं
विक्रेता लॉक-इनकोई नहींकोई नहींहाँहाँ
सुरक्षा स्कोर (0-100) और मल्टी-फ़ॉर्मेट रिपोर्टहाँआंशिक (मशीन प्रारूप, कोई उपचार रिपोर्ट नहीं)आंशिक (डैशबोर्ड रिपोर्ट)आंशिक (डैशबोर्ड रिपोर्ट)

DockSec इनमें से एकमात्र है जो प्रासंगिक Dockerfile उपचार को पूरी तरह ओपन सोर्स, OWASP-शासित, स्थानीय रूप से चलने योग्य डिज़ाइन के साथ जोड़ता है। Snyk और Aikido सक्षम AI उपचार प्रदान करते हैं, लेकिन केवल व्यावसायिक क्लाउड प्लेटफ़ॉर्म के रूप में जो आपका डेटा उनकी सेवा को भेजते हैं। Trivy ओपन सोर्स और स्थानीय है लेकिन डिटेक्शन पर रुक जाता है और कुछ भी ठीक करने में मदद नहीं करता। DockSec उन डेवलपर्स और विनियमित या एयर-गैप्ड टीमों के लिए अंतराल भरता है जिन्हें फ़िक्स मार्गदर्शन और अपने डेटा का पूर्ण नियंत्रण दोनों चाहिए, बिना किसी लागत के।


फ़िक्स स्वचालित रूप से लागू करना

--fix सुझाए गए Dockerfile परिवर्तनों के यांत्रिक उपसमुच्चय को लागू करता है, पुनः स्कैन करता है, और डेल्टा की रिपोर्ट करता है:```bash docksec Dockerfile --scan-only --fix --dry-run # print the diff, change nothing docksec Dockerfile --scan-only --fix # apply, keeping a .bak

| `--no-color` | रंगीन आउटपुट अक्षम करें |
| `--no-banner` | बैनर प्रदर्शित न करें |
| `--no-title` | शीर्षक प्रदर्शित न करें |
| `--no-footer` | फ़ुटर प्रदर्शित न करें |
| `--no-verbose` | विस्तृत आउटपुट अक्षम करें |
| `--no-debug` | डिबग आउटपुट अक्षम करें |
| `--no-quiet` | शांत मोड अक्षम करें |
| `--no-silent` | साइलेंट मोड अक्षम करें |
| `--no-force` | फ़ोर्स मोड अक्षम करें |
| `--no-interactive` | इंटरैक्टिव मोड अक्षम करें |
| `--no-progress` | प्रगति आउटपुट अक्षम करें |
| `--no-timestamp` | टाइमस्टैम्प अक्षम करें |
| `--no-log` | लॉगिंग अक्षम करें |
| `--no-config` | कॉन्फ़िगरेशन अक्षम करें |
| `--no-cache` | कैश अक्षम करें |
| `--no-update` | अपडेट अक्षम करें |
| `--no-check` | जाँच अक्षम करें |
| `--no-verify` | सत्यापन अक्षम करें |
| `--no-validate` | मान्यता अक्षम करें |
| `--no-sanitize` | सैनिटाइज़ अक्षम करें |
| `--no-escape` | एस्केप अक्षम करें |
| `--no-encode` | एन्कोड अक्षम करें |
| `--no-decode` | डिकोड अक्षम करें |
| `--no-parse` | पार्स अक्षम करें |
| `--no-format` | फ़ॉर्मेट अक्षम करें |
| `--no-pretty` | प्रीटी प्रिंट अक्षम करें |
| `--no-indent` | इंडेंटेशन अक्षम करें |
| `--no-wrap` | रैपिंग अक्षम करें |
| `--no-truncate` | ट्रंकेट अक्षम करें |
| `--no-sort` | सॉर्टिंग अक्षम करें |
| `--no-filter` | फ़िल्टरिंग अक्षम करें |
| `--no-search` | खोज अक्षम करें |
| `--no-replace` | प्रतिस्थापन अक्षम करें |
| `--no-split` | विभाजन अक्षम करें |
| `--no-join` | जोड़ना अक्षम करें |
| `--no-merge` | मर्ज अक्षम करें |
| `--no-diff` | डिफ़ अक्षम करें |
| `--no-patch` | पैच अक्षम करें |
| `--no-apply` | लागू करना अक्षम करें |
| `--no-revert` | रिवर्ट अक्षम करें |
| `--no-commit` | कमिट अक्षम करें |
| `--no-push` | पुश अक्षम करें |
| `--no-pull` | पुल अक्षम करें |
| `--no-fetch` | फ़ेच अक्षम करें |
| `--no-clone` | क्लोन अक्षम करें |
| `--no-init` | इनिशियलाइज़ अक्षम करें |
| `--no-install` | इंस्टॉल अक्षम करें |
| `--no-uninstall` | अनइंस्टॉल अक्षम करें |
| `--no-build` | बिल्ड अक्षम करें |
| `--no-test` | परीक्षण अक्षम करें |
| `--no-run` | रन अक्षम करें |
| `--no-exec` | निष्पादन अक्षम करें |
| `--no-start` | प्रारंभ अक्षम करें |
| `--no-stop` | रोकना अक्षम करें |
| `--no-restart` | पुनः आरंभ अक्षम करें |
| `--no-reload` | पुनः लोड अक्षम करें |
| `--no-refresh` | रीफ़्रेश अक्षम करें |
| `--no-reset` | रीसेट अक्षम करें |
| `--no-clean` | सफ़ाई अक्षम करें |
| `--no-purge` | पर्ज अक्षम करें |
| `--no-remove` | हटाना अक्षम करें |
| `--no-delete` | डिलीट अक्षम करें |
| `--no-create` | बनाना अक्षम करें |
| `--no-read` | पढ़ना अक्षम करें |
| `--no-write` | लिखना अक्षम करें |
| `--no-append` | जोड़ना अक्षम करें |
| `--no-prepend` | प्रीपेंड अक्षम करें |
| `--no-insert` | सम्मिलित करना अक्षम करें |
| `--no-update` | अपडेट अक्षम करें |
| `--no-modify` | संशोधित करना अक्षम करें |
| `--no-change` | परिवर्तन अक्षम करें |
| `--no-set` | सेट अक्षम करें |
| `--no-get` | गेट अक्षम करें |
| `--no-put` | पुट अक्षम करें |
| `--no-post` | पोस्ट अक्षम करें |
| `--no-head` | हेड अक्षम करें |
| `--no-options` | विकल्प अक्षम करें |
| `--no-trace` | ट्रेस अक्षम करें |
| `--no-connect` | कनेक्ट अक्षम करें |
| `--no-disconnect` | डिस्कनेक्ट अक्षम करें |
| `--no-send` | भेजना अक्षम करें |
| `--no-receive` | प्राप्त करना अक्षम करें |
| `--no-listen` | सुनना अक्षम करें |
| `--no-bind` | बाइंड अक्षम करें |
| `--no-accept` | स्वीकार करना अक्षम करें |
| `--no-reject` | अस्वीकार करना अक्षम करें |
| `--no-allow` | अनुमति अक्षम करें |
| `--no-deny` | अस्वीकार अक्षम करें |
| `--no-block` | ब्लॉक अक्षम करें |
| `--no-unblock` | अनब्लॉक अक्षम करें |
| `--no-enable` | सक्षम करना अक्षम करें |
| `--no-disable` | अक्षम करना अक्षम करें |
| `--no-toggle` | टॉगल अक्षम करें |
| `--no-switch` | स्विच अक्षम करें |
| `--no-select` | चयन अक्षम करें |
| `--no-deselect` | अचयनित करना अक्षम करें |
| `--no-check` | चेक अक्षम करें |
| `--no-uncheck` | अनचेक अक्षम करें |
| `--no-mark` | मार्क अक्षम करें |
| `--no-unmark` | अनमार्क अक्षम करें |
| `--no-flag` | फ़्लैग अक्षम करें |
| `--no-unflag` | अनफ़्लैग अक्षम करें |
| `--no-lock` | लॉक अक्षम करें |
| `--no-unlock` | अनलॉक अक्षम करें |
| `--no-freeze` | फ़्रीज़ अक्षम करें |
| `--no-unfreeze` | अनफ़्रीज़ अक्षम करें |
| `--no-pause` | पॉज़ अक्षम करें |
| `--no-resume` | रिज़्यूम अक्षम करें |
| `--no-suspend` | सस्पेंड अक्षम करें |
| `--no-wake` | वेक अक्षम करें |
| `--no-sleep` | स्लीप अक्षम करें |
| `--no-wait` | प्रतीक्षा अक्षम करें |
| `--no-timeout` | टाइमआउट अक्षम करें |
| `--no-retry` | पुनः प्रयास अक्षम करें |
| `--no-abort` | निरस्त करना अक्षम करें |
| `--no-cancel` | रद्द करना अक्षम करें |
| `--no-kill` | किल अक्षम करें |
| `--no-terminate` | समाप्त करना अक्षम करें |
| `--no-destroy` | नष्ट करना अक्षम करें |
| `--no-drop` | ड्रॉप अक्षम करें |
| `--no-truncate` | ट्रंकेट अक्षम करें |
| `--no-flush` | फ़्लश अक्षम करें |
| `--no-drain` | ड्रेन अक्षम करें |
| `--no-close` | बंद करना अक्षम करें |
| `--no-open` | खोलना अक्षम करें |
| `--no-shutdown` | शटडाउन अक्षम करें |
| `--no-reboot` | रीबूट अक्षम करें |
| `--no-poweroff` | पावर ऑफ़ अक्षम करें |
| `--no-halt` | हॉल्ट अक्षम करें |
| `--no-exit` | निकास अक्षम करें |
| `--no-quit` | छोड़ना अक्षम करें |
| `--no-escape` | एस्केप अक्षम करें |
| `--no-abort` | निरस्त करना अक्षम करें |
| `--no-fail` | विफलता अक्षम करें |
| `--no-succeed` | सफलता अक्षम करें |
| `--no-pass` | पास अक्षम करें |
| `--no-skip` | छोड़ना अक्षम करें |
| `--no-ignore` | अनदेखा करना अक्षम करें |
| `--no-warn` | चेतावनी अक्षम करें |
| `--no-error` | त्रुटि अक्षम करें |
| `--no-fatal` | घातक अक्षम करें |
| `--no-panic` | पैनिक अक्षम करें |
| `--no-crash` | क्रैश अक्षम करें |
| `--no-hang` | हैंग अक्षम करें |
| `--no-stall` | स्टॉल अक्षम करें |
| `--no-freeze` | फ़्रीज़ अक्षम करें |
| `--no-deadlock` | डेडलॉक अक्षम करें |
| `--no-livelock` | लाइवलॉक अक्षम करें |
| `--no-race` | रेस अक्षम करें |
| `--no-leak` | लीक अक्षम करें |
| `--no-overflow` | ओवरफ़्लो अक्षम करें |
| `--no-underflow` | अंडरफ़्लो अक्षम करें |
| `--no-corrupt` | भ्रष्टाचार अक्षम करें |
| `--no-inject` | इंजेक्ट अक्षम करें |
| `--no-exploit` | एक्सप्लॉइट अक्षम करें |
| `--no-attack` | हमला अक्षम करें |
| `--no-defend` | रक्षा अक्षम करें |
| `--no-protect` | सुरक्षा अक्षम करें |
| `--no-detect` | पता लगाना अक्षम करें |
| `--no-prevent` | रोकना अक्षम करें |
| `--no-mitigate` | शमन अक्षम करें |
| `--no-remediate` | उपचार अक्षम करें |
| `--no-recover` | पुनर्प्राप्ति अक्षम करें |
| `--no-restore` | पुनर्स्थापित करना अक्षम करें |
| `--no-backup` | बैकअप अक्षम करें |
| `--no-archive` | संग्रह अक्षम करें |
| `--no-compress` | संपीड़ित करना अक्षम करें |
| `--no-decompress` | विसंपीड़ित करना अक्षम करें |
| `--no-encrypt` | एन्क्रिप्ट अक्षम करें |
| `--no-decrypt` | डिक्रिप्ट अक्षम करें |
| `--no-sign` | हस्ताक्षर अक्षम करें |
| `--no-verify` | सत्यापन अक्षम करें |
| `--no-hash` | हैश अक्षम करें |
| `--no-checksum` | चेकसम अक्षम करें |
| `--no-digest` | डाइजेस्ट अक्षम करें |
| `--no-fingerprint` | फ़िंगरप्रिंट अक्षम करें |
| `--no-scan` | स्कैन अक्षम करें |
| `--no-probe` | प्रोब अक्षम करें |
| `--no-enumerate` | गणना अक्षम करें |
| `--no-discover` | खोज अक्षम करें |
| `--no-map` | मैप अक्षम करें |
| `--no-crawl` | क्रॉल अक्षम करें |
| `--no-spider` | स्पाइडर अक्षम करें |
| `--no-fuzz` | फ़ज़ अक्षम करें |
| `--no-brute` | ब्रूट अक्षम करें |
| `--no-inject` | इंजेक्ट अक्षम करें |
| `--no-exploit` | एक्सप्लॉइट अक्षम करें |
| `--no-payload` | पेलोड अक्षम करें |
| `--no-shell` | शेल अक्षम करें |
| `--no-reverse` | रिवर्स अक्षम करें |
| `--no-bind` | बाइंड अक्षम करें |
| `--no-tunnel` | टनल अक्षम करें |
| `--no-proxy` | प्रॉक्सी अक्षम करें |
| `--no-pivot` | पिवट अक्षम करें |
| `--no-escalate` | एस्केलेट अक्षम करें |
| `--no-privilege` | विशेषाधिकार अक्षम करें |
| `--no-persist` | पर्सिस्ट अक्षम करें |
| `--no-exfiltrate` | एक्सफ़िल्ट्रेट अक्षम करें |
| `--no-lateral` | लेटरल अक्षम करें |
| `--no-move` | मूव अक्षम करें |
| `--no-copy` | कॉपी अक्षम करें |
| `--no-transfer` | स्थानांतरण अक्षम करें |
| `--no-upload` | अपलोड अक्षम करें |
| `--no-download` | डाउनलोड अक्षम करें |
| `--no-sync` | सिंक अक्षम करें |
| `--no-mirror` | मिरर अक्षम करें |
| `--no-replicate` | प्रतिकृति अक्षम करें |
| `--no-distribute` | वितरित करना अक्षम करें |
| `--no-broadcast` | प्रसारण अक्षम करें |
| `--no-multicast` | मल्टीकास्ट अक्षम करें |
| `--no-unicast` | यूनिकास्ट अक्षम करें |
| `--no-anycast` | एनीकास्ट अक्षम करें |
| `--no-route` | रूट अक्षम करें |
| `--no-switch` | स्विच अक्षम करें |
| `--no-bridge` | ब्रिज अक्षम करें |
| `--no-gateway` | गेटवे अक्षम करें |
| `--no-firewall` | फ़ायरवॉल अक्षम करें |
| `--no-nat` | NAT अक्षम करें |
| `--no-dhcp` | DHCP अक्षम करें |
| `--no-dns` | DNS अक्षम करें |
| `--no-http` | HTTP अक्षम करें |
| `--no-https` | HTTPS अक्षम करें |
| `--no-ftp` | FTP अक्षम करें |
| `--no-sftp` | SFTP अक्षम करें |
| `--no-ssh` | SSH अक्षम करें |
| `--no-telnet` | टेलनेट अक्षम करें |
| `--no-smtp` | SMTP अक्षम करें |
| `--no-pop3` | POP3 अक्षम करें |
| `--no-imap` | IMAP अक्षम करें |
| `--no-snmp` | SNMP अक्षम करें |
| `--no-ldap` | LDAP अक्षम करें |
| `--no-kerberos` | Kerberos अक्षम करें |
| `--no-radius` | RADIUS अक्षम करें |
| `--no-tacacs` | TACACS अक्षम करें |
| `--no-ntp` | NTP अक्षम करें |
| `--no-syslog` | सिसलॉग अक्षम करें |
| `--no-netflow` | नेटफ़्लो अक्षम करें |
| `--no-sflow` | sFlow अक्षम करें |
| `--no-ipfix` | IPFIX अक्षम करें |
| `--no-pcap` | PCAP अक्षम करें |
| `--no-tcpdump` | tcpdump अक्षम करें |
| `--no-wireshark` | Wireshark अक्षम करें |
| `--no-nmap` | Nmap अक्षम करें |
| `--no-masscan` | Masscan अक्षम करें |
| `--no-zmap` | ZMap अक्षम करें |
| `--no-metasploit` | Metasploit अक्षम करें |
| `--no-burp` | Burp अक्षम करें |
| `--no-owasp` | OWASP अक्षम करें |
| `--no-zap` | ZAP अक्षम करें |
| `--no-nessus` | Nessus अक्षम करें |
| `--no-openvas` | OpenVAS अक्षम करें |
| `--no-qualys` | Qualys अक्षम करें |
| `--no-rapid7` | Rapid7 अक्षम करें |
| `--no-tenable` | Tenable अक्षम करें |
| `--no-snyk` | Snyk अक्षम करें |
| `--no-trivy` | Trivy अक्षम करें |
| `--no-grype` | Grype अक्षम करें |
| `--no-clair` | Clair अक्षम करें |
| `--no-anchore` | Anchore अक्षम करें |
| `--no-sonarqube` | SonarQube अक्षम करें |
| `--no-fortify` | Fortify अक्षम करें |
| `--no-checkmarx` | Checkmarx अक्षम करें |
| `--no-veracode` | Veracode अक्षम करें |
| `--no-coverity` | Coverity अक्षम करें |
| `--no-blackduck` | Black Duck अक्षम करें |
| `--no-whitehat` | WhiteHat अक्षम करें |
| `--no-trustwave` | Trustwave अक्षम करें |
| `--no-rapid7` | Rapid7 अक्षम करें |
| `--no-rsa` | RSA अक्षम करें |
| `--no-arcsight` | ArcSight अक्षम करें |
| `--no-splunk` | Splunk अक्षम करें |
| `--no-elk` | ELK अक्षम करें |
| `--no-elastic` | Elastic अक्षम करें |
| `--no-logstash` | Logstash अक्षम करें |
| `--no-kibana` | Kibana अक्षम करें |
| `--no-beats` | Beats अक्षम करें |
| `--no-graylog` | Graylog अक्षम करें |
| `--no-syslog-ng` | syslog-ng अक्षम करें |
| `--no-rsyslog` | rsyslog अक्षम करें |
| `--no-fluentd` | Fluentd अक्षम करें |
| `--no-fluentbit` | Fluent Bit अक्षम करें |
| `--no-filebeat` | Filebeat अक्षम करें |
| `--no-metricbeat` | Metricbeat अक्षम करें |
| `--no-packetbeat` | Packetbeat अक्षम करें |
| `--no-auditbeat` | Auditbeat अक्षम करें |
| `--no-heartbeat` | Heartbeat अक्षम करें |
| `--no-journalbeat` | Journalbeat अक्षम करें |
| `--no-winlogbeat` | Winlogbeat अक्षम करें |
| `--no-functionbeat` | Functionbeat अक्षम करें |
| `--no-prometheus` | Prometheus अक्षम करें |
| `--no-grafana` | Grafana अक्षम करें |
| `--no-influxdb` | InfluxDB अक्षम करें |
| `--no-graphite` | Graphite अक्षम करें |
| `--no-statsd` | StatsD अक्षम करें |
| `--no-collectd` | collectd अक्षम करें |
| `--no-telegraf` | Telegraf अक्षम करें |
| `--no-nagios` | Nagios अक्षम करें |
| `--no-zabbix` | Zabbix अक्षम करें |
| `--no-icinga` | Icinga अक्षम करें |
| `--no-sensu` | Sensu अक्षम करें |
| `--no-riemann` | Riemann अक्षम करें |
| `--no-netdata` | Netdata अक्षम करें |
| `--no-glances` | Glances अक्षम करें |
| `--no-htop` | htop अक्षम करें |
| `--no-top` | top अक्षम करें |
| `--no-ps` | ps अक्षम करें |
| `--no-pgrep` | pgrep अक्षम करें |
| `--no-pkill` | pkill अक्षम करें |
| `--no-killall` | killall अक्षम करें |
| `--no-xkill` | xkill अक्षम करें |
| `--no-kill` | kill अक्षम करें |
| `--no-signal` | सिग्नल अक्षम करें |
| `--no-trap` | ट्रैप अक्षम करें |
| `--no-handle` | हैंडल अक्षम करें |
| `--no-catch` | कैच अक्षम करें |
| `--no-throw` | थ्रो अक्षम करें |
| `--no-raise` | रेज़ अक्षम करें |
| `--no-except` | अपवाद अक्षम करें |
| `--no-finally` | अंत में अक्षम करें |
| `--no-try` | प्रयास अक्षम करें |
| `--no-assert` | दावा अक्षम करें |
| `--no-test` | परीक्षण अक्षम करें |
| `--no-mock` | मॉक अक्षम करें |
| `--no-stub` | स्टब अक्षम करें |
| `--no-spy` | स्पाई अक्षम करें |
| `--no-fake` | नकली अक्षम करें |
| `--no-dummy` | डमी अक्षम करें |
| `--no-placeholder` | प्लेसहोल्डर अक्षम करें |
| `--no-fixture` | फ़िक्स्चर अक्षम करें |
| `--no-factory` | फ़ैक्टरी अक्षम करें |
| `--no-builder` | बिल्डर अक्षम करें |
| `--no-singleton` | सिंगलटन अक्षम करें |
| `--no-prototype` | प्रोटोटाइप अक्षम करें |
| `--no-clone` | क्लोन अक्षम करें |
| `--no-copy` | कॉपी अक्षम करें |
| `--no-deep` | गहरा अक्षम करें |
| `--no-shallow` | उथला अक्षम करें |
| `--no-merge` | मर्ज अक्षम करें |
| `--no-patch` | पैच अक्षम करें |
| `--no-diff` | डिफ़ अक्षम करें |
| `--no-compare` | तुलना अक्षम करें |
| `--no-equal` | समान अक्षम करें |
| `--no-match` | मिलान अक्षम करें |
| `--no-search` | खोज अक्षम करें |
| `--no-find` | खोजें अक्षम करें |
| `--no-locate` | पता लगाएं अक्षम करें |
| `--no-which` | which अक्षम करें |
| `--no-whereis` | whereis अक्षम करें |
| `--no-type` | type अक्षम करें |
| `--no-command` | command अक्षम करें |
| `--no-builtin` | builtin अक्षम करें |
| `--no-alias` | उपनाम अक्षम करें |
| `--no-function` | फ़ंक्शन अक्षम करें |
| `--no-variable` | चर अक्षम करें |
| `--no-export` | निर्यात अक्षम करें |
| `--no-unset` | अनसेट अक्षम करें |
| `--no-env` | env अक्षम करें |
| `--no-setenv` | setenv अक्षम करें |
| `--no-printenv` | printenv अक्षम करें |
| `--no-source` | स्रोत अक्षम करें |
| `--no-eval` | eval अक्षम करें |
| `--no-exec` | exec अक्षम करें |
| `--no-system` | system अक्षम करें |
| `--no-popen` | popen अक्षम करें |
| `--no-subprocess` | सबप्रोसेस अक्षम करें |
| `--no-fork` | फ़ोर्क अक्षम करें |
| `--no-spawn` | स्पॉन अक्षम करें |
| `--no-thread` | थ्रेड अक्षम करें |
| `--no-process` | प्रक्रिया अक्षम करें |
| `--no-daemon` | डेमन अक्षम करें |
| `--no-service` | सेवा अक्षम करें |
| `--no-socket` | सॉकेट अक्षम करें |
| `--no-pipe` | पाइप अक्षम करें |
| `--no-fifo` | FIFO अक्षम करें |
| `--no-queue` | कतार अक्षम करें |
| `--no-stack` | स्टैक अक्षम करें |
| `--no-heap` | हीप अक्षम करें |
| `--no-buffer` | बफ़र अक्षम करें |
| `--no-stream` | स्ट्रीम अक्षम करें |
| `--no-file` | फ़ाइल अक्षम करें |
| `--no-directory` | निर्देशिका अक्षम करें |
| `--no-path` | पथ अक्षम करें |
| `--no-link` | लिंक अक्षम करें |
| `--no-symlink` | सिमलिंक अक्षम करें |
| `--no-hardlink` | हार्डलिंक अक्षम करें |
| `--no-mount` | माउंट अक्षम करें |
| `--no-umount` | अनमाउंट अक्षम करें |
| `--no-fstab` | fstab अक्षम करें |
| `--no-mtab` | mtab अक्षम करें |
| `--no-partition` | विभाजन अक्षम करें |
| `--no-format` | फ़ॉर्मेट अक्षम करें |
| `--no-fsck` | fsck अक्षम करें |
| `--no-mkfs` | mkfs अक्षम करें |
| `--no-dd` | dd अक्षम करें |
| `--no-mount` | माउंट अक्षम करें |
| `--no-chroot` | chroot अक्षम करें |
| `--no-namespace` | नेमस्पेस अक्षम करें |
| `--no-cgroup` | cgroup अक्षम करें |
| `--no-container` | कंटेनर अक्षम करें |
| `--no-docker` | Docker अक्षम करें |
| `--no-podman` | Podman अक्षम करें |
| `--no-kubernetes` | Kubernetes अक्षम करें |
| `--no-k8s` | K8s अक्षम करें |
| `--no-helm` | Helm अक्षम करें |
| `--no-kustomize` | Kustomize अक्षम करें |
| `--no-istio` | Istio अक्षम करें |
| `--no-linkerd` | Linkerd अक्षम करें |
| `--no-consul` | Consul अक्षम करें |
| `--no-vault` | Vault अक्षम करें |
| `--no-nomad` | Nomad अक्षम करें |
| `--no-terraform` | Terraform अक्षम करें |
| `--no-ansible` | Ansible अक्षम करें |
| `--no-puppet` | Puppet अक्षम करें |
| `--no-chef` | Chef अक्षम करें |
| `--no-salt` | Salt अक्षम करें |
| `--no-saltstack` | SaltStack अक्षम करें |
| `--no-cloudformation` | CloudFormation अक्षम करें |
| `--no-arm` | ARM अक्षम करें |
| `--no-pulumi` | Pulumi अक्षम करें |
| `--no-cdk` | CDK अक्षम करें |
| `--no-serverless` | सर्वरलेस अक्षम करें |
| `--no-lambda` | Lambda अक्षम करें |
| `--no-azure` | Azure अक्षम करें |
| `--no-aws` | AWS अक्षम करें |
| `--no-gcp` | GCP अक्षम करें |
| `--no-oci` | OCI अक्षम करें |
| `--no-ibm` | IBM अक्षम करें |
| `--no-alibaba` | Alibaba अक्षम करें |
| `--no-digitalocean` | DigitalOcean अक्षम करें |
| `--no-linode` | Linode अक्षम करें |
| `--no-vultr` | Vultr अक्षम करें |
| `--no-hetzner` | Hetzner अक्षम करें |
| `--no-ovh` | OVH अक्षम करें |
| `--no-scaleway` | Scaleway अक्षम करें |
| `--no-upcloud` | UpCloud अक्षम करें |
| `--no-packets` | Packets अक्षम करें |
| `--no-equ` | Equinix अक्षम करें |
| `--no-equinix` | Equinix अक्षम करें |
| `--no-metal` | मेटल अक्षम करें |
| `--no-bare` | बेयर अक्षम करें |
| `--no-cloud` | क्लाउड अक्षम करें |
| `--no-hybrid` | हाइब्रिड अक्षम करें |
| `--no-onprem` | ऑन-प्रेम अक्षम करें |
| `--no-edge` | एज अक्षम करें |
| `--no-fog` | फ़ॉग अक्षम करें |
| `--no-mist` | मिस्ट अक्षम करें |
| `--no-dew` | ड्यू अक्षम करें |
| `--no-ice` | आइस अक्षम करें |
| `--no-frost` | फ़्रॉस्ट अक्षम करें |
| `--no-snow` | स्नो अक्षम करें |
| `--no-rain` | रेन अक्षम करें |
| `--no-hail` | हेल अक्षम करें |
| `--no-sleet` | स्लीट अक्षम करें |
| `--no-storm` | स्टॉर्म अक्षम करें |
| `--no-thunder` | थंडर अक्षम करें |
| `--no-lightning` | लाइटनिंग अक्षम करें |
| `--```text
Applied 4 change(s)
  - added --no-install-recommends on line(s) 2  [DS029]
  - converted ADD to COPY on line(s) 3  [DL3020]
  - replaced 'USER root' with 'USER appuser' on line 5  [DS002]
  - inserted a placeholder HEALTHCHECK before line 6  [DS026]

Original saved to Dockerfile.bak
Dockerfile findings: 7 -> 2 (5 resolved)

यह जानबूझकर रूढ़िवादी है। यह बेस इमेज संस्करण नहीं चुनेगा, सीक्रेट को स्थानांतरित नहीं करेगा, किसी URL को फ़ेच करने वाले या आर्काइव को अनपैक करने वाले ADD को परिवर्तित नहीं करेगा, या किसी compose फ़ाइल को संपादित नहीं करेगा - इन्हें इसके बजाय "Needs review" के अंतर्गत रिपोर्ट किया जाता है। यह किसी ऐसी फ़ाइल को संपादित करने से भी इनकार करता है जिसमें uncommitted परिवर्तन हों, जब तक कि --force न दिया गया हो, ताकि git हमेशा उस परिवर्तन को पूर्ववत करने की स्थिति में रहे।

Documentation

GuideWhat it covers
Evaluation guide15-minute assessment, including what DockSec does not do
Exploit chainsCross-service attack paths, and their limits
Compose rule referenceAll 17 rules: what each catches, and when keeping it is reasonable
CI integrationJenkins, GitLab, Azure Pipelines, pre-commit
ExamplesTen Dockerfiles and compose stacks with their expected findings
Case studiesReal scans of official images, with the numbers

Roadmap

देखें ROADMAP.md कि DockSec किस ओर बढ़ रहा है: स्थानीय Docker daemon के बिना registry scanning, एक repo-level policy config फ़ाइल, Jenkins/GitLab/Azure DevOps टेम्पलेट्स, एक आधिकारिक container image, Kubernetes और Helm scanning, और बहुत कुछ। प्राथमिकताओं पर प्रतिक्रिया और वोटों का स्वागत है issues और OWASP Slack पर।


Contributing

DockSec समुदाय के योगदान पर फलता-फूलता है। चाहे आप एक डेवलपर, डिज़ाइनर, या सुरक्षा उत्साही हों, शामिल होने के कई तरीके हैं:

  • Code Contributions: बग ठीक करें या नई सुविधाएँ जोड़ें।
  • Documentation: गाइड में सुधार करें या ट्यूटोरियल बनाएँ।
  • Issue Reporting: बग की पहचान करें और रिपोर्ट करें।
  • Feedback: अपना अनुभव और सुझाव साझा करें।

शुरू करने के लिए, हमारे Contributing Guidelines, Code of Conduct, और Sponsorship Guide देखें।


Leaders and Community

DockSec का नेतृत्व एक समर्पित टीम करती है जो container security को सुलभ बनाने के लिए प्रतिबद्ध है:

हमें यहाँ खोजें:


If DockSec helps you, star the repo to help others discover it.
Built by Advait Patel and the OWASP community.

श्रेणियाँ