취약점 점검 스크립트

GHOST-test.sh

#!/bin/bash
#Version 3
echo "Installed glibc version(s)"
rv=0
for glibc_nvr in $( rpm -q --qf '%{name}-%{version}-%{release}.%{arch}\n' glibc ); do
    glibc_ver=$( echo "$glibc_nvr" | awk -F- '{ print $2 }' )
    glibc_maj=$( echo "$glibc_ver" | awk -F. '{ print $1 }')
    glibc_min=$( echo "$glibc_ver" | awk -F. '{ print $2 }')
    
    echo -n "- $glibc_nvr: "
    if [ "$glibc_maj" -gt 2   -o  \
        \( "$glibc_maj" -eq 2  -a  "$glibc_min" -ge 18 \) ]; then
        # fixed upstream version
        echo 'not vulnerable'
    else
        # all RHEL updates include CVE in rpm %changelog
        if rpm -q --changelog "$glibc_nvr" | grep -q 'CVE-2015-0235'; then
            echo "not vulnerable"
        else
            echo "vulnerable"
            rv=1
        fi
    fi
done
if [ $rv -ne 0 ]; then
    cat <<EOF
This system is vulnerable to CVE-2015-0235. <https://access.redhat.com/security/cve/CVE-2015-0235>
Please refer to <https://access.redhat.com/articles/1332213> for remediation steps
EOF
fi
exit $rv
 
BASH
  1. chmod +x ./GHOST-test.sh
  2. ./GHOST-test.sh

 

패치

  1. glibc 및 패키지 업데이트

    yum update -y
    CODE
  2. glibc 는 모든 프로그램과 daemon 에서 사용되므로 확실하게 적용하려면 시스템 재부팅

    reboot
    CODE
  3. 재부팅이 곤란한 시스템일 경우 현재 구동된 app 중에 glibc 를 사용하고 있는 프로그램을 찾아서 수동으로 재구동

    lsof +c 15 | grep libc- | awk '{print $1}' | sort -u
    CODE

 

Ref