
Scan एक मुफ्त और ओपन सोर्स DevSecOps उपकरण है जो आपके अनुप्रयोगों और उनकी निर्भरताओं की स्थैतिक विश्लेषण आधारित सुरक्षा जाँच करने के लिए है। CI और Git के अनुकूल।
███████╗ ██████╗ █████╗ ███╗ ██╗
██╔════╝██╔════╝██╔══██╗████╗ ██║
███████╗██║ ███████║██╔██╗ ██║
╚════██║██║ ██╔══██║██║╚██╗██║
███████║╚██████╗██║ ██║██║ ╚████║
╚══════╝ ╚═════╝╚═╝ ╚═╝╚═╝ ╚═══╝
Scan आधुनिक DevOps टीमों के लिए एक मुफ़्त ओपन-सोर्स सुरक्षा उपकरण है। एकीकृत मल्टी-स्कैनर-आधारित डिज़ाइन के साथ, Scan आपके एप्लिकेशन और इंफ्रास्ट्रक्चर कोड में विभिन्न प्रकार की सुरक्षा खामियों का एक ही तेज़ स्कैन में पता लगा सकता है, बिना किसी रिमोट सर्वर की आवश्यकता के। Scan को वर्कफ़्लो इंटीग्रेशन के लिए विशेष रूप से बनाया गया है, जिसमें ऑटोमैटिक बिल्ड ब्रेकर, रिज़ल्ट बेसलाइन और PR सारांश टिप्पणियाँ जैसी शानदार सुविधाएँ हैं। Scan उत्पाद Apache-2.0 लाइसेंस के तहत ओपन-सोर्स हैं।
-o reports/source-ruby-report.json के साथ निर्यात करें।कृपया कॉन्फ़िगरेशन और CI/CD इंटीग्रेशन विकल्पों के बारे में जानने के लिए स्कैन के आधिकारिक दस्तावेज़ीकरण साइट पर जाएँ। हमारे पास मुद्दों और सहायता के लिए एक समर्पित डिस्कॉर्ड चैनल भी है।
scan CI के साथ उपयोग के लिए आदर्श है और स्थानीय विकास के लिए प्री-कमिट हुक के रूप में भी। Scan को एक कंटेनर इमेज shiftleft/scan और समर्थित Linux वितरणों के लिए AppImage के रूप में वितरित किया जाता है।
नीचे एक आसान एक-लाइनर कमांड है:
sh <(curl https://slscan.sh)
उपरोक्त कमांड केवल नीचे दिए गए docker run कमांड को लागू करता है।
docker run --rm -e "WORKSPACE=${PWD}" -v $PWD:/app shiftleft/scan scan --build
Windows पर, टर्मिनल के अनुसार कमांड थोड़ा बदल जाता है।
cmd
docker run --rm -e "WORKSPACE=%cd%" -e "GITHUB_TOKEN=%GITHUB_TOKEN%" -v "%cd%:/app:cached" shiftleft/scan scan
PowerShell और PowerShell Core
docker run --rm -e "WORKSPACE=$(pwd)" -e "GITHUB_TOKEN=$env:GITHUB_TOKEN" -v "$(pwd):/app:cached" shiftleft/scan scan
WSL Bash
docker run --rm -e "WORKSPACE=${PWD}" -e "GITHUB_TOKEN=${GITHUB_TOKEN}" -v "$PWD:/app:cached" shiftleft/scan scan
git-bash
docker run --rm -e "WORKSPACE=${PWD}" -e "GITHUB_TOKEN=${GITHUB_TOKEN}" -v "/$PWD:/app:cached" shiftleft/scan scan
git-bash के लिए $PWD से पहले स्लैश (/) जोड़ना न भूलें!
एकाधिक प्रोजेक्ट स्कैन करें
docker run --rm -e "WORKSPACE=${PWD}" -v $PWD:/app shiftleft/scan scan --src /app --type credscan,nodejs,python,yaml --out_dir /app/reports
Java प्रोजेक्ट स्कैन करें
Java और JVM भाषा-आधारित प्रोजेक्ट के लिए, dev और CI वर्कफ़्लो में sast-scan का उपयोग करने से पहले प्रोजेक्ट को संकलित करना महत्वपूर्ण है।
docker run --rm -e "WORKSPACE=${PWD}" -v ~/.m2:/.m2 -v <source path>:/app shiftleft/scan scan --src /app --type java
# ग्रेडल प्रोजेक्ट के लिए
docker run --rm -e "WORKSPACE=${PWD}" -v ~/.gradle:/.gradle -v <source path>:/app shiftleft/scan scan --src /app --type java
स्वचालित प्रोजेक्ट पहचान
बेझिझक --type को छोड़कर स्वचालित पहचान सक्षम करें। या यदि प्रोजेक्ट में कई प्रकार हैं तो अल्पविराम से अलग किए गए मान पास करें।
slscan के साथ कंटेनर इमेज स्कैन करना अब संभव है। अनुशंसित दृष्टिकोण यह है कि पहले docker या podman save कमांड का उपयोग करके कंटेनर इमेज को निर्यात करें, फिर .tar फ़ाइल के साथ scan को लागू करें।
docker pull shiftleft/scan-slim:latest
docker save -o scanslim.tar shiftleft/scan-slim:latest
# podman save --format oci-archive -o scanslim.tar shiftleft/scan-slim:latest
docker run --rm -e "WORKSPACE=${PWD}" -v $PWD:/app shiftleft/scan scan --src /app/scanslim.tar -o /app/reports --type docker
वैकल्पिक रूप से, विश्लेषण से पहले scan को कंटेनर इमेज खींचने देना संभव है। हालाँकि, इसके लिए आपके docker या podman डेमॉन सॉकेट को उजागर करने की आवश्यकता होती है और इसलिए अनुशंसित नहीं है। यदि आप साहसी महसूस कर रहे हैं तो आप docker run कमांड में नीचे दिए गए पैरामीटर पास करके इसे आज़मा सकते हैं।
-e "DOCKER_HOST=unix:/var/run/docker.sock:" -v "/var/run/docker.sock:/var/run/docker.sock"
उदाहरण: कंटेनर इमेज shiftleft/scan-slim को स्कैन करने के लिए:
docker run --rm -e "WORKSPACE=$(pwd)" -e "DOCKER_HOST=unix:/var/run/docker.sock:" \
-v "/var/run/docker.sock:/var/run/docker.sock" \
-v "$(pwd):/app" shiftleft/scan scan -t docker -i shiftleft/scan-slim
उदाहरण: कंटेनर इमेज redmine@sha256:a5c5f8a64a0d9a436a0a6941bc3fb156be0c89996add834fe33b66ebeed2439e को स्कैन करने के लिए:
docker run --rm -e "WORKSPACE=$(pwd)" -e "DOCKER_HOST=unix:/var/run/docker.sock:" \
-v "/var/run/docker.sock:/var/run/docker.sock" \
-v "$(pwd):/app" shiftleft/scan scan -t docker -i redmine@sha256:a5c5f8a64a0d9a436a0a6941bc3fb156be0c89996add834fe33b66ebeed2439e
वही उदाहरण podman के साथ
podman run --rm -e "WORKSPACE=$(pwd)" -e "DOCKER_HOST=unix:/run/user/1000/podman/podman.sock:" \
-v "/run/user/1000:/run/user/1000" \
-v "$(pwd):/app" shiftleft/scan scan -t docker -i redmine@sha256:a5c5f8a64a0d9a436a0a6941bc3fb156be0c89996add834fe33b66ebeed2439e
--out_dir के लिए निर्दिष्ट निर्देशिका में रिपोर्ट तैयार की जाएंगी। उपरोक्त उदाहरणों में, इसे reports पर सेट किया गया है जो स्रोत कोड रूट निर्देशिका के अंतर्गत एक निर्देशिका होगी।
कुछ रिपोर्टों को SARIF नामक एक मानक में परिवर्तित किया जाएगा। ऐसी रिपोर्ट .sarif एक्सटेंशन के साथ समाप्त होंगी। Sarif फ़ाइलों को खोलने और देखने के लिए एक व्यूअर की आवश्यकता होती है जैसे:
कई scan इमेज CI पाइपलाइन के माध्यम से quay.io पर मिरर की जाती हैं। बस इमेज नाम में quay.io/ उपसर्ग जोड़ें। नीचे उपलब्ध मिरर दिए गए हैं।
Scan का उपयोग कई संगठनों और 1000 से अधिक ओपनसोर्स प्रोजेक्ट द्वारा किया जाता है। कुछ उल्लेखनीय संगठन जो Scan का उपयोग करते हैं:
अपने संगठन का नाम यहाँ शामिल करने के लिए हमें PR भेजें। आप सोशल मीडिया पर हैशटैग #slscan का उपयोग करके Scan के लिए अपना समर्थन भी दिखा सकते हैं।
| प्रोग्रामिंग भाषा | उपकरण |
|---|
| ansible | ansible-lint |
| apex | pmd |
| arm | checkov |
| aws | checkov |
| bash | shellcheck |
| bom | cdxgen |
| credscan | gitleaks |
| depscan | dep-scan |
| dockerfile | checkov |
| go | gosec, staticcheck |
| groovy | find-sec-bugs |
| java | cdxgen, gradle, find-sec-bugs, pmd |
| jsp | pmd, find-sec-bugs |
| json | jq, jsondiff, jsonschema |
| kotlin | detekt, find-sec-bugs |
| scala | find-sec-bugs |
| kubernetes | checkov, kubesec, kube-score |
| nodejs | cdxgen, yarn, rush |
| php | psalm, phpstan (only ide) |
| plsql | pmd |
| python | cfg-scan (1), bandit, cdxgen |
| ruby | brakeman (2), dep-scan |
| rust | cdxgen |
| serverless | checkov |
| terraform | checkov, tfsec |
| Visual Force (vf) | pmd |
| Apache Velocity (vm) | pmd |
| yaml | yamllint |
| docker/container image | dep-scan |