Bash · C · C++ · Clojure · Dart · Dockerfile · Elixir · HTML · Julia · Jsonnet · Lisp ·
빠른 시작
# Install https://github.com/returntocorp/semgrep#option-1-getting-started-from-the-clibrewinstallsemgrep# Go to your repo code and scancdreposemgrepscan--configauto
# Run the paltform in dockerdockerrun-d--namesonarqube-eSONAR_ES_BOOTSTRAP_CHECKS_DISABLE=true-p9000:9000sonarqube:latest# Install cli toolbrewinstallsonar-scanner# Go to localhost:9000 and login with admin:admin or admin:sonar# Generate a local project and then a TOKEN for it# Using the token and from the folder with the repo, scan itcdpath/to/reposonar-scanner \-Dsonar.projectKey=<project-name> \-Dsonar.sources=. \-Dsonar.host.url=http://localhost:9000 \-Dsonar.token=<sonar_project_token>
CodeQL
설치 가능한 무료 버전이 있지만 라이센스에 따르면 오픈 소스 프로젝트에서만 무료 codeQL 버전을 사용할 수 있습니다.
Install
# Download your release from https://github.com/github/codeql-action/releases## Examplewgethttps://github.com/github/codeql-action/releases/download/codeql-bundle-v2.14.3/codeql-bundle-osx64.tar.gz# Move it to the destination foldermkdir~/codeqlmvcodeql-bundle*~/codeql# Decompress itcd~/codeqltar-xzvfcodeql-bundle-*.tar.gzrmcodeql-bundle-*.tar.gz# Add to pathecho'export PATH="$PATH:/Users/username/codeql/codeql"'>>~/.zshrc# Check it's correctly installed## Open a new terminalcodeqlresolveqlpacks#Get paths to QL packs
Quick Start - 데이터베이스 준비
가장 먼저 해야 할 일은 데이터베이스를 준비하는 것 (코드 트리 생성)으로, 이후 쿼리가 이 위에서 실행됩니다.
codeql이 리포지토리의 언어를 자동으로 식별하고 데이터베이스를 생성하도록 허용할 수 있습니다.
codeqldatabasecreate<database>--language<language># Examplecodeqldatabasecreate/path/repo/codeql_db--source-root/path/repo## DB will be created in /path/repo/codeql_db
이 는 일반적으로 오류를 발생시킵니다. 여러 언어가 지정되었다고 (또는 자동으로 감지되었다고) 말합니다. 다음 옵션을 확인하여 이를 수정하세요!
codeqldatabasecreate<database>--language<language>--source-root</path/to/repo># Examplecodeqldatabasecreate/path/repo/codeql_db--languagejavascript--source-root/path/repo## DB will be created in /path/repo/codeql_db
만약 당신의 레포가 1개 이상의 언어를 사용하고 있다면, 각 언어를 나타내는 언어별 1개의 DB를 생성할 수도 있습니다.
export GITHUB_TOKEN=ghp_32849y23hij4...codeqldatabasecreate<database>--source-root/path/to/repo--db-cluster--language"javascript,python"# Exampleexport GITHUB_TOKEN=ghp_32849y23hij4...codeqldatabasecreate/path/repo/codeql_db--source-root/path/to/repo--db-cluster--language"javascript,python"## DBs will be created in /path/repo/codeql_db/*
codeql이 모든 언어를 식별하고 언어별로 DB를 생성하도록 허용할 수 있습니다. GITHUB_TOKEN을 제공해야 합니다.
export GITHUB_TOKEN=ghp_32849y23hij4...codeqldatabasecreate<database>--db-cluster--source-root</path/to/repo># Exampleexport GITHUB_TOKEN=ghp_32849y23hij4...codeqldatabasecreate/tmp/codeql_db--db-cluster--source-root/path/repo## DBs will be created in /path/repo/codeql_db/*
빠른 시작 - 코드 분석
이제 드디어 코드를 분석할 시간입니다.
여러 언어를 사용했다면, 언어별 DB가 지정한 경로에 생성되었음을 기억하세요.
# Default analysiscodeqldatabaseanalyze<database>--format=<format>--output=</out/file/path># Examplecodeqldatabaseanalyze/tmp/codeql_db/javascript--format=sarif-latest--output=/tmp/graphql_results.sarif# Specify QL pack to use in the analysiscodeqldatabaseanalyze<database> \<qls pack>--sarif-category=<language> \--sarif-add-baseline-file-info \ --format=<format> \--output=/out/file/path># Examplecodeqldatabaseanalyze/tmp/codeql_db \javascript-security-extended --sarif-category=javascript \--sarif-add-baseline-file-info --format=sarif-latest \--output=/tmp/sec-extended.sarif
빠른 시작 - 스크립트 기반
export GITHUB_TOKEN=ghp_32849y23hij4...export REPO_PATH=/path/to/repoexport OUTPUT_DIR_PATH="$REPO_PATH/codeql_results"mkdir-p"$OUTPUT_DIR_PATH"export FINAL_MSG="Results available in: "echo"Creating DB"codeqldatabasecreate"$REPO_PATH/codeql_db"--db-cluster--source-root"$REPO_PATH"for db in`ls "$REPO_PATH/codeql_db"`; doecho"Analyzing $db"codeqldatabaseanalyze"$REPO_PATH/codeql_db/$db"--format=sarif-latest--output="${OUTPUT_DIR_PATH}/$db).sarif"FINAL_MSG="$FINAL_MSG ${OUTPUT_DIR_PATH}/$db.sarif ,"echo""doneecho $FINAL_MSG
또한 VSCode 확장 프로그램을 사용하여 VSCode 내에서 발견된 내용을 확인할 수 있습니다. 데이터베이스를 수동으로 생성해야 하지만, 이후에는 파일을 선택하고 Right Click -> CodeQL: Run Queries in Selected Files를 클릭할 수 있습니다.
# Installsudonpminstall-gsnyk# Authenticate (you can use a free account)snykauth# Test for open source vulns & license issuessnyktest [--all-projects]# Test for code vulnerabilities## This will upload your code and you need to enable this option in: Settings > Snyk Codesnyktestcode# Test for vulns in imagessnykcontainertest [image]# Test for IaC vulnssnykiactest
Java (Maven 및 Android), Kotlin (Android), Swift (iOS), .NET Full Framework, C#, 및 Javascript (Node.js).
Quick Start
# Check the correct release for your environment$wgethttps://github.com/insidersec/insider/releases/download/2.1.0/insider_2.1.0_linux_x86_64.tar.gz$tar-xfinsider_2.1.0_linux_x86_64.tar.gz$chmod+xinsider$./insider--techjavascript--target<projectfolder>
electronegativity: Electron 기반 애플리케이션의 잘못된 구성 및 보안 안티 패턴을 식별하는 도구입니다.
Python
Bandit: Bandit는 Python 코드에서 일반적인 보안 문제를 찾기 위해 설계된 도구입니다. 이를 위해 Bandit는 각 파일을 처리하고, 그로부터 AST를 구축하며, AST 노드에 대해 적절한 플러그인을 실행합니다. Bandit가 모든 파일 스캔을 완료하면 보고서를 생성합니다.
ChatGPT를 사용하여 Javascript 코드를 언미니파이 이 도구는 대형 언어 모델(예: ChatGPT 및 llama2)과 기타 도구를 사용하여 Javascript 코드를 언미니파이합니다. LLM은 구조적 변경을 수행하지 않으며, 변수 및 함수 이름을 바꾸기 위한 힌트만 제공합니다. 무거운 작업은 Babel이 AST 수준에서 수행하여 코드가 1-1 동등성을 유지하도록 합니다.