
OpenSSH 설치가 CVE-2024-6387에 취약한지 확인하기 위해 스크립트를 사용하는 방법을 제공합니다.
이 README는 시스템의 OpenSSH 설치가 CVE-2024-6387에 취약한지 확인하기 위해 스크립트를 사용하는 방법을 설명합니다. 이 스크립트는 시스템에 설치된 sshd 바이너리를 검사하여 버전을 확인하고, 감지된 버전을 기준으로 취약 여부를 점검합니다.
awk, grep, sed, strings, cut 유틸리티스크립트는 다음 단계를 수행합니다:
type -a sshd 명령어를 사용하여 모든 sshd 인스턴스를 식별합니다.sshd 바이너리에서 버전 문자열을 추출합니다.sshd 바이너리의 버전과 취약 여부 상태를 출력합니다.스크립트를 check_cve_2024_6387.sh 파일로 저장합니다.
스크립트에 실행 권한을 부여합니다:
chmod +x check_cve_2024_6387.sh
스크립트를 실행합니다:
./check_cve_2024_6387.sh
#!/bin/bash
for each_entry in $(type -a sshd | awk '{print $NF}' | uniq); do
version_string=$(strings "$each_entry" | grep -o "OpenSSH_[0-9]\+\.[0-9]\+p[0-9]\+" | uniq)
if [ -n "$version_string" ]; then
version=$(echo "$version_string" | sed -E 's/OpenSSH_([0-9]+\.[0-9]+)p[0-9]+/\1/')
major_version=$(echo $version | cut -d '.' -f 1)
minor_version=$(echo $version | cut -d '.' -f 2)
if [ "$major_version" -lt 4 ] || ([ "$major_version" -eq 4 ] && [ "$minor_version" -lt 4 ]); then
status="YES (Unless patched for CVE-2006-5051 and CVE-2008-4109)"
elif ([ "$major_version" -eq 4 ] && [ "$minor_version" -ge 4 ]) || ([ "$major_version" -ge 5 ] && [ "$major_version" -lt 8 ]) || ([ "$major_version" -eq 8 ] && [ "$minor_version" -lt 5 ]); then
status="NO"
elif ([ "$major_version" -eq 8 ] && [ "$minor_version" -ge 5 ]) || ([ "$major_version" -eq 9 ] && [ "$minor_version" -le 7 ]); then
status="YES"
else
status="Unknown"
fi
echo "Found OpenSSH version: $version in $each_entry"
echo "Vulnerability Status: $status"
if [ "$status" == "YES" ]; then
echo "Patch Immediately to OpenSSH 9.8/9.8p1"
fi
else
echo "No match found for $each_entry"
fi
done