Joern은 소스 코드, 바이트코드, 바이너리 실행 파일을 분석하기 위한 플랫폼입니다. 언어 간 코드 분석을 위한 코드의 그래프 표현인 CPG(코드 속성 그래프)를 생성합니다. 코드 속성 그래프는 사용자 정의 그래프 데이터베이스에 저장됩니다. 이를 통해 Scala 기반 도메인별 쿼리 언어로 구성된 검색 쿼리를 사용하여 코드를 마이닝할 수 있습니다. Joern은 정적 프로그램 분석에서 취약점 발견 및 연구에 유용한 도구를 제공한다는 목표로 개발되었습니다.
홈페이지: https://joern.io
문서: https://docs.joern.io/
사양: https://cpg.joern.io
overflowdb.traversal.Traversal
클래스를 제거합니다. 이 변경 사항은 이전 버전과 완전히 호환되지 않습니다. 자세한 글은 여기를 참조하세요. wget https://github.com/joernio/joern/releases/latest/download/joern-install.sh
chmod +x ./joern-install.sh
sudo ./joern-install.sh
joern
██╗ ██████╗ ███████╗██████╗ ███╗ ██╗
██║██╔═══██╗██╔════╝██╔══██╗████╗ ██║
██║██║ ██║█████╗ ██████╔╝██╔██╗ ██║
██ ██║██║ ██║██╔══╝ ██╔══██╗██║╚██╗██║
╚█████╔╝╚██████╔╝███████╗██║ ██║██║ ╚████║
╚════╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝╚═╝ ╚═══╝
Version: 2.0.1
Type `help` to begin
joern>
어떤 이유로든 설치 스크립트가 실패하면 다음을 시도하십시오.
./joern-install --interactive
docker run --rm -it -v /tmp:/tmp -v $(pwd):/app:rw -w /app -t ghcr.io/joernio/joern joern
서버 모드에서 joern을 실행하려면:
docker run --rm -it -v /tmp:/tmp -v $(pwd):/app:rw -w /app -t ghcr.io/joernio/joern joern --server
Almalinux 9에서는 SSE4.2를 지원하는 CPU가 필요합니다. kvm64 VM의 경우 Almalinux 8 버전을 대신 사용하세요.
docker run --rm -it -v /tmp:/tmp -v $(pwd):/app:rw -w /app -t ghcr.io/joernio/joern-alma8 joern
새 릴리스는 하루에 한 번 자동으로 생성됩니다. 더 빨리 릴리스가 필요한 경우 기여자는 릴리스 워크플로를 수동으로 실행할 수도 있습니다.
시간을 내어 Joern에 기여해 주셔서 감사합니다! 풀 요청이 가능한 한 빨리 병합되도록 하기 위한 몇 가지 지침은 다음과 같습니다.
[javasrc2cpg] Addition Operator Fix
.sbt scalafmt Test/scalafmt
실행하세요.sbt
열고 compile
실행한 후 열어 두십시오. 이렇게 하면 다음 단계에서 BSP 빌드를 사용할 수 있습니다.BSP project
로 열기 선택(즉, sbt project
아님 !)Build -> build project
또는 테스트 실행 등을 시작할 수 있습니다. ms-vscode-remote.remote-containers
플러그인을 설치합니다.Folder contains a Dev Container configuration file. Reopen to folder to develop in a container.
.devcontainer/Dockerfile
파일로 생성된 컨테이너의 폴더를 다시 열려면 Reopen in Container
버튼을 선택하세요.scalameta.metals
사이드바로 전환하고 BUILD COMMANDS
에서 import build
선택합니다.import build
성공하면 Joern용 코드 작성을 시작할 준비가 된 것입니다. QueryDB를 개발하고 테스트하는 빠른 방법:
sbt stage
./querydb-install.sh
./joern-scan --list-query-names
마지막 명령은 사용 가능한 모든 쿼리를 인쇄합니다. querydb에 쿼리를 추가하고 위 명령을 다시 실행하여 쿼리가 배포되었는지 확인하세요. 자세한 내용은 별도의 querydb readme를 참조하세요.