본문 바로가기
Hacking/infra 진단

[Linux] U-13 (상) SUID, SGID, 설정 파일점검

by 알거음슴 2021. 8. 23.
취약점 개요
점검 내용 불필요하거나 악의적인 파일에 SUID, SGID 설정 여부 점검
점검 목적 불필요한 SUID, SGID 설정 제거로 악의적인 사용자의 권한상승을 방지하기 위함
보안 위협 SUID, SGID 파일의 접근권한이 적절하지 않을 경우 SUID, SGID 설정된 파일로 특정 명령어를 실행하여 root 권한 획득 가능함
참고 SUID: 설정된 파일 실행 시, 특정 작업 수행을 위하여 일시적으로 파일 소유자의 권한을 얻게 됨
SGID: 설정된 파일 실행 시, 특정 작업 수행을 위하여 일시적으로 파일 소유 그룹의 권한을 얻게 됨
※ 불필요한 SUID/SGID 목록: 부록 참고
점검대상 및 판단 기준
대상 LINUX
판단기준 양호 : 주요 실행파일의 권한에 SUID SGID에 대한 설정이 부여되어 있지 않은 경우
취약 : 주요 실행파일의 권한에 SUID SGID에 대한 설정이 부여되어 있는 경우
조치 방법 Step 1) 불필요한 SUID, SGID 파일 제거
Step 2) 아래의 목록 이외에 애플리케이션에서 생성한 파일이나, 사용자가 임의로 생성한 파일 등 의심스럽거나 특이한 파일의 발견 시 SUID 제거 필요

 

점검 및 조치
점검 OS별 주요 실행파일에 대한 SUID/SGID 설정 여부 확인
(※ 불필요한 SUID/SGID 목록: 부록 참고)
#ls –alL [check_file] | awk ‘{ print $1}’ | grep –i ‘s’
주요 파일에 불필요한 SUID/SGID가 설정된 경우 아래의 보안설정방법에 따라 SUID/SGID를 제거함
조치 Step 1) 제거 방법
 #chmod -s <file_name>
Step 2) 주기적인 감사 방법
 #find / -user root -type f \( -perm -04000 -o -perm -02000 \) -xdev
 -exec ls –al {} \;
Step 3) 반드시 사용이 필요한 경우 특정 그룹에서만 사용하도록 제한하는 방법
일반 사용자의 Setuid 사용을 제한함 (임의의 그룹만 가능)
 #/usr/bin/chgrp <group_name> <setuid_file_name>
 #/usr/bin/chmod 4750 <setuid_file_name>

 

점검 스크립트

#!/bin/bash

. function.sh

BAR
CODE [U-13] SUID, SGID, 설정 파일점검
cat << EOF >> $RESULT
[양호]: 주요 실행파일의 권한에 SUID와 SGID에 대한 설정이 부여되어 있지 않은 경우
[취약]: 주요 실행파일의 권한에 SUID와 SGID에 대한 설정이 부여되어 있는 경우
EOF
BAR

CHECK1=$(find / -user root -type f \( -perm 4000 -o -perm -2000 \) >> /root/linuxs/U-13.txt 2>&1)

for i in /sbin/dump /sbin/restore /sbin/unix_chkpwd /usr/bin/at /usr/bin/lpq /usr/bin/lpq-lpd /usr/bin/lpr /usr/bin/lpr-lpd /usr/bin/lprm /usr/bin/lprm-lqp /usr/bin/newgrp /usr/sbin/lpc /usr/sbin/lpc-lpd /usr/sbin/traceroute
do
	cat /root/linuxs/U-13.txt | grep $i >> /root/linuxs/U-13_1.txt 
done

CHECK3=$(cat /root/linuxs/U-13_1.txt | wc -l )

if [ $CHECK3 = 0 ] ; then
	OK "주요 실행파일의 권한에 SUID와 SGID에 대한 설정이 부여되어 있지 않은 경우"
else
	VULN "주요 실행파일의 권한에 SUID와 SGID에 대한 설정이 부여되어 있는 경우"
fi

cat $RESULT