업데이트로 돌아가기
New releaseJul 24, 2026

semgrep v1.171.0

많은 언어를 위한 경량 정적 분석. 소스 코드처럼 보이는 패턴으로 버그 변종을 찾습니다.

공유

Semgrep 로고

엄청난 속도의 코드 스캐닝.

Homebrew PyPI 문서 Semgrep 커뮤니티 Slack 참여 이슈 환영! GitHub에서 Semgrep 별표 Docker Pulls Docker Pulls (기존) Twitter에서 @semgrep 팔로우


Semgrep는 빠르고 오픈소스인 정적 분석 도구로, 코드를 검색하고 버그를 찾으며 안전한 가드레일과 코딩 표준을 시행합니다. Semgrep는 30개 이상의 언어를 지원하며, IDE, 커밋 전 검사, CI/CD 워크플로의 일부로 실행할 수 있습니다.

Semgrep는 코드를 위한 의미론적 grep입니다. grep "2"를 실행하면 정확히 문자열 _2_만 일치하는 반면, Semgrep는 _2_를 검색할 때 x = 1; y = x + 1을 일치시킵니다. Semgrep 규칙은 이미 작성한 코드와 같아 보입니다. 추상 구문 트리, 정규식 씨름, 고통스러운 DSL이 없습니다.

보안 컨텍스트에서는 Semgrep Community Edition이 단일 함수 또는 파일의 경계 내에서만 코드를 분석할 수 있으므로 많은 실제 양성(true positive)을 놓칠 수 있습니다. 보안 목적(SAST, SCA, 또는 시크릿 스캐닝)으로 Semgrep를 사용하려면 Semgrep AppSec Platform을 강력히 권장합니다. 이 플랫폼은 다음과 같은 중요한 기능을 추가합니다:

  1. 향상된 핵심 분석 기능(파일 간, 함수 간, 데이터 흐름 도달 가능성)으로 오탐지를 25% 크게 줄이고 탐지된 실제 양성을 250% 증가시킵니다.
  2. Semgrep Assistant(AI)를 통한 결과의 컨텍스트 후처리로 노이즈를 약 20% 추가 감소시킵니다. 또한 Assistant는 맞춤형 단계별 수정 지침으로 결과를 강화하여, 사용자가 80% 이상의 경우에 실행 가능하다고 평가합니다.
  3. 사용자 정의 가능한 정책과 개발자 워크플로로의 원활한 통합을 통해 보안 팀이 다양한 결과를 개발자에게 언제, 어디서, 어떻게 제시할지(IDE, PR 코멘트 등) 세밀하게 제어할 수 있습니다.

Semgrep AppSec Platform은 SAST, SCA, 시크릿 전반에 걸쳐 20000개 이상의 독점 규칙으로 즉시 사용 가능합니다. Pro 규칙은 Semgrep 보안 연구 팀이 작성하고 유지 관리하며 정확도가 높아, AppSec 팀이 개발자를 느리게 하지 않고 결과를 직접 전달할 자신감을 가질 수 있습니다.

Semgrep는 사용자 컴퓨터 또는 빌드 환경에서 로컬로 코드를 분석합니다. 기본적으로 코드가 업로드되지 않습니다. 시작하기 →.

Semgrep CLI 이미지

언어 지원

Semgrep Code는 30개 이상의 언어를 지원합니다. 포함된 언어:

Apex · Bash · C · C++ · C# · Clojure · Dart · Dockerfile · Elixir · HTML · Go · Java · JavaScript · JSX · JSON · Julia · Jsonnet · Kotlin · Lisp · Lua · OCaml · PHP · Python · R · Ruby · Rust · Scala · Scheme · Solidity · Swift · Terraform · TypeScript · TSX · YAML · XML · Generic (ERB, Jinja, etc.)

Semgrep Supply Chain은 15개의 패키지 관리자에서 12개 언어를 지원합니다. 포함된 언어 및 패키지 관리자:

C# (NuGet) · Dart (Pub) · Go (Go modules, go mod) · Java (Gradle, Maven) · Javascript/Typescript (npm, Yarn, Yarn 2, Yarn 3, pnpm) · Kotlin (Gradle, Maven) · PHP (Composer) · Python (pip, pip-tool, Pipenv, Poetry) · Ruby (RubyGems) · Rust (Cargo) · Scala (Maven) · Swift (SwiftPM)

자세한 내용은 지원 언어를 참조하세요.

시작하기 🚀

  1. Semgrep AppSec Platform에서 시작하기
  2. CLI에서 시작하기

새 사용자는 Semgrep AppSec Platform부터 시작하는 것을 권장합니다. 시각적 인터페이스, 데모 프로젝트, 결과 분류 및 탐색 워크플로를 제공하며 CI/CD 설정을 빠르게 합니다. 스캔은 여전히 로컬에서 이루어지며 코드가 업로드되지 않습니다. 또는 CLI로 시작하여 터미널 출력을 탐색하며 일회성 검색을 실행할 수도 있습니다.

옵션 1: Semgrep AppSec Platform에서 시작하기 (권장)

Semgrep 플랫폼 이미지

  1. semgrep.dev에 등록하세요.

  2. 데모 결과를 탐색하여 Semgrep 작동 방식을 알아보세요.

  3. Projects > Scan New Project > Run scan in CI로 이동하여 프로젝트를 스캔하세요.

  4. 버전 관리 시스템을 선택하고 온보딩 단계에 따라 프로젝트를 추가하세요. 이 설정 후 Semgrep는 모든 풀 리퀘스트 후에 프로젝트를 스캔합니다.

  5. [선택 사항] 로컬에서 Semgrep를 실행하려면 CLI 섹션의 단계를 따르세요.

참고:

문제가 있는 경우 Semgrep Slack에서 도움을 요청하세요.

옵션 2: CLI에서 시작하기

  1. Install Semgrep CLI

    # For macOS
    $ brew install semgrep
    
    # For Ubuntu/WSL/Linux/macOS
    $ python3 -m pip install semgrep
    
    # To try Semgrep without installation run via Docker
    $ docker run -it -v "${PWD}:/src" semgrep/semgrep semgrep login
    $ docker run -e SEMGREP_APP_TOKEN=<TOKEN> --rm -v "${PWD}:/src" semgrep/semgrep semgrep ci
    
  2. semgrep login을 실행하여 계정을 만들고 Semgrep에 로그인하세요. 이 단계는 선택 사항이지만, Semgrep에 로그인하면 다음에 액세스할 수 있습니다:

  3. 앱의 루트 디렉토리로 이동하여 semgrep ci를 실행하세요. 이 작업은 소스 코드와 종속성의 취약점을 확인하기 위해 프로젝트를 스캔합니다.

  4. -e를 사용하여 대화형으로 자신만의 쿼리를 작성해 보세요. 예를 들어, 왼쪽과 오른쪽이 동일한 Python == 확인(잠재적 버그): $ semgrep -e '$X == $X' --lang=py path/to/src

Semgrep 에코시스템

Semgrep 에코시스템은 다음을 포함합니다:

  • Semgrep Community Edition - 모든 것의 핵심인 오픈소스 프로그램 분석 엔진. 오탐지에 대한 높은 허용 오차가 있는 임시 사용 사례(컨설턴트, 보안 감사자, 펜테스터 등)에 적합합니다.

  • Semgrep AppSec Platform - 조직 전반에서 SAST, SCA, 시크릿 스캐닝을 쉽게 오케스트레이션하고 확장하며, 개발자에게 과부하를 주지 않습니다. 개발자가 보는 결과, 결과를 보는 위치를 사용자 지정하고 GitHub, GitLab, CircleCI 등 CI 제공업체와 통합할 수 있습니다. 무료 및 유료 등급을 모두 포함합니다.

    • Semgrep Code (SAST) - 노이즈를 최소화하고 보안 지식이 없어도 개발자가 스스로 문제를 신속하게 해결할 수 있도록 지원하는 SAST로 취약점 백로그에서 실제 진전을 이루세요. 배포하기 쉬운 보안 가드레일과 맞춤형 단계별 수정 지침을 통해 개발자가 속도가 느려지지 않는다고 느끼기 때문에 실제로 문제를 수정합니다.

    • Semgrep Supply Chain (SSC) - 오픈 소스 서드파티 라이브러리 및 함수에서 도달 가능한 취약점을 탐지하는 높은 신호의 종속성 스캐너.

    • Semgrep Secrets (시크릿 스캐닝) - 의미론적 분석, 개선된 엔트로피 분석 및 검증을 사용하여 개발자 워크플로에서 민감한 자격 증명을 정확하게 표면화하는 시크릿 탐지.

    • Semgrep Assistant (AI) - Assistant는 AI 기반 AppSec 엔지니어로, 개발자와 AppSec 팀이 Semgrep 결과를 대규모로 우선순위 지정, 분류 및 수정하도록 돕습니다. 인간은 Assistant의 자동 분류 결정에 97% 동의하며, 생성된 수정 지침을 80%의 경우에 유용하다고 평가합니다. Assistant 작동 방식에 대한 개요는 이 개요를 읽어보세요.

  • Semgrep MCP Server - AI 코딩 어시스턴트가 Semgrep 스캔을 직접 실행할 수 있게 해주는 Model Context Protocol (MCP) 서버. Cursor, VS Code, Windsurf, Claude Desktop 등과 통합됩니다. semgrep mcp를 실행하여 로컬에서 시작하세요.

    • Hooks - 코딩할 때 자동으로 Semgrep 스캔을 트리거합니다.
    • Skills / Prompts - write_custom_semgrep_rule과 같은 내장 MCP 프롬프트는 AI 어시스턴트가 정확한 Semgrep 규칙을 작성하는 데 도움이 됩니다.
    • Claude Code 플러그인 - 공식 마켓플레이스 및 semgrep/mcp-marketplace 저장소를 통해 사용 가능: /plugin marketplace add semgrep/mcp-marketplace
    • Cursor 플러그인 - 공식 마켓플레이스 및 semgrep/cursor-plugin 저장소를 통해 사용 가능.

추가 리소스:

  • Semgrep Playground - 규칙을 작성하고 공유하기 위한 온라인 대화형 도구.
  • Semgrep Registry - 보안, 정확성, 종속성 취약점을 다루는 2,000개 이상의 커뮤니티 기반 규칙.

이미 GitLab, Dropbox, Slack, Figma, Shopify, HashiCorp, Snowflake, Trail of Bits와 같은 회사에서 Semgrep를 사용하고 있는 수십만 명의 다른 개발자 및 보안 엔지니어와 함께하세요.

Semgrep는 소프트웨어 보안 회사인 Semgrep, Inc.에 의해 개발되고 상업적으로 지원됩니다.

Semgrep 규칙

Semgrep 규칙은 이미 작성한 코드와 같아 보입니다. 추상 구문 트리, 정규식 씨름, 고통스러운 DSL이 없습니다. Python print() 문을 찾는 빠른 규칙 예제입니다.

여기를 클릭하여 Semgrep Playground에서 온라인으로 실행해 보세요.

Python print() 문을 찾는 Semgrep 규칙 예제

예제

사용 사례 및 아이디어는 문서 > 규칙 예제를 방문하세요.

사용 사례Semgrep 규칙
위험한 API 금지exec 사용 방지
라우트 및 인증 검색Spring 라우트 추출
안전한 기본값 사용 강제Flask 쿠키 안전하게 설정
싱크로 흐르는 오염된 데이터ExpressJS 데이터 흐름을 sandbox.run으로
프로젝트 모범 사례 강제== 검사에 assertEqual 사용, 서브프로세스 호출 항상 확인
프로젝트별 지식 코드화트랜잭션 생성 전 확인
보안 핫스팟 감사Apache Airflow에서 XSS 찾기, 하드코딩된 자격 증명
구성 파일 감사S3 ARN 사용 찾기
더 이상 사용되지 않는 API에서 마이그레이션DES는 더 이상 사용되지 않음, 더 이상 사용되지 않는 Flask API, 더 이상 사용되지 않는 Bokeh API
자동 수정 적용listenAndServeTLS 사용

확장 기능

에디터나 pre-commit에서 Semgrep를 사용하는 방법을 알아보려면 문서 > 확장 기능을 방문하세요. CI에 통합되고 풀 리퀘스트를 스캔하도록 구성된 경우, Semgrep는 해당 풀 리퀘스트에 의해 도입된 문제만 보고합니다. 이를 통해 기존 문제를 수정하거나 무시하지 않고 Semgrep 사용을 시작할 수 있습니다!

문서

전체 Semgrep 웹사이트 문서를 둘러보세요. Semgrep가 처음이라면 문서 > 시작하기 또는 대화형 튜토리얼을 확인하세요.

메트릭

Registry에서 원격 구성을 사용하면(--config=p/ci와 같이) 익명화된 규칙 메트릭이 semgrep.dev에 보고됩니다.

로컬 파일에서 구성을 사용할 때는(--config=xyz.yml과 같이) 사용자가 로그인한 경우에만 메트릭이 전송됩니다.

Registry 규칙 메트릭을 비활성화하려면 --metrics=off를 사용하세요.

Semgrep 개인정보 보호정책은 데이터 수집 결정을 안내하는 원칙과 메트릭이 활성화되었을 때 수집 및 수집되지 않는 데이터의 세부 정보를 설명합니다.

더 보기

업그레이드업그레이드하려면 Semgrep을 설치한 방식에 따라 아래 명령어를 실행하십시오:```sh

Using Homebrew

$ brew upgrade semgrep

Using pipx

$ pipx upgrade semgrep

Using uv tool command

$ uv tool upgrade semgrep

Using Docker

$ docker pull semgrep/semgrep:latest

카테고리