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


28

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

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

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

감사,

바트


4
아파치가 루트로 실행하는 것은 무엇입니까? 최소 권한의 원칙은 그것에 반대합니다.
Jonathan Leffler

1
Apache는 www로 실행 중이지만 루트로 시작되어 표준 80과 같이 포트 80에 바인딩 할 수 있습니다. 분명히 루트로도 기록됩니다.
Bart B

답변:


31

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

참고 :

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

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


파일을 읽을 수만 있고 삭제, 편집 또는 다른 작업 (예 : chown, chmod 등)을 할 수 없도록 권한을 설정하는 방법이 있습니까?
Joshua

가능한 모든 대상 파일에서이 작업을 수행해야합니다! 이 쓰기 가능한 파일은 공격자가 소유 한 링크 자체가 아니라 좋아하는 파일입니다.
drAlberT

2
@Joshua : chown은 루트로만 수행 할 수 있습니다. chmod는 파일을 소유 한 사람이 수행 할 수 있습니다. IIRC, 이름 변경은 디렉토리를 소유 한 사람이 수행 할 수 있습니다. AlberT가 언급했듯이 루트가 파일을 작성 하기 전에 링크 작성하는 것은 디렉토리에 쓸 수있는 사람이 수행 할 수 있습니다.
atk

2
@atk : 또한, 디렉토리를 소유 한 사람 +t은 파일 자체에 대한 쓰기 권한이없는 경우에도 일반적으로 디렉토리에서 파일을 제거 할 수 있습니다 (스티커 비트가 설정되어 있지 않은 경우). 파일). root가 파일을 미리 생성하더라도 디렉토리 소유자는 여전히 파일을 삭제하고 다른 파일에 대한 심볼릭 링크로 바꿀 수 있습니다.
James Sneeringer

1
eviluser가 / home / eviluser에 쓸 수 있거나 디렉토리에 대한 권한을 변경할 수있는 경우 (IOW를 소유하고 있음) access.log에 대한 권한이 무엇인지는 중요하지 않습니다. 악의적 인 사용자는 파일을 (재) 이동하고 심볼릭 링크를 그 자리에 놓을 수 있습니다. 또 다른 질문은 소프트웨어가 여는 것에주의를 기울여야하는지 여부입니다.
Jonathan Leffler

1

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.