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.9k70111915시간 13분 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

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

gosec - Go 보안 검사기

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

빠른 링크

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

기능

  • Go 코드에서 흔한 보안 문제를 탐지하기 위한 패턴 기반 규칙
  • 타입 변환, 슬라이스 경계, 암호화 문제를 위한 SSA 기반 분석기
  • 사용자 입력에서 위험한 함수로의 데이터 흐름을 추적하기 위한 오염 분석(taint analysis) (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: 억제되지 않은 발견 사항 또는 처리 오류가 하나 이상 존재
  • 항상 0을 반환하려면 -no-fail 사용

사용법

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: 오류를 반환하는 메서드 지연 호출 - 이 블로그 게시물의 세부 내용에도 불구하고 보안 문제를 해결하기보다 오히려 더 많은 불편을 초래함

규칙 선택

기본적으로 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" ./...
필드유형설명
pathstring (regex)파일 경로와 대조되는 정규식
rules[]string제외할 규칙 ID. *는 전체를 의미
도구 다운로드