[server] 루트가 소유하지 않은 디렉토리에 루트 쓰기 파일을 갖는 것이 왜 나쁜가?

이것은 다른 질문에 대한 의견에 나 왔으며 누군가 나 에게이 이유를 설명 할 수 있다면 좋겠습니다.

주어진 VHost에 대한 오류를 Apache가 사용자의 홈 디렉토리에 기록하도록 제안했습니다. 안전하지 않아이 문제가 발생했습니다. 왜?

답글 주석으로 설명을 요청했지만 루트가 소유하지 않은 폴더에 루트로 쓰는 것은 안전하지 않다는 것뿐입니다. 다시 누군가 누군가 설명 할 수 있습니까?

감사,

바트



답변

때문에 악 사용자가 악의적으로 파일을 가리 키도록 시도 할 수 있습니다 다른 위치에 쓰고있다 . 이것은 간단하지 않지만 실제로 가능합니다.root

예를 들어, 사용자가 가정 된 Apache 로그에서 / etc / shadow심볼릭 링크 를 만드는 방법을 찾으면 갑자기 사용할 수없는 시스템이 생깁니다. Apache ( )는 사용자의 자격 증명을 덮어 쓰기하여 시스템에 결함이 있습니다.root

ln -s /etc/shadow /home/eviluser/access.log

는 IF access.log의의 파일이 사용자가 쓰기 권한이 없습니다 그것을 납치하기 어려울 수 있지만, 가능성을 피하는 것이 낫다 수 있습니다!

logrotate사용하여 작업을 수행하여 아직 존재하지 않는 파일에 대한 링크를 만들 수 있지만 로그가 커지 자마자 해당 logrotate 를 덮어 씁니다.

ln -s /etc/shadow /home/eviluser/access.log.1

참고 :

심볼릭 링크 방법은 단지 개념의 증거로서 주어진 하나의 가능한 공격이다.

우리 가 문제로 알고 있는 것을 블랙리스트에 올리지 않고 화이트리스트 마인드 로 보안을 만들어야 합니다.


답변

프로세스가 소유하지 않거나 신뢰하지 않는 디렉토리에 프로세스를 쓰지 않는 일반적인 원칙은 좋은 것입니다. 그러나이 특별한 경우에는 Apache 코드가 O_NOFOLLOWetc로 로그를 여는 것을 신뢰하는 것이 합리적입니다 . 사용자의 홈 디렉토리에 로그인하는 것이 일반적인 설정입니다.


답변