Solaris 2.x lp Print 서비스 취약점과 대책
2019.06.09 11:06
설명
- Solaris 2.x lp 프린트 서비스가 안전하지 않은 방법으로 임시파일을 생성하여 보안 취약성 존재한다.
- lp 프린트 서비스는 파일들을 프린터에 출력하는 기능이 있으며 lp 프린트 서비스가 스풀(spool)로 출력할 때 lp 소유 666 모드를 가진 임시 파일을 /var/tmp 디렉토리에 생성한다. 이 파일을 .rhosts와 같은 임의의 파일로 링크시켜 lp 소유의 임의 파일을 생성하거나 덮어 쓸 수 있고(overwrite), 이를 이용하여 다시 관리자(root) 권한을 얻는 수단으로 사용할 수 있다.
해결책
- 패치가 나오는데로 설치한다.
- 설치된 lp의 구성 변경
가. 다음 명령으로 프린트 서비스를 중지하고 프린트 큐를 비운다.
# /etc/init.d/lp stop
# /usr/sbin/reject printer_queue
나. /etc/init.d/lp 파일을 다음과 같이 수정하여 umask를 022로 설정한다.
state=$1 ===> umask 022
state=$1
다. 이미 만들어진 로그파일들의 이름을 바꾸거나 지운다.
이름을 바꾸기전에 큐에 대기중인 작업이 없도록 한다.
# mv -i /var/lp/logs/lpNet /var/lp/logs/lpNet.previous
# mv -i /var/lp/logs/lpsched /var/lp/logs/lpsched.previous
# mv -i /var/lp/logs/requests /var/lp/logs/requests.previous
라. 임시파일의 디폴트 디렉토리를 /var/lp/로 바꾼다.
# echo Options: PRINTER * = -L/var/lp/*.log | lpfilter -f postio -
# echo Options: PRINTER * = -L/var/lp/*.log | lpfilter -f postior -
마. 프린트 서비스를 다시 시작한다.
# /etc/init.d/lp start
바. 위에서 /usr/sbin/reject 명령을 사용했다면 다음 명령을 수행한다.
# /usr/sbin/accept printer_queue