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.9k701888時間17分前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 付きのバージョンタグを使用してください。これにより安定した動作が提供されます。```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: ./...

#### プライベートモジュールを使用したプロジェクトのスキャン

プロジェクトがプライベートな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: ./...

コードスキャンとの統合

SARIFファイルとしてデータをアップロードすることで、サードパーティのコード分析ツールを統合し、GitHubコードスキャンと連携できます。

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

### Go分析

`goanalysis`パッケージは、
[`golang.org/x/tools/go/analysis.Analyzer`](https://pkg.go.dev/golang.org/x/tools/go/analysis)
を提供します。これは、標準のGo
分析インターフェースをサポートするツール、例えばBazelの
[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

## クイックスタート```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: 少なくとも1つの抑制されていない発見または処理エラー
  • -no-fail を使用すると常に 0 を返す

使い方

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

利用可能なルール

gosec は以下のカテゴリにわたるルールを含んでいます:

  • G1xx: 一般的なセキュアコーディングの問題(例:ハードコードされた認証情報、安全でない使用法、HTTP 強化、クッキーセキュリティ)
  • 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= フラグを使用して明示的に除外するルールのセットを指定することが可能です。```bash

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)](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 .

### パスベースのルール除外

複数のコンポーネントを持つ大規模なリポジトリでは、パスごとに異なるセキュリティルールが必要になる場合があります。特定のパスに対して特定のルールを抑制するには、`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/.:" ./...

ツールをダウンロード