Solaris 2.x lp Print 서비스 취약점과 대책

Security Notice

Solaris 2.x lp Print 서비스 취약점과 대책

설명

  • Solaris 2.x lp 프린트 서비스가 안전하지 않은 방법으로 임시파일을 생성하여 보안 취약성 존재한다.
  • lp 프린트 서비스는 파일들을 프린터에 출력하는 기능이 있으며 lp 프린트 서비스가 스풀(spool)로 출력할 때 lp 소유 666 모드를 가진 임시 파일을 /var/tmp 디렉토리에 생성한다. 이 파일을 .rhosts와 같은 임의의 파일로 링크시켜 lp 소유의 임의 파일을 생성하거나 덮어 쓸 수 있고(overwrite), 이를 이용하여 다시 관리자(root) 권한을 얻는 수단으로 사용할 수 있다.

해결책

  1. 패치가 나오는데로 설치한다.
  2. 설치된 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
0 변경된 사항