Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
gosec — مدقق أمان Go | Kitploit
أدوات/GitHubGitHub/securego/gosec
تحليل الشفرة الثابت (SAST)تحليل الثغرات الأمنيةتحليل الكودDevSecOps
GitHubsecurego/gosec

gosec

مدقق أمان Go

عرض المستودعالموقع الإلكتروني
8.9k701منذ 10 أيامتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

gosec - مدقق أمان Go

يفحص الكود المصدري بحثًا عن مشاكل أمنية من خلال مسح تمثيل AST و SSA لكود Go.

روابط سريعة

  • إجراء GitHub
  • التثبيت المحلي
  • بداية سريعة
  • أنماط الاستخدام الشائعة
  • اختيار القواعد
  • صيغ المخرجات

الميزات

  • قواعد قائمة على الأنماط لاكتشاف المشاكل الأمنية الشائعة في كود Go
  • محللات قائمة على SSA لتحويلات الأنواع، وحدود الشرائح، ومشاكل التشفير
  • تحليل التلوث لتتبع تدفق البيانات من إدخال المستخدم إلى الدوال الخطرة (حقن SQL، حقن الأوامر، اجتياز المسار، SSRF، XSS، حقن السجلات، حقن SMTP، SSTI، إلغاء التسلسل غير الآمن، إعادة التوجيه المفتوحة)

الترخيص

مرخص بموجب رخصة أباتشي، الإصدار 2.0 ("الترخيص"). لا يجوز لك استخدام هذا الملف إلا بالامتثال للترخيص. يمكنك الحصول على نسخة من الترخيص هنا.

حالة المشروع

CII Best Practices Build Status Coverage Status GoReport GoDoc Docs Downloads GHCR Slack go-recipes

التثبيت

إجراء GitHub

يمكنك تشغيل gosec كإجراء على GitHub كما يلي:

استخدم الوسم المُرقم مع @master المثبت على أحدث إصدار مستقر. سيوفر هذا سلوكًا مستقرًا.```yaml 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: ./...

root@kitploit:~
#### فحص المشاريع ذات الوحدات الخاصة

إذا كان مشروعك يستورد وحدات Go خاصة، فأنت بحاجة إلى تكوين المصادقة حتى يتمكن `gosec` من جلب التبعيات. قم بتعيين متغيرات البيئة التالية في سير العمل الخاص بك:

- `GOPRIVATE`: قائمة مفصولة بفواصل من بادئات مسار الوحدة التي يجب اعتبارها خاصة
  (على سبيل المثال، `github.com/your-org/*`).
- `GITHUB_AUTHENTICATION_TOKEN`: رمز GitHub مع صلاحية قراءة
  لمستودعاتك الخاصة.```yaml
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: ./...

التكامل مع فحص الكود

يمكنك دمج أدوات تحليل الكود من جهات خارجية مع فحص الكود في GitHub عن طريق تحميل البيانات كملفات SARIF.

يوضح سير العمل مثالًا على تشغيل gosec كخطوة في سير عمل GitHub Action الذي يُنتج ملف results.sarif ملف. يقوم سير العمل بعد ذلك برفع ملف results.sarif إلى GitHub باستخدام إجراء upload-sarif.```yaml 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

root@kitploit:~
### تحليل Go

توفر حزمة `goanalysis`
[`golang.org/x/tools/go/analysis.Analyzer`](https://pkg.go.dev/golang.org/x/tools/go/analysis)
للتكامل مع الأدوات التي تدعم Go القياسي
واجهة التحليل، مثل إطار Bazel's
[nogo](https://github.com/bazelbuild/rules_go/blob/master/go/nogo.rst)
إطار العمل:```starlark
nogo(
    name = "nogo",
    deps = [
        "@com_github_securego_gosec_v2//goanalysis",
        # add more analyzers as needed
    ],
    visibility = ["//visibility:public"],
)

التثبيت المحلي

يتطلب gosec إصدار Go 1.25 أو أحدث.```bash go install github.com/securego/gosec/v2/cmd/gosec@latest

root@kitploit:~
## بداية سريعة```bash
# 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: وجود نتيجة واحدة على الأقل غير مكبوتة أو خطأ في المعالجة
  • استخدم -no-fail لإرجاع 0 دائمًا

الاستخدام

يمكن تكوين Gosec لتشغيل مجموعة فرعية فقط من القواعد، لاستبعاد مسارات ملفات معينة، وإنتاج تقارير بتنسيقات مختلفة. بشكل افتراضي، سيتم تشغيل جميع القواعد على ملفات الإدخال المقدمة. للمسح بشكل متكرر من الدليل الحالي، يمكنك تقديم ./... كوسيطة إدخال.

القواعد المتاحة

تتضمن Gosec قواعد عبر هذه الفئات:

  • G1xx: مشكلات الترميز الآمن العامة (على سبيل المثال بيانات اعتماد مكتوبة بشكل ثابت، استخدام غير آمن، تقوية HTTP، أمان الكوكيز)
  • G2xx: مخاطر الحقن في بناء الاستعلام/القالب/الأمر
  • G3xx: مخاطر معالجة الملفات والمسارات (الأذونات، التجوال، الملفات المؤقتة، استخراج الأرشيف)
  • G4xx: نقاط ضعف التشفير و TLS
  • G5xx: واردات مدرجة في القائمة المحظورة
  • G6xx: فحوصات الصحة/الأمان الخاصة بـ Go (على سبيل المثال، تسمية النطاق وحدود الشرائح)
  • G7xx: قواعد تحليل التلوث (حقن SQL، حقن الأوامر، تجوال المسار، SSRF، XSS، السجل، حقن SMTP، SSTI، إلغاء التسلسل غير الآمن، وإعادة التوجيه المفتوحة)

للحصول على القائمة الكاملة، أوصاف القواعد، والتكوين لكل قاعدة، انظر RULES.md.

القواعد المتقاعدة

  • G105: تدقيق استخدام math/big.Int.Exp - تم إصلاح CVE
  • G307: تأجيل طريقة ترجع خطأ - يتسبب في إزعاج أكبر من إصلاح مشكلة أمنية، على الرغم من التفاصيل الواردة في منشور المدونة

تحديد القواعد

بشكل افتراضي، ستقوم Gosec بتشغيل جميع القواعد على مسارات الملفات المقدمة. ومع ذلك، من الممكن تحديد مجموعة فرعية من القواعد لتشغيلها عبر علم -include=، أو تحديد مجموعة من القواعد لاستبعادها صراحة باستخدام علم -exclude=.```bash

Run a specific set of rules

$ gosec -include=G101,G203,G401 ./...

Run everything except for rule G303

$ gosec -exclude=G303 ./...

root@kitploit:~
### تعيين CWE

يتم تعيين كل مشكلة يتم اكتشافها بواسطة `gosec` إلى
[CWE (التعداد الضعيف الشائع)](http://cwe.mitre.org/data/index.html)
الذي يصف بشكل أكثر عمومية الثغرة. يمكن العثور على
التعيين الدقيق
[هنا](https://github.com/securego/gosec/blob/master/issue/issue.go#L50).

### التكوين

يمكن تقديم عدد من الإعدادات العامة في ملف
تكوين على النحو التالي:```JSON
{
    "global": {
        "nosec": "enabled",
        "audit": "enabled"
    }
}
  • nosec: سيؤدي هذا الإعداد إلى استبدال جميع توجيهات #nosec المحددة في جميع أنحاء قاعدة الكود
  • audit: يعمل في وضع التدقيق الذي يتيح فحوصات إضافية قد تكون مزعجة جداً لتحليل الكود العادي```bash

Run with a global configuration file

$ gosec -conf config.json .

root@kitploit:~
### استثناءات القواعد المستندة إلى المسار

قد تحتاج المستودعات الكبيرة ذات المكونات المتعددة إلى قواعد أمان مختلفة لمسارات مختلفة. استخدم `exclude-rules` لكبت قواعد محددة لمسارات محددة.

**ملف التهيئة:**```json
{
  "exclude-rules": [
    {
      "path": "cmd/.*",
      "rules": ["G204", "G304"]
    },
    {
      "path": "scripts/.*",
      "rules": ["*"]
    }
  ]
}

علامة CLI:```bash

Exclude G204 and G304 from cmd/ directory

gosec --exclude-rules="cmd/.*:G204,G304" ./...

Exclude all rules from scripts/ directory

gosec --exclude-rules="scripts/.:" ./...

Multiple exclusions

gosec --exclude-rules="cmd/.:G204,G304;test/.:G101" ./...

root@kitploit:~
| Field | Type | Description |
|-------|------|-------------|
| `path` | string (regex) | Regex يُطابق مسارات الملفات |
| `rules` | []string | معرفات القواعد المستثناة. `*` لكل القواعد |

#### تكوين القاعدة

بعض القواعد تقبل أيضًا أعلام تكوين؛ هذه الأعلام موثقة في
[RULES.md](https://github.com/securego/gosec/blob/master/RULES.md).

#### إصدار Go

بعض القواعد تتطلب إصدارًا محددًا من Go يتم استرداده
من ملف وحدة Go الموجود في المشروع. إذا لم يتم العثور
على هذا الإصدار، فسيتم الرجوع إلى إصدار وقت تشغيل Go.

يتم تحليل إصدار وحدة Go باستخدام الأمر `go list`
والذي قد يؤدي في بعض الحالات إلى تدهور الأداء. في
هذه الحالة، يمكن توفير إصدار وحدة Go بسهولة عن طريق
تعيين متغير البيئة
`GOSECGOVERSION=go1.21.1`.

### التبعيات

يقوم gosec بتحميل الحزم باستخدام وحدات Go. في معظم
المشاريع، يتم حل التبعيات تلقائيًا أثناء الفحص.

إذا كانت التبعيات مفقودة، قم بتشغيل:```bash
go mod tidy
go mod download

استبعاد ملفات ومجلدات الاختبار

سيتجاهل gosec ملفات الاختبار عبر جميع الحزم وأي تبعيات في دليل vendor الخاص بك.

يمكن تمكين فحص ملفات الاختبار باستخدام العلم التالي:```bash gosec -tests ./...

root@kitploit:~
أيضًا يمكن استبعاد المجلدات الإضافية على النحو التالي:```bash
 gosec -exclude-dir=rules -exclude-dir=cmd ./...

استبعاد الملفات المُنشأة

يمكن لـ gosec تجاهل ملفات Go المُنشأة التي تحتوي على تعليق الكود المُنشأ الافتراضي.``` // Code generated by some generator DO NOT EDIT.

root@kitploit:~
Please provide the Markdown content to translate.```bash
gosec -exclude-generated ./...

الإصلاح التلقائي للثغرات الأمنية

يمكن لـ gosec اقتراح إصلاحات بناءً على توصية الذكاء الاصطناعي. سيقوم باستدعاء API للذكاء الاصطناعي لتلقي اقتراح حول ثغرة أمنية.

يمكنك تفعيل هذه الميزة من خلال تقديم الوسائط التالية لسطر الأوامر:

  • ai-api-provider: اسم مزود API للذكاء الاصطناعي. المزودون المدعومون:
    • Atlas Cloud: atlas (النموذج الافتراضي deepseek-ai/deepseek-v4-flash)، atlas-deepseek-v4-flash, atlas-qwen3-coder-next, atlas-kimi-k2.6، أو atlas:<model-id> لأي نموذج محادثة مستضاف على Atlas Cloud. Atlas Cloud هو مزود متوافق مع OpenAI متاح على atlascloud.ai
    • Gemini: gemini-3-pro-preview (الافتراضي)، gemini-2.5-pro, gemini-2.5-flash, gemini-2.5-flash-lite
    • Claude: claude-sonnet-4-6 (الافتراضي)، , , , ,

🎁 Atlas Cloud هي منصة استدلال ذكاء اصطناعي كاملة الوسائط تمنح المطورين API واحد للذكاء الاصطناعي للوصول إلى إنشاء الفيديو، إنشاء الصور، وواجهات LLM. بدلاً من إدارة تكاملات متعددة للبائعين، تتصل مرة واحدة وتحصل على وصول موحد لأكثر من 300 نموذج مختار عبر جميع الوسائط.

اطلع على عرض خطة البرمجة الجديد من Atlas Cloud للحصول على وصول أكثر اقتصاداً لـ API: https://www.atlascloud.ai/console/coding-plan

أمثلة:```bash

Using Atlas Cloud with the default DeepSeek V4 Flash model

export GOSEC_AI_API_KEY="your_key" export GOSEC_AI_PROVIDER="atlas" gosec ./...

Using Atlas Cloud with an explicit hosted model

GOSEC_AI_API_KEY="your_key"
gosec -ai-api-provider="atlas:qwen/qwen3-coder-next" ./...

Using Gemini

gosec -ai-api-provider="gemini-3-pro-preview"
-ai-api-key="your_key" ./...

Using Claude

gosec -ai-api-provider="claude-sonnet-4-6"
-ai-api-key="your_key" ./...

Using OpenAI

gosec -ai-api-provider="gpt-5.4"
-ai-api-key="your_key" ./...

Using Azure OpenAI

gosec -ai-api-provider="gpt-5.4"
-ai-api-key="your_azure_key"
-ai-base-url="https://your-resource.openai.azure.com/openai/deployments/your-deployment"
./...

Using local Ollama with custom model

gosec -ai-api-provider="llama3.2"
-ai-base-url="http://localhost:11434/v1"
./...

Using self-signed certificate API

gosec -ai-api-provider="custom-model"
-ai-api-key="your_key"
-ai-base-url="https://internal-api.company.com/v1"
-ai-skip-ssl
./...

root@kitploit:~
### التعليق على الكود

كما هو الحال مع جميع أدوات الكشف الآلي، ستكون هناك حالات من النتائج الإيجابية الخاطئة. في الحالات التي يُبلغ فيها gosec عن فشل تم التحقق يدويًا من أنه آمن، فمن الممكن التعليق على الكود بتعليق يبدأ بـ `#nosec`.

يجب أن يكون تنسيق تعليق `#nosec` بالشكل `#nosec [RuleList] [-- Justification]`.

يجب وضع تعليق `#nosec` في السطر الذي يتم فيه الإبلاغ عن التحذير.```go
func main() {
	tr := &http.Transport{
		TLSClientConfig: &tls.Config{
			InsecureSkipVerify: true, // #nosec G402
		},
	}

	client := &http.Client{Transport: tr}
	_, err := client.Get("https://go.dev/")
	if err != nil {
		fmt.Println(err)
	}
}

عندما يتم تحديد حالة إيجابية خاطئة معينة والتحقق من أنها آمنة، قد ترغب في كتم هذه القاعدة فقط (أو مجموعة محددة من القواعد) داخل قسم من الكود، مع الاستمرار في فحص المشكلات الأخرى. للقيام بذلك، يمكنك إدراج القاعدة (القواعد) المراد كتمها داخل التعليق التوضيحي #nosec، على سبيل المثال: /* #nosec G401 */ أو //#nosec G201 G202 G203

يمكنك وضع نص الوصف أو التبرير للتعليق التوضيحي. يجب أن يكون التبرير بعد القاعدة (القواعد) المراد كتمها وأن يبدأ بشرطتين أو أكثر، على سبيل المثال: //#nosec G101 G102 -- This is a false positive

بدلاً من ذلك، يدعم gosec أيضًا التوجيه //gosec:disable، الذي يعمل بشكل مشابه لـ #nosec:```go //gosec:disable G101 -- This is a false positive

root@kitploit:~
في بعض الحالات قد ترغب أيضًا في إعادة النظر في الأماكن التي تم فيها استخدام التعليقات التوضيحية `#nosec` أو `//gosec:disable`. لتشغيل الماسح الضوئي وتجاهل أي تعليقات توضيحية `#nosec` يمكنك القيام بما يلي:```bash
gosec -nosec=true ./...

طلب معرفات القواعد والتبريرات

لمنع التعليقات التوضيحية من إخماد القواعد غير ذات الصلة عن غير قصد، أو من الإضافة بدون تفسير، يقبل gosec علمين اختياريين. كلاهما افتراضيًا false، لذا تبقى قواعد الأكواد الحالية تعمل بدون تغيير.

  • -nosec-require-rules يرفض التوجيهات المجردة #nosec / //gosec:disable التي لا تسرد أي معرف قاعدة.
  • -nosec-require-justification يرفض التوجيهات التي لا تحمل -- justification بعد قائمة القواعد.

عند التمكين، التوجيه الذي يفشل في الفحص لم يعد يقمع أي اكتشاف ويتم الإبلاغ عنه كخطأ في المخرجات، إلى جانب أي مشكلة أساسية في السطر.```bash gosec -nosec-require-rules -nosec-require-justification ./...

root@kitploit:~
يمكن تعيين نفس الخيارات عبر كتلة التكوين العامة:```json
{
    "global": {
        "nosec-require-rules": "enabled",
        "nosec-require-justification": "enabled"
    }
}

تتبع عمليات الإخفاء

كما هو موضح أعلاه، يمكننا إخفاء الانتهاكات خارجيًا (باستخدام -include/-exclude) أو مضمنًا (باستخدام تعليقات #nosec). يمكن إصدار بيانات وصفية للإخفاء لأغراض التدقيق. قم بتمكين تتبع الإخفاء باستخدام -track-suppressions:```bash gosec -track-suppressions -exclude=G101
-fmt=sarif -out=results.sarif ./...

root@kitploit:~
- بالنسبة للقمع الخارجي، يسجل gosec معلومات القمع
  حيث `kind` هو `external` و `justification` هو
  `Globally suppressed.`.
- بالنسبة للقمع المضمن، يسجل gosec معلومات القمع
  حيث `kind` هو `inSource` و `justification` هو النص
  بعد شرطتين أو أكثر في التعليق.

**ملاحظة:** فقط تنسيقات SARIF و JSON تدعم تتبع
القمع.

### علامات البناء (Build tags)

يستطيع gosec تمرير
[علامات بناء Go](https://pkg.go.dev/go/build/) الخاصة بك
إلى المحلل. يمكن تقديمها كقائمة مفصولة بفواصل على النحو التالي:```bash
gosec -tags debug,ignore ./...

تنسيقات المخرجات

يدعم gosec التنسيقات text, json, yaml, csv, junit-xml, html, sonarqube, golint, و sarif. بشكل افتراضي، سيتم الإبلاغ عن النتائج إلى stdout، ولكن يمكن أيضًا كتابتها إلى ملف إخراج. يتم التحكم في تنسيق المخرجات بواسطة العلم -fmt، ويتم التحكم في ملف الإخراج بواسطة العلم -out كما يلي:```bash

Write output in json format to results.json

$ gosec -fmt=json -out=results.json *.go

root@kitploit:~
استخدم `-stdout` لطباعة النتائج مع كتابة `-out` أيضًا.
استخدم `-verbose` لتجاوز تنسيق stdout مع الحفاظ على
تنسيق الملف.```bash
# Write output in json format to results.json as well as stdout
$ gosec -fmt=json -out=results.json -stdout *.go

# Overrides the output format to 'text' when stdout the results,
# while writing it to results.json
$ gosec -fmt=json -out=results.json -stdout -verbose=text *.go

ملاحظة: ينشئ gosec تنسيق استيراد المشكلات العام لـ SonarQube، ويجب استيراد تقرير إلى SonarQube باستخدام sonar.externalIssuesReportPaths=path/to/gosec-report.json.

أنماط الاستخدام الشائعة```bash

Fail only on medium+ severity findings

gosec -severity medium ./...

Fail only on medium+ confidence findings

gosec -confidence medium ./...

Exclude specific rules for specific paths

gosec --exclude-rules="cmd/.:G204,G304;scripts/.:*" ./...

Exclude generated files in scan

gosec -exclude-generated ./...

Include test files in scan

gosec -tests ./...

root@kitploit:~
## التطوير

تم نقل توثيق التطوير إلى
[DEVELOPMENT.md](https://github.com/securego/gosec/blob/HEAD/DEVELOPMENT.md).

## من يستخدم gosec؟

هذه [قائمة](https://github.com/securego/gosec/blob/HEAD/USERS.md) ببعض مستخدمي gosec.

## الرعاة

ادعم هذا المشروع من خلال أن تصبح راعياً. سيظهر شعارك هنا مع رابط لموقعك الإلكتروني

<a href="https://github.com/mercedes-benz" target="_blank"><img src="https://assets.kitploit.com/production/public/readmes/2947/08b6f9da5faff0e986172b0c77fed0865a2cb26e6f8c58a8ae588c74bcf16f5f.png"></a>
تنزيل الأداة
claude-opus-4-7
claude-opus-4-6
claude-sonnet-4-5
claude-opus-4-5
claude-haiku-4-5
  • OpenAI: gpt-5.4 (الافتراضي), gpt-5.4-mini, gpt-5.4-nano
  • مخصص متوافق مع OpenAI: أي اسم نموذج مخصص (يتطلب ai-base-url)
  • ai-api-key أو تعيين متغير البيئة GOSEC_AI_API_KEY: المفتاح للوصول إلى API الذكاء الاصطناعي
    • بالنسبة لـ Gemini، يمكنك إنشاء مفتاح API باتباع هذه التعليمات
    • بالنسبة لـ Claude، احصل على مفتاح API الخاص بك من Anthropic Console
    • بالنسبة لـ OpenAI، احصل على مفتاح API الخاص بك من OpenAI Platform
  • ai-base-url: (اختياري) عنوان URL أساسي مخصص لـ APIs المتوافقة مع OpenAI (مثل Azure OpenAI، LocalAI، Ollama)
    • يستخدم Atlas Cloud https://api.atlascloud.ai/v1 بشكل افتراضي، لذا فإن ai-base-url اختياري للمزود atlas المدمج
  • GOSEC_AI_PROVIDER: (اختياري) متغير بيئة بديل لـ ai-api-provider
  • GOSEC_AI_BASE_URL: (اختياري) متغير بيئة بديل لـ ai-base-url
  • ai-skip-ssl: (اختياري) تخطي التحقق من شهادة SSL لـ API الذكاء الاصطناعي (مفيد للشهادات ذاتية التوقيع)