
Go सुरक्षा जाँचकर्ता
Go AST और SSA कोड प्रतिनिधित्व को स्कैन करके स्रोत कोड में सुरक्षा समस्याओं का निरीक्षण करता है।
Apache License, Version 2.0 ("लाइसेंस") के अंतर्गत लाइसेंस प्राप्त। आप लाइसेंस का अनुपालन किए बिना इस फ़ाइल का उपयोग नहीं कर सकते। आप लाइसेंस की एक प्रति यहाँ प्राप्त कर सकते हैं।
आप gosec को GitHub action के रूप में निम्नानुसार चला सकते हैं:
@master के साथ संस्करणित टैग का उपयोग करें जो नवीनतम स्थिर रिलीज़ पर पिन किया गया है। यह एक स्थिर व्यवहार प्रदान करेगा।
name: Run Gosec
on:
push:
branches:
- master
pull_request:
branches:
- master
jobs:
tests:
runs-on: ubuntu-latest
env:
GO111MODULE: on
steps:
- name: Checkout Source
uses: actions/checkout@v3
- name: Run Gosec Security Scanner
uses: securego/gosec@master
with:
args: ./...
यदि आपका प्रोजेक्ट निजी Go मॉड्यूल आयात करता है, तो आपको
प्रमाणीकरण कॉन्फ़िगर करना होगा ताकि gosec निर्भरताओं को
प्राप्त कर सके। अपने वर्कफ़्लो में निम्नलिखित एनवायरनमेंट
वेरिएबल्स सेट करें:
GOPRIVATE: मॉड्यूल पाथ प्रीफ़िक्स की अल्पविराम से
अलग की गई सूची जिन्हें निजी माना जाना चाहिए
(उदा., github.com/your-org/*)।GITHUB_AUTHENTICATION_TOKEN: आपके निजी रिपॉज़िटरीज़ तक
पढ़ने की पहुँच वाला एक GitHub टोकन।name: Run Gosec
on:
push:
branches:
- master
pull_request:
branches:
- master
jobs:
tests:
runs-on: ubuntu-latest
env:
GO111MODULE: on
GOPRIVATE: github.com/your-org/*
GITHUB_AUTHENTICATION_TOKEN: ${{ secrets.PRIVATE_REPO_TOKEN }}
steps:
- name: Checkout Source
uses: actions/checkout@v3
- name: Run Gosec Security Scanner
uses: securego/gosec@v2
with:
args: ./...
आप डेटा को SARIF फ़ाइलों के रूप में अपलोड करके GitHub कोड स्कैनिंग के साथ तृतीय-पक्ष कोड विश्लेषण टूल्स को एकीकृत कर सकते हैं।
वर्कफ़्लो एक GitHub action वर्कफ़्लो में एक चरण के रूप में gosec चलाने का उदाहरण दिखाता है जो results.sarif फ़ाइल आउटपुट करता है। फिर वर्कफ़्लो upload-sarif action का उपयोग करके results.sarif फ़ाइल को GitHub पर अपलोड करता है।
name: "Security Scan"
# Run workflow each time code is pushed to your repository and on a schedule.
# The scheduled workflow runs every at 00:00 on Sunday UTC time.
on:
push:
schedule:
- cron: '0 0 * * 0'
jobs:
tests:
runs-on: ubuntu-latest
env:
GO111MODULE: on
steps:
- name: Checkout Source
uses: actions/checkout@v3
- name: Run Gosec Security Scanner
uses: securego/gosec@v2
with:
# we let the report trigger content trigger a failure using the GitHub Security features.
args: '-no-fail -fmt sarif -out results.sarif ./...'
- name: Upload SARIF file
uses: github/codeql-action/upload-sarif@v2
with:
# Path to SARIF file relative to the root of the repository
sarif_file: results.sarif
goanalysis पैकेज एक
golang.org/x/tools/go/analysis.Analyzer
प्रदान करता है, जो मानक Go
विश्लेषण इंटरफ़ेस का समर्थन करने वाले टूल्स के साथ एकीकरण के लिए है, जैसे कि Bazel का
nogo
फ़्रेमवर्क:
nogo(
name = "nogo",
deps = [
"@com_github_securego_gosec_v2//goanalysis",
# add more analyzers as needed
],
visibility = ["//visibility:public"],
)
gosec के लिए Go 1.25 या नया संस्करण आवश्यक है।
go install github.com/securego/gosec/v2/cmd/gosec@latest
# Scan all packages in current module
gosec ./...
# Write JSON report
gosec -fmt json -out results.json ./...
# Write SARIF report for code scanning
gosec -fmt sarif -out results.sarif ./...
0: स्कैन बिना किसी अनसप्रेस्ड फाइंडिंग/त्रुटि के पूरा हुआ1: कम से कम एक अनसप्रेस्ड फाइंडिंग या प्रोसेसिंग त्रुटि0 लौटाने के लिए -no-fail का उपयोग करेंGosec को केवल नियमों का एक उपसमूह चलाने, कुछ फ़ाइल पथों को
बाहर करने, और विभिन्न प्रारूपों में रिपोर्ट तैयार करने के लिए
कॉन्फ़िगर किया जा सकता है। डिफ़ॉल्ट रूप से सभी नियम दिए गए
इनपुट फ़ाइलों पर चलाए जाएंगे। वर्तमान निर्देशिका से पुनरावर्ती
रूप से स्कैन करने के लिए आप इनपुट आर्ग्युमेंट के रूप में ./...
प्रदान कर सकते हैं।
gosec में इन श्रेणियों के नियम शामिल हैं:
G1xx: सामान्य सुरक्षित कोडिंग समस्याएँ (उदाहरण के लिए हार्डकोडेड
क्रेडेंशियल, असुरक्षित उपयोग, HTTP हार्डनिंग, कुकी सुरक्षा)G2xx: क्वेरी/टेम्पलेट/कमांड निर्माण में इंजेक्शन जोखिमG3xx: फ़ाइल और पथ प्रबंधन जोखिम (अनुमतियाँ, ट्रैवर्सल,
अस्थायी फ़ाइलें, आर्काइव निष्कर्षण)G4xx: क्रिप्टो और TLS कमज़ोरियाँG5xx: ब्लॉकलिस्टेड इम्पोर्टG6xx: Go-विशिष्ट शुद्धता/सुरक्षा जाँच (उदाहरण के लिए
रेंज एलियासिंग और स्लाइस बाउंड्स)G7xx: टेन्ट एनालिसिस नियम (SQL इंजेक्शन, कमांड
इंजेक्शन, पथ ट्रैवर्सल, SSRF, XSS, लॉग, SMTP इंजेक्शन,
SSTI, असुरक्षित डीसेरियलाइज़ेशन, और ओपन रीडायरेक्ट)पूरी सूची, नियम विवरण, और प्रति-नियम कॉन्फ़िगरेशन के लिए, RULES.md देखें।