
프레임워크 인식 정적 코드 분석 도구로, 플랫폼별 규칙, 오염 분석, 노력 추정 및 억제 기준선을 통해 자동화된 소스 코드 리뷰를 수행합니다.
Author:
- Debasis Mohanty ([email protected])
- Twitter / X: @coffeensecurity
- www.coffeeandsecurity.com
Daksh SCRA(Source Code Review Assist)는 소스 코드 리뷰 프로세스의 효율성을 높이기 위해 만들어졌으며, 코드 리뷰어에게 잘 구조화되고 체계적인 접근 방식을 제공합니다.
모든 것을 잠재적 이슈로 무분별하게 표시하는 대신, Daksh SCRA는 신중한 분석을 장려하며 잠재적 문제의 조사와 확인을 촉구합니다. 이러한 접근 방식은 모든 잠재적 우려를 버그로 태그하려는 경쟁을 완화하고, 오탐(false positive)에 소비되는 혼란과 시간 낭비를 줄여줍니다.
Daksh SCRA는 Black Hat USA 2022(8월 6-9일)의 소스 코드 리뷰 교육 세션에서 처음 소개되었으며, 특정 청중에게 조용히 선보였습니다. 공식 대중 데뷔는 라스베이거스에서 열린 Black Hat USA 2023에서 이루어졌습니다.
DakshSCRA는 파일 경로 관심 영역과 노력 추정부터 소프트웨어 정찰, 컨텍스트 규칙 및 교차 파일 분석에 이르기까지 수동 소스 코드 리뷰를 위한 독특한 기능들을 결합합니다.
| 기능 | 태그 | 중요한 이유 |
|---|---|---|
| 파일 경로 관심 영역 | 세계 최초* | 코드와 함께 파일 및 디렉터리 이름 자체를 스캔하여 리뷰어가 흔히 놓치는 백업 파일, 디버그 엔드포인트, 구성 덤프, 자격 증명 파일과 같은 의심스러운 경로를 표시합니다. |
| 과학적 노력 추정 | 세계 최초* | 코드베이스 크기와 프로젝트 신호를 기반으로 수동 리뷰 노력에 대한 정량적 추정치를 생성합니다. 구성 가능한 가정을 통해 참여 계획을 명시적이고 반복 가능하게 만듭니다. |
| 버그 플래그가 아닌 관심 영역 | 리뷰어가 통제 | 모든 일치 항목을 취약점으로 태그하는 대신 조사할 가치가 있는 패턴을 드러냅니다. 컨텍스트 규칙과 억제 증거는 트리아지 노이즈를 줄이고 리뷰어가 통제권을 유지하도록 합니다. |
| 소프트웨어 정찰 | 통합 소프트웨어 정찰 | 스캔 전에 파일 내용과 프로젝트 구조로부터 언어, 프레임워크 및 인프라를 감지합니다. 기술 인벤토리를 자동 규칙 선택, 의미 분석 및 리뷰 계획에 연결합니다. |
| RDL 조건부 규칙 | 고급 조건부 규칙 | PRESENT, MISSING, 불리언 표현식 및 파일/경로 조건으로 단순 정규식을 뛰어넘습니다. RDL v1은 결정과 억제 이유를 기록하고, RDL v2는 타입이 지정된 의미 서비스와 범위가 제한된 교차 파일 증거를 추가합니다. |
| 고급 의미 및 교차 파일 분석 | 처음부터 구축 | 목적에 맞게 구축된 분석을 사용하여 지원되는 파일 경계를 넘어 사용자 제어 데이터를 소스에서 싱크까지 추적합니다. 고급 분석은 2026년 3월 원래 RDL과 함께 출시되었으며, RDL v2는 파일 전반에 걸쳐 의미 규칙 평가를 확장합니다. |
| 플랫폼 독립적 자동 스캔 | 자동 멀티 플랫폼 | -r auto를 사용하여 사전에 단일 언어를 선택하지 않고 혼합 기술 프로젝트를 스캔합니다. 정찰은 지원되는 플랫폼 및 프레임워크 규칙을 자동으로 선택합니다. 2024년 11월 v0.23-beta에서 도입되었습니다. |
| 애플리케이션별 보안 로직 | 사용자 정의 RDL 팩 | 선택적 사용자 정의 RDL 팩에 애플리케이션 신뢰 경계, 권한 부여 결정 및 비즈니스 불변 조건을 인코딩합니다. 프로젝트별 로직은 일반 스캔 규칙과 함께 실행됩니다. |
| 대화형 텍스트 및 그래프 증거 | 증거를 따라가기 | 연결된 텍스트 및 그래프 뷰에서 기록된 소스-싱크 경로를 따라갑니다. 소스 발췌, 파일 레인 및 핸드오프 세부 정보는 교차 파일 증거를 더 쉽게 검사할 수 있게 합니다. |
| 리뷰 수명 주기 및 이식 가능한 보고서 | 리뷰, 재개 및 내보내기 | 스캔 기록, 리뷰 억제를 유지하고 중단된 스캔을 재개합니다. 공유 CLI 및 Web UI 보고서를 통해 HTML, PDF, 편집 가능한 Word 및 JSON을 내보내며, 가능한 경우 오프라인 증거 탐색을 제공합니다. |
날짜는 저장소 또는 릴리스 마일스톤을 식별하며, 전 세계적 우선권을 독립적으로 확립하지는 않습니다. "검증되지 않음"은 검토된 증거로부터 릴리스 번호가 확립되지 않았음을 의미합니다.
릴리스 마일스톤 및 비교 증거는 위에 나열되어 있습니다.
DakshSCRA는 Black Hat USA 2022 교육 중에 소개되었고 Black Hat USA 2023에서 공개 데뷔했습니다. 이러한 날짜는 프로젝트의 소개를 설명하며, 모든 현재 기능을 설명하는 것은 아닙니다.
활발한 개선이 진행 중입니다. 다수의 새로운 기능과 개선 사항이 향후 릴리스에 계획되어 있습니다.
새로운 규칙 업데이트 또는 추가 및 향후 개발에 기여해 주시기 바랍니다.
버그를 발견하면 [email protected]으로 보고해 주세요.
자세한 문서: https://dakshlabs.com/#docs
Daksh SCRA를 실행하는 방법은 두 가지가 있습니다 - 워크플로에 맞는 것을 선택하세요:
| 적합한 대상 | 바로 가기 | |
|---|---|---|
| 🌐 Web UI (Docker) | 시작하는 가장 쉬운 방법 - 명령 하나, 브라우저 대시보드, 실시간 스캔 진행 상황, 보고서/아티팩트 브라우저. 대부분의 사용자에게 권장됩니다. | Web UI (Docker) |
| 💻 CLI (Python) | 스크립팅, CI 파이프라인 또는 Docker 없이 스캔 실행. | CLI 설정 |
두 경로 모두 정확히 동일한 스캔 엔진을 실행합니다 - Web UI는 동일한 CLI 위의 브라우저 프런트 엔드이므로, 어느 쪽이든 결과는 동일합니다.
Daksh SCRA를 실행하는 가장 빠른 방법은 호스트 인식 Docker 시작 헬퍼로 실행되는 브라우저 기반 Web UI를 통하는 것입니다. 스캔 런처, 실시간 콘솔 피드, 과거 보고서의 탐색 가능한 이력을 제공합니다. 시작 헬퍼는 Python 3(표준 라이브러리만)가 필요하며, 애플리케이션과 그 종속성은 Docker에서 실행됩니다.
Docker 설정은 Web UI와 CLI를 동일한 이미지로 빌드된 독립적인 서비스로 실행하므로, 동일한 컨테이너에서 둘 중 하나(또는 둘 다)를 사용할 수 있습니다.
GitHub에서 Daksh SCRA를 다운로드한 후, 먼저 ZIP 아카이브의 압축을 풀어주세요.
docker-compose.yml과 dakshscra.py가 포함된 압축 해제된
프로젝트 폴더 안에서 터미널(Windows에서는 PowerShell 또는 명령 프롬프트)을 엽니다.
아래의 모든 시작 및 Docker Compose 명령을 해당 폴더에서 실행하세요.
터미널이 다른 위치에서 열리면, 먼저 압축 해제된 폴더로 이동하세요:
cd "path/to/extracted/DakshSCRA-folder"
예제 경로를 실제 다운로드 위치와 폴더 이름으로 바꾸세요.
저장소를 복제한 경우에는 상위 폴더에서 cd DakshSCRA를 실행하세요.
시작 도우미는 Windows, WSL, Linux 및 macOS를 인식한 다음, 컨테이너를 시작하기 전에 호스트 루트, 사용 가능한 Windows 드라이브 및 일반 폴더를 읽기 전용으로 마운트합니다. Docker를 실행 중인 컴퓨터에서 실행하세요.
Linux, macOS 또는 WSL(포그라운드):
python3 tools/start_webui.py
Windows PowerShell 또는 명령 프롬프트(포그라운드):
py tools/start_webui.py
분리(백그라운드) 모드로 실행하려면 --detach를 추가하세요. 컨테이너는
시작 명령이 반환된 후에도 계속 실행되어 터미널을 사용할 수 있습니다.
Linux, macOS 또는 WSL (분리 모드):
python3 tools/start_webui.py --detach
Windows PowerShell 또는 명령 프롬프트(분리형):
py tools/start_webui.py --detach
--dry-run을 사용하면 컨테이너를 시작하지 않고 감지된 경로를 검사할 수 있습니다.
기존 .env 경로 재정의가 존중됩니다. 컨테이너가 다시 생성될 때 계정, 스캔 및 런타임
볼륨은 보존됩니다.
Docker Desktop은 선택한 호스트 경로를 공유하기 위한 권한을 요구할 수 있습니다. 마운트를 거부하면 Docker Desktop에서 해당 위치를 허용하고 헬퍼를 다시 실행하세요. 원격 브라우저는 Docker 호스트의 폴더를 보며, 자신의 컴퓨터 드라이브를 보지 않습니다. 자동 감지에는 로컬 Docker 엔진이 필요합니다. 원격 Docker 컨텍스트를 사용할 때는 엔진 호스트에서 헬퍼를 실행하세요.
수동으로 구성된 마운트의 경우 docker compose up --build -d api web을 계속 사용할 수 있습니다. 기본 마운트는 저장소를 /scan-targets에, ${DAKSH_HOST_MOUNT:-/}를 /host/root에 마운트합니다. Windows 드라이브 검색
및 공통 폴더 바로 가기에는 헬퍼를 사용하세요. 일반 Compose는 클라이언트 OS를 감지할 수 없습니다.
그런 다음 http://localhost:8080을 여세요.
다른 포트를 사용하려면: