/var/log/data/
원격 위치(예: http를 통해)에서 데이터를 수신하고 일부 mydir 에 로컬로 저장하는 로컬 서비스가 있는 호스트가 있습니다 .
$ ls -al /var/log/data
drwxr-sr-x+ 4 root datalog 4096 Feb 4 18:59 .
drwxr-xr-x 4 root root 4096 Feb 4 18:59 ..
drwxr-sr-x+ 2 root service 4096 Feb 4 19:07 mydir
로컬 서비스는 service:service 소유권으로 실행됩니다.
다음 위치에서 익스플로잇 실행을 차단하고 싶다고 가정해 보겠습니다 /var/log/data/mydir
.
-rwxr-sr-x 1 root service 133156 Jul 19 2014 exploit
익스플로잇 파일의 "s"(setgid) 비트에 주목하세요. 이는 서비스 그룹 권한(로컬 서비스와 동일)으로 실행되도록 합니다.
잠재적인 취약점이 실행되는 것을 방지하는 방법은 무엇입니까? 및 (go-x)에서
"x"를 제거하시겠습니까 ? 서비스 작동에 지장을 줄 수도 있습니다...? 다른 아이디어가 있나요?/var/log/data/
/var/log/data/mydir
답변1
내가 볼 수 있듯이 그룹과 다른 사람들은 쓰기 권한이 없으므로 여기에 파일/디렉터리를 만들 수 없습니다.
루트에서 쓰기 권한을 제거하면 어떻게 되는지 확인하면 됩니다.
답변2
ACL을 사용하여 모든 사용자의 쓰기 및 실행 권한을 거부한 다음 서비스 계정 사용자에게만 전체 rwx를 갖도록 명시적으로 허용할 수 있습니다.http://linux.die.net/man/1/setfacl
답변3
서비스가 어디에서나 실행 파일을 생성할 수 없도록 함으로써 지속적인 악용 위험을 줄일 수 있습니다. 이렇게 하려면 서비스가 액세스할 수 있는 모든 파일 시스템이 다음 조건 중 하나 이상을 충족하는지 확인하십시오.
- 읽기 전용으로 마운트
- 설치
noexec
옵션 - 서비스에서 쓸 수 있는 디렉터리를 포함하지 않습니다.
서비스를 실행chroot 감옥서비스가 볼 수 있는 파일 시스템 부분을 줄이는 데 도움이 됩니다. 당신은 그것을 사용할 수 있습니다번들 설치다른 위치에 있는 파일 시스템의 일부를 봅니다.
여기서 setgid는 대부분 붉은 청어입니다. 공격자가 실행 파일을 생성하고 서비스가 이를 실행하도록 속일 수 있는 경우 취약점은 어쨌든 해당 서비스 그룹에서 실행됩니다. Setgid는 공격자가 서비스를 통해 실행 가능한 setgid 파일을 생성하고 스푸핑할 수 있는 경우에만 문제가 됩니다.다른 사용자실행 파일을 입력하세요.
또한 이 방법으로는 아주 적은 양의 보호만 받을 수 있다는 점에 유의하세요. 공격자가 자신이 업로드한 파일을 실행하도록 시스템을 속일 수 있다면 이미 임의의 코드를 실행할 수 있는 방법이 있을 가능성이 높습니다. 얻을 수 있는 한 가지는 공격자가 실행 파일에 쓸 수 없는 경우 서비스를 다시 시작해도 취약점이 지속되지 않을 수 있다는 것입니다. 그러나 이는 익스플로잇 벡터가 예를 들어 파일 구문 분석의 취약점이 아니라 일부 네트워크 취약점이라고 가정합니다.
서비스를 제한하는 또 다른 방법은 다음과 같은 보안 프레임워크를 사용하는 것입니다.SELinux. 정책을 만드는 것은 어려울 수 있지만 더 많은 제어권을 갖고 있습니다.