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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
gokart — Go 코드 보안을 위한 정적 분석 도구 | Kitploit
도구/GitHubGitHub/praetorian-inc/gokart
Static Code Analysis (SAST)Vulnerability AnalysisCode AnalysisDevSecOpsSecret DetectionMisconfigurationArchived
GitHubpraetorian-inc/gokart

gokart

Go 코드 보안을 위한 정적 분석 도구

저장소 보기
2.2k10682년 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

GoKart - Go 보안 정적 분석

CI Release

GoKart는 Go 소스 코드의 SSA(단일 정적 할당) 형태를 사용하여 취약점을 찾는 정적 분석 도구입니다. 변수 및 함수 인수의 출처를 추적하여 입력 소스가 안전한지 판단할 수 있으므로, 다른 Go 보안 스캐너에 비해 오탐(false positive) 수를 줄여줍니다. 예를 들어, 기존에는 변수와 연결된 SQL 쿼리가 SQL 삽입으로 플래그 지정될 수 있지만, GoKart는 변수가 실제로 상수 또는 상수에 해당하는지 여부를 파악하여 취약점이 없는 경우를 구별할 수 있습니다.

GoKart는 또한 Praetorian의 보안 플랫폼인 Chariot를 지원합니다. 이 플랫폼은 소스 코드 및 클라우드 환경에서 취약점을 찾고, 관리하고, 수정하는 데 도움을 줍니다. Chariot을 사용하면 소스 코드에 대해 자동화된 연속 GoKart 스캔을 간편하게 실행할 수 있습니다. GoKart를 사용해보고 싶다면 여기를 클릭하여 몇 분 안에 무료 Chariot 계정을 설정할 수 있습니다.

GoKart를 만든 이유

정적 분석은 소스 코드에서 취약점을 찾는 강력한 기법입니다. 그러나 이 접근 방식은 잡음이 많다는 문제가 있습니다. 즉, 많은 정적 분석 도구가 실제로 존재하지 않는 "취약점"을 상당수 발견합니다. 이는 사용자들이 도구의 "거짓 경보"에 지쳐 개발자 간 마찰을 초래했습니다.

GoKart의 동기는 바로 이것을 해결하는 것이었습니다. 기존 도구보다 훨씬 낮은 오탐률을 가진 스캐너를 만들 수 있을까? 실험 결과, 그 대답은 '예'였습니다. 소스-싱크 추적과 SSA를 활용함으로써 GoKart는 변수 할당 간 변수 오염을 추적할 수 있어 발견의 정확도를 크게 향상시킵니다. 우리의 초점은 사용성에 있습니다. 실용적으로는 거짓 경보를 줄이기 위해 접근 방식을 최적화했다는 의미입니다.

자세한 내용은 블로그 게시물을 참조하세요.

설치

아래 나열된 옵션 중 하나를 사용하여 GoKart를 로컬에 설치할 수 있습니다.

go install로 설치

root@kitploit:~
$ go install github.com/praetorian-inc/gokart@latest

릴리스 바이너리 설치

  1. 릴리스 페이지에서 운영 체제에 맞는 바이너리를 다운로드합니다.

  2. (선택 사항) checksums.txt 파일을 다운로드하여 아카이브의 무결성을 확인합니다.

root@kitploit:~
# 다운로드한 아카이브의 체크섬 확인
$ shasum -a 256 gokart_${VERSION}_${ARCH}.tar.gz
b05c4d7895be260aa16336f29249c50b84897dab90e1221c9e96af9233751f22  gokart_${VERSION}_${ARCH}.tar.gz

$ cat gokart_${VERSION}_${ARCH}_checksums.txt | grep gokart_${VERSION}_${ARCH}.tar.gz
b05c4d7895be260aa16336f29249c50b84897dab90e1221c9e96af9233751f22  gokart_${VERSION}_${ARCH}.tar.gz
  1. 다운로드한 아카이브를 추출합니다.
root@kitploit:~
$ tar -xvf gokart_${VERSION}_${ARCH}.tar.gz
  1. gokart 바이너리를 PATH에 이동합니다.
root@kitploit:~
$ mv ./gokart /usr/local/bin/

직접 클론 및 빌드

root@kitploit:~
# GoKart 저장소 클론
$ git clone https://github.com/praetorian-inc/gokart.git

# 저장소 디렉토리로 이동하여 빌드
$ cd gokart
$ go build

# gokart 바이너리를 PATH로 이동
$ mv ./gokart /usr/local/bin

Docker 지원

Docker 이미지 빌드

root@kitploit:~
docker build -t gokart .

로컬 스캔으로 컨테이너 실행 (로컬 스캔 디렉토리를 컨테이너 이미지에 마운트해야 함)

root@kitploit:~
docker run -v /path/to/scan-dir:/scan-dir gokart scan /scan-dir

원격 스캔으로 컨테이너 실행 (인증을 위해 개인 키를 지정하는 경우 해당 키도 컨테이너에 마운트해야 함)

root@kitploit:~
docker run gokart scan -r https://github.com/praetorian-inc/gokart

# 개인 저장소 SSH 인증을 위한 개인 키 지정
docker run -v /path/to/key-dir/:/key-dir gokart scan -r [email protected]:praetorian-inc/gokart.git -k /key-dir/ssh_key

사용법

현재 디렉토리의 Go 모듈에서 GoKart 실행

root@kitploit:~
# 디렉토리를 지정하지 않으면 기본값은 '.'
gokart scan <flags>

다른 디렉토리의 Go 모듈 스캔

root@kitploit:~
gokart scan <directory> <flags> 

도움말 보기

root@kitploit:~
gokart help

시작하기 - 예제 앱 스캔

아래 단계에 따라 Go Test Bench에서 GoKart를 실행할 수 있습니다. 이는 Contrast Security 팀의 의도적으로 취약하게 만든 Go 애플리케이션입니다.

root@kitploit:~
# 샘플 취약 애플리케이션 클론
git clone https://github.com/Contrast-Security-OSS/go-test-bench.git
gokart scan go-test-bench/

출력은 각각 취약 함수(Vulnerable Function)와 식별된 사용자 입력 출처(Source of User Input)를 포함한 일부 식별된 취약점을 보여줍니다.

추가 GoKart 기능을 테스트하려면 아래 제안된 CLI 플래그로 스캔할 수 있습니다.

root@kitploit:~
# 상세 플래그를 사용하여 이러한 취약점의 전체 추적 표시
gokart scan go-test-bench/ -v

# globalsTainted 플래그를 사용하여 허용 목록에 있는 출처 무시
# 오탐 결과가 증가할 수 있음
gokart scan go-test-bench/ -v -g

# 디버그 플래그를 사용하여 내부 분석 정보 표시
# 개발 및 디버깅에 유용
gokart scan go-test-bench/ -d

# sarif 형식으로 결과 출력
gokart scan go-test-bench/ -s

# 파일로 결과 출력
gokart scan go-test-bench/ -o gokart-go-test-bench.txt

# scarif 결과를 파일로 출력
gokart scan go-test-bench/ -o gokart-go-test-bench.txt -s

# 원격 공개 저장소 스캔
# 저장소가 로컬에 클론되고 스캔 후 삭제됨
gokart scan -r https://github.com/ShiftLeftSecurity/shiftleft-go-demo -v

# 스캔할 원격 브랜치 지정
gokart scan -r https://github.com/ShiftLeftSecurity/shiftleft-go-demo -b actions_fix

# SSH를 통해 원격 개인 저장소 스캔
gokart scan -r [email protected]:Contrast-Security-OSS/go-test-bench.git 

# 원격 개인 저장소 스캔 및 SSH 인증을 위한 키 선택적 지정
gokart scan -r [email protected]:Contrast-Security-OSS/go-test-bench.git -k /home/gokart/.ssh/github_rsa_key

# 원격 스캔과 출력 플래그를 함께 사용하여 원활한 보안 검토 수행
gokart scan -r https://github.com/ShiftLeftSecurity/shiftleft-go-demo -o gokart-shiftleft-go-demo.txt -v 

# 원격 스캔, 출력 및 sarif 플래그를 사용하여 CI/CD에 원활하게 통합
gokart scan -r https://github.com/ShiftLeftSecurity/shiftleft-go-demo -o gokart-shiftleft-go-demo.txt -s

GoKart의 확장성을 테스트하려면 GoKart가 분석에 새로운 취약 싱크를 도입하는 데 사용하는 구성 파일을 수정할 수 있습니다. 포함된 기본 구성 파일 util/analyzers.yml에 Test Sink 분석기가 정의되어 있습니다. util/analyzers.yml을 수정하여 Test Sink 분석기의 주석을 제거한 다음 -i 플래그로 수정된 구성 파일을 사용하도록 GoKart를 지시하세요.

root@kitploit:~
# 수정된 analyzers.yml 파일을 사용하여 스캔하고 전체 추적 출력
gokart scan go-test-bench/ -v -i <path-to-gokart>/util/analyzers.yml

이제 출력에는 새로운 "Test Sink reachable by user input" 취약점을 포함한 추가 취약점이 포함되어야 합니다.

GoKart 테스트 실행

GoKart 루트 디렉토리에서 다음 명령어로 포함된 테스트를 실행할 수 있습니다.

root@kitploit:~
go test -v ./...
도구 다운로드