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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
C0deVari4nt — 코드베이스를 스캔하여 유사한 취약점을 찾는 변종 분석 및 시각화 도구 | Kitploit
도구/GitHubGitHub/whitesquirrell/c0devari4nt
Static Code Analysis (SAST)Vulnerability AnalysisCode Analysis
GitHubwhitesquirrell/c0devari4nt

C0deVari4nt

코드베이스를 스캔하여 유사한 취약점을 찾는 변종 분석 및 시각화 도구

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

C0deVari4nt

Black Hat Arsenal
C0deVari4nt

설명

C0deVari4nt는 코드베이스에서 유사한 취약점을 검사하는 변종 분석 및 시각화 도구입니다. 이 도구는 의미론적 코드 분석 엔진인 CodeQL을 활용하여 사용자가 제어하는 CodeQL 쿼리 템플릿을 기반으로 코드를 질의하고, 그 결과를 vis.js와 React로 구축된 클라이언트 인터페이스로 전달하여 추가 탐색 및 시각화를 지원합니다. 이를 통해 이전 취약점 보고서를 기반으로 신속하고 포괄적인 변종 분석이 가능합니다. vis.js 시각화 기능은 개발자가 취약한 코드 경로에 대한 추가적인 통찰력을 제공하며, 잠재적인 변종을 효과적으로 분류할 수 있도록 합니다.

Tool View

동기

2021년 12월의 Log4Shell 사건은 오픈소스 개발자가 취약점 보고에 대응하는 데 겪는 어려움을 부각시켰습니다. CVE-2021-44228에 대한 초기 패치 이후(이 취약점은 인증되지 않은 원격 공격자가 취약한 Log4j 2 버전을 실행하는 장치를 제어할 수 있게 함), Apache는 관련 취약점과 해결되지 않은 경계 사례를 해결하기 위해 추가 패치 3개를 더 릴리스했습니다.

오픈소스 개발자는 종종 포괄적인 코드 검토 교육을 받지 못했으며, 취약점의 변종을 식별하는 데 어려움을 겪어 불완전한 패치로 이어집니다. CodeQL 쿼리 제품군이 코드베이스의 빠른 분석을 용이하게 하기 위해 존재하지만, 이러한 제품군에서 반환된 결과는 상당한 오탐률을 초래할 수 있습니다. 또한 이러한 제품군은 사전 정의된 쿼리에 의존하므로 변종 분석을 지원하지 않으며 개별 코드베이스에 맞춤화되지 않습니다. 따라서 오픈소스 프로젝트는 잠재적인 변종을 놓치는 단편적인 방식으로 취약점 보고에 대응하는 경우가 많습니다.

C0deVari4nt는 개발자가 자체 CodeQL 쿼리를 작성하는 상당한 오버헤드 없이 변종 분석을 쉽게 수행할 수 있는 플랫폼을 제공합니다. 이를 통해 개발자는 특정 소스 및 싱크와 같은 코드베이스별 정보를 제공하여 CodeQL 템플릿을 사용자 정의할 수 있는 유연성을 얻습니다. 결과는 vis.js로 구동되는 그래프 데이터베이스 뷰로 시각화되어 개발자가 잠재적인 변종을 신속하게 식별할 수 있습니다. 따라서 개발자는 단일 취약점 보고서로부터 전체 버그 클래스를 효과적으로 처리할 수 있습니다.

도구 구성 요소

C0deVari4nt는 Python, CodeQL, vis.js 및 React를 사용하여 구축된 대화형 GUI 응용 프로그램으로, 사용자 입력을 받고 서로 다른 취약한 코드 경로 간의 관계를 보여줍니다.

Tool Architecture

C0deVari4nt는 다음과 같은 2가지 주요 구성 요소로 구성됩니다:

  • 클라이언트 인터페이스: 이 구성 요소는 React와 vis.js 브라우저 기반 시각화 라이브러리로 구축됩니다. 사용자는 이 구성 요소와 상호 작용하여 CodeQL 쿼리를 사용자 정의하고 그래프 시각화 뷰를 통해 CodeQL 결과를 분석합니다.
  • API 서버: 이 구성 요소는 Python FastAPI 웹 프레임워크를 기반으로 하여 클라이언트 인터페이스의 요청을 수신하고 CodeQL 준비 데이터베이스 파일 목록에 대해 CodeQL 명령을 실행합니다. 그런 다음 서버는 구문 분석된 데이터 결과를 다시 클라이언트 인터페이스로 반환합니다.

클라이언트 인터페이스에 대한 자세한 내용은 아래에서 확인할 수 있습니다: Tool Architecture

v1 사용법

데이터베이스 폴더 설정

  • api-server 디렉터리로 이동하여 dbextractor.py <codeql db zip file>을 실행하여 codeql 데이터베이스 콘텐츠의 압축을 풉니다

백엔드 서버 실행

  • api-server로 이동
  • 종속성 다운로드 pip install -r requirements.txt
  • uvicorn main:app --reload를 실행하여 포트 8000에서 로컬 개발 서버를 시작합니다

React 인터페이스 실행

  • react-gui로 이동
  • 종속성 다운로드 npm i
  • npm start를 실행하여 로컬 개발 서버를 시작합니다

도구 사용

User Process

  • 옵션 상자에 쿼리 옵션을 입력하고 적용을 클릭합니다
  • 백엔드가 요청을 처리할 때까지 몇 초 기다립니다
  • 오른쪽 속성 상자를 사용하여 경로를 격리하고 노드 속성을 확인합니다

사용법

사전 정의된 취약한 소스 및 싱크에 대해 코드베이스 실행 (옵션 1)

  1. 금지된 문자열 함수에 대한 모든 소스 함수 찾기 (Microsoft의 보안 개발 수명 주기(SDL) 금지 함수 호출 기반)
  2. 소스 인수에 경계 검사가 없는 strcat 함수에 대한 모든 호출 찾기
  3. 소스 인수에 경계 검사가 없는 strncpy 함수에 대한 모든 호출 찾기
  4. snprintf 호출의 반환 값에 경계 검사가 없는 모든 경우 찾기
    1. 예: 버퍼 끝에 도달하고 1자 이상이 버려지는 경우 반환 값이 버퍼 크기보다 커집니다
  5. 포인터 유형의 인스턴스를 포함할 수 있는 충분한 메모리가 할당되지 않은 malloc, calloc 또는 realloc에 대한 모든 호출 찾기

선택한 소스 및 싱크에 대해 코드베이스 실행 (옵션 2)

  1. 위험한 싱크 함수에 대한 모든 소스 표현식 찾기
  2. 위험한 싱크 함수에 대한 특정 소스 함수 찾기
  3. 위험한 싱크 함수에 대한 특정 소스 함수 찾기 (오염된 함수)
    1. isAdditionalTaintStep 메서드를 사용하여 연결되지 않은 두 함수 간에 오염을 전달합니다
  4. 위험한 싱크 함수에 대한 특정 소스 함수 찾기 (오염된 표현식)
    1. isAdditionalTaintStep 메서드를 사용하여 런타임에 동일한 값을 가지는 포인터 간에 오염을 전달합니다

CodeQL 결과 및 노드 간 관계 단순화

다음은 recvfrom을 소스, mempool_alloc을 추가 오염 단계, memcpy를 싱크로 하는 쿼리의 CodeQL 결과를 보여줍니다:

neo-1

이 결과는 총 27개의 서로 다른 코드 경로에서 180개의 노드를 산출합니다. 결과는 아래의 간단한 neo4j 인터페이스에 표시됩니다:

neo-2

이 쿼리를 도구에 입력함으로써 각 노드, 소스 및 싱크의 중복 발생을 식별하고 노드 관계를 병합할 수 있었습니다.
그 결과, 11개의 고유 노드로 훨씬 깔끔한 그래프가 생성되었으며, 모든 27개의 고유 코드 경로는 그대로 유지되었습니다:

neo-3

결과는 경로 레이블 지정 기능을 통해 해당 경로별로 추가로 분류할 수 있습니다:

neo-4

codevariant

도구 다운로드