관리되지 않는 모든 JAR 파일 스캔

Snyk CLI는 Java 애플리케이션의 관리되지 않는 JAR 파일을 스캔하여 어떤 오픈소스 패키지가 포함되어 있는지 식별할 수 있습니다.

CLI는 패키지 이름, 버전 및 취약점을 패키지가 Maven Central에 있고 JAR 파일 해시가 Maven Central의 해시와 일치하는 경우에만 식별합니다.

전제 조건: 관리되지 않는 JAR 파일을 스캔하려면 지원되는 버전의 Maven을 설치해야 합니다.

단일 폴더의 모든 JAR 파일 스캔 및 각 JAR 파일 개별적으로 스캔

각 JAR 파일을 개별적으로 스캔하려면 다음 명령을 사용하십시오.

snyk test --scan-unmanaged --file=/path/to/file

각 JAR 파일을 개별적으로 테스트하면 Snyk 웹 UI에 스캔된 JAR 파일의 이름이 나타납니다.

WAR 파일 지원: Maven Central에 게시된 개별 WAR 파일을 스캔할 수 있습니다. 오픈소스 종속성 JAR을 직접 스캔하려면 다른 WAR 파일 또는 다른 JAR을 포함하는 JAR 파일을 추출(압축 해제)해야 합니다.

모든 하위 폴더 재귀적으로 스캔

circle-exclamation

Java 앱에는 애플리케이션 내의 여러 다른 폴더에 JAR 파일이 있는 경우가 많습니다.

다음은 Snyk CLI 1.1176.0 이전 버전의 CLI와 함께 사용되는 Linux/Mac Bash 스크립트입니다. 현재 폴더부터 시작하여 모든 하위 폴더를 재귀적으로 탐색하고 발견된 각 JAR 파일을 테스트합니다.

REMOTE_REPO_URL 변수의 값을 설정하는 것이 중요합니다. 이 변수는 --remote-repo-url 매개변수를 사용하여 UI의 단일 Snyk 프로젝트 아래에 모든 스캔 결과를 결합하는 데 사용됩니다.

#!/bin/bash

SNYK_CLI_BINARY_NAME=snyk-cli
SNYK_CLI_BINARY_LOCATION=https://github.com/snyk/cli/releases/latest/download/
REMOTE_REPO_URL= # 여기에 원하는 Snyk UI 프로젝트 이름 삽입

detected_jars=""
undetected_jars=""
detected_count=0
undetected_count=0

[[ -z "$REMOTE_REPO_URL" ]] && { echo "REMOTE_REPO_URL이 비어 있습니다. REMOTE_REPO_URL(6행)을 입력하고 스크립트를 다시 실행하십시오." ; exit 1; }

# OS(MacOS 또는 Linux)에 특화된 Snyk 바이너리 다운로드
case "$(uname -s)" in
   Darwin) 
     curl -L -O $SNYK_CLI_BINARY_LOCATION/snyk-macos
     mv snyk-macos snyk-cli
     ;;
   Linux) 
     curl -L -O $SNYK_CLI_BINARY_LOCATION/snyk-linux
     mv snyk-linux snyk-cli
     ;;
esac

chmod +x $SNYK_CLI_BINARY_NAME

# 모든 .jar 파일을 찾기 위해 폴더를 재귀적으로 반복
# 참고: 이름에 공백이 있거나 이름에 공백이 있는 디렉토리에 포함된 파일은 ERROR가 발생합니다.
for file in $(find . -type f -name '*.jar' | uniq)
do
echo ""
echo "=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-="    
echo $file
echo "=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=" 

# 각 .jar에 대해 Snyk 모니터 실행
if (./$SNYK_CLI_BINARY_NAME monitor --scan-unmanaged --file=$file --project-name=$file --remote-repo-url=$REMOTE_REPO_URL) then
  detected_jars+=$file'\n'
  let detected_count++
else
  undetected_jars+=$file'\n'
  let undetected_count++
fi

done

# 콘솔에 메트릭 출력
echo ""
echo ""
echo ""
echo "=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=" 
echo "감지된 jar ($detected_count) - 전이 종속성 포함 안 함:"
echo ""
if [ ${detected_count} -gt 0 ]; then
   printf "${detected_jars}"
fi
echo ""
echo ""
echo ""
echo "=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=" 
echo "감지되지 않은 jar ($undetected_count) - Maven Central에서 찾을 수 없음:"
echo ""
if [ ${undetected_count} -gt 0 ]; then
   printf "${undetected_jars}"
fi

다음은 scanjar.bat 파일에서 실행되는 모든 하위 폴더의 JAR 스캔용 Windows 배치 스크립트입니다.

이 스크립트를 사용하려면 Snyk CLI를 설치해야 합니다.

REMOTE_REPO_URL을 "econnect"로 설정한 후 이러한 스크립트를 사용했을 때 Snyk UI에 표시되는 결과의 예시는 다음과 같습니다.

관리되지 않는 JAR 파일 스캔 결과
관리되지 않는 JAR 파일 스캔 결과

Last updated