Linux는 passwd, setuid 등과 같은 특정 프로세스에 euid 0(루트의 uid)만 제공해야 한다는 것을 어떻게 알 수 있습니까?
프로세스가 루트 권한을 얻을 수 있다면 Linux 플랫폼에 잠재적인 보안 취약점이 발생하지 않을까요?
예를 들어, 루트 사용자 권한(예: passwd)을 얻을 수 있는 프로그램을 작성하면 중요한 시스템 파일(예: /etc/passwd, /etc/groups)이 손상될 수 있습니다.
Linux는 어떻게 보안을 유지하나요?
답변1
이 passwd
프로그램은설정값비트 설정은 다음 명령을 사용하여 볼 수 있습니다 ls -l
.
-rwsr-xr-x 1 root root 39104 2009-12-06 05:35 /usr/bin/passwd
이것은 s
(줄의 네 번째 문자)입니다.
이 권한 비트가 설정된 모든 프로그램은 해당 프로그램의 소유자로 실행됩니다. 이 예에서 사용자는 root
(줄의 세 번째 단어)입니다.
이러한 setuid 프로그램은 시스템의 모든 사용자가 실행할 수 있으므로 어떤 것도 손상시키지 않는지 확인해야 합니다.효과적인 루트 권한. 그렇기 때문에 비밀번호는 본인만 변경할 수 있습니다. Linux 및 기타 유사한 운영 체제는 이러한 setuid 프로그램 작성자가 매우 주의를 기울이기 때문에 여전히 안전합니다.
예시 보기고소 실행 프로그램Apache 웹 서버에서 이것은 널리 사용되는 setuid 프로그램입니다. 이 소스 코드에는 비정상적으로 많은 수의 주석이 있습니다.
답변2
Roland Illig의 답변을 보완하기 위해 루트 권한이 부여되면 시스템 파일을 손상시키거나 다양한 방식으로 시스템에 해를 끼치는 프로그램을 작성하는 것이 전적으로 가능합니다.
문제는 단지글쓰기이는 자동으로 루트로 실행된다는 의미는 아닙니다. 소유자를 루트로 설정해야 하고 Roland가 언급한 setuid 비트를 설정해야 하며 루트만이 이를 수행할 권한이 있습니다.
즉, 그렇습니다. setuid 비트가 설정된 모든 바이너리는 적어도 잠재적인 보안 위험이 있습니다. 루트 액세스 권한을 얻기 위해 setuid 지원 바이너리의 결함을 악용하는 것이 소위 가장 일반적인 소스입니다.권한 승격공격이 발생하면 종종 심각한 결과를 초래합니다. 결과적으로 setuid를 사용하는 소프트웨어는 상대적으로 적고, 존재하는 소프트웨어는 철저하게 조사되는 경향이 있습니다.