Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
gosec — Go セキュリティチェッカー | Kitploit
ツール/GitHubGitHub/securego/gosec
静的コード分析 (SAST)脆弱性分析コード分析DevSecOpsコード分析 第9位静的コード分析 (SAST) 第6位
GitHubsecurego/gosec

gosec

Go セキュリティチェッカー

リポジトリを見る
8.9k70111914時間12分前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
ウェブサイト

gosec - Go セキュリティチェッカー

Go の AST および SSA コード表現をスキャンして、ソースコードのセキュリティ問題を検査します。

クイックリンク

  • GitHub Action
  • ローカルインストール
  • クイックスタート
  • 一般的な使用パターン
  • ルールの選択
  • 出力フォーマット

機能

  • Go コードにおける一般的なセキュリティ問題を検出するためのパターンベースのルール
  • 型変換、スライス境界、暗号関連の問題に対応するSSA ベースのアナライザー
  • ユーザー入力から危険な関数へのデータフローを追跡するテイント解析(SQL インジェクション、コマンドインジェクション、パストラバーサル、SSRF、XSS、ログインジェクション、SMTP インジェクション、SSTI、安全でないデシリアライゼーション、オープンリダイレクト)

ライセンス

Apache License, Version 2.0(「本ライセンス」)の下でライセンスされています。 本ライセンスに準拠しない限り、このファイルを使用することはできません。 本ライセンスのコピーは こちらから入手できます。

プロジェクトの状況

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

インストール

GitHub Action

次のようにして 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 アクションワークフローのステップとして gosec を実行し、results.sarif ファイルを出力する例を示しています。その後、ワークフローは upload-sarif アクションを使用して 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

Go 解析

goanalysis パッケージは、標準の Go 解析インターフェースをサポートするツール(Bazel の nogo フレームワークなど)との統合のために golang.org/x/tools/go/analysis.Analyzer を提供します:

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: 抑制されていない検出結果または処理エラーが少なくとも1件存在
  • 常に 0 を返すには -no-fail を使用

使用方法

Gosec は、ルールのサブセットのみを実行する、特定のファイルパスを除外する、異なる形式でレポートを生成するように設定できます。デフォルトでは、すべてのルールが指定された入力ファイルに対して実行されます。カレントディレクトリから再帰的にスキャンするには、入力引数として ./... を指定できます。

利用可能なルール

gosec には以下のカテゴリにわたるルールが含まれています:

  • G1xx: 一般的なセキュアコーディングの問題 (例: ハードコードされた認証情報、安全でない使用法、HTTP の強化、Cookie のセキュリティ)
  • G2xx: クエリ/テンプレート/コマンド構築におけるインジェクションリスク
  • G3xx: ファイルおよびパス処理のリスク (パーミッション、トラバーサル、一時ファイル、アーカイブ展開)
  • G4xx: 暗号および TLS の脆弱性
  • G5xx: ブロックリストに登録されたインポート
  • G6xx: Go 固有の正確性/セキュリティチェック (例: range のエイリアシングやスライスの境界)
  • G7xx: テイント解析ルール (SQL インジェクション、コマンドインジェクション、パストラバーサル、SSRF、XSS、ログ、SMTP インジェクション、SSTI、安全でないデシリアライゼーション、オープンリダイレクト)

完全なリスト、ルールの説明、およびルールごとの設定については、RULES.md を参照してください。

廃止されたルール

  • G105: math/big.Int.Exp の使用を監査 - CVE は修正済み
  • G307: エラーを返すメソッドの defer - この ブログ記事の詳細にもかかわらず、セキュリティ問題の修正よりも不便さを引き起こすため

ルールの選択

デフォルトでは、gosec は指定されたファイルパスに対してすべてのルールを実行します。ただし、-include= フラグを使用して実行するルールのサブセットを選択したり、-exclude= フラグを使用して明示的に除外するルールのセットを指定したりすることが可能です。

# Run a specific set of rules
$ gosec -include=G101,G203,G401 ./...

# Run everything except for rule G303
$ gosec -exclude=G303 ./...

CWE マッピング

gosec が検出するすべてのイシューは、脆弱性をより一般的な用語で説明する CWE (Common Weakness Enumeration) にマッピングされます。正確なマッピングは こちら で確認できます。

設定

次のように、設定ファイルでいくつかのグローバル設定を 指定できます:

{
    "global": {
        "nosec": "enabled",
        "audit": "enabled"
    }
}
  • nosec: この設定はコードベース全体で定義されたすべての #nosec ディレクティブを上書きします
  • audit: 監査モードで実行され、通常のコード分析では干渉しすぎる可能性がある追加チェックが有効になります
# Run with a global configuration file
$ gosec -conf config.json .

パスベースのルール除外

複数のコンポーネントを持つ大規模なリポジトリでは、パスごとに異なるセキュリティルールが必要になる場合があります。exclude-rules を使用して、特定のパスに対して特定のルールを抑制します。

設定ファイル:

{
  "exclude-rules": [
    {
      "path": "cmd/.*",
      "rules": ["G204", "G304"]
    },
    {
      "path": "scripts/.*",
      "rules": ["*"]
    }
  ]
}

CLI フラグ:

# 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" ./...
ツールをダウンロード