Skip to content
KitploitKITPLOIT
도구블로그
Log in
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
gosec — Go 보안 검사기 | Kitploit
도구/GitHubGitHub/securego/gosec
Static Code Analysis (SAST)Vulnerability AnalysisCode AnalysisDevSecOpsCode Analysis #9위Static Code Analysis (SAST) #6위
GitHubsecurego/gosec

gosec

Go 보안 검사기

저장소 보기
8.9k701867시간 14분 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
웹사이트

gosec - Go 보안 검사기

Go AST 및 SSA 코드 표현을 스캔하여 소스 코드의 보안 문제를 검사합니다.

빠른 링크

  • GitHub 액션
  • 로컬 설치
  • 빠른 시작
  • 일반적인 사용 패턴
  • 규칙 선택
  • 출력 형식

기능

  • 패턴 기반 규칙 for detecting common security issues in Go code
  • SSA 기반 분석기 for type conversions, slice bounds, and crypto issues
  • 오염 분석 for tracking data flow from user input to dangerous functions (SQL 인젝션, 명령어 인젝션, 경로 탐색, SSRF, XSS, 로그 인젝션, SMTP 인젝션, SSTI, 안전하지 않은 역직렬화, 오픈 리다이렉트)

라이선스

Apache 라이선스 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: ./...

#### 비공개 모듈로 프로젝트 스캔하기

프로젝트에서 비공개 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 코드 스캔과 연동할 수 있습니다.

워크플로는 GitHub Actions 워크플로의 한 단계로 gosec를 실행하여 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: 하나 이상의 표시되지 않은 발견 또는 처리 오류
  • 항상 0을 반환하려면 -no-fail을 사용하세요

사용법

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 ./...

### 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/.:" ./...

도구 다운로드