2011-09-28 6 views
0

커널 2.2를 시작한 것 같습니다. 그들은 기능을 도입했습니다. 기능에 관한 유닉스 맨 페이지에 따르면, 루트 사용자가 아닌 경우 스레드별로 cap_set_proc을 호출하여 기능을 부여 할 수 있다고합니다. 따라서 유닉스 용 악성 코드를 작성하는 경우 자신에게 여러 기능을 부여하고 시스템을 손상시킬 수 있다는 것을 의미합니다. 그렇지 않은 경우 프로그램을 실행하는 데 필요한 기능을 어떻게 부여합니까?유닉스 기능은 어떻게 작동합니까?

유닉스의 보안 모델은 결함이있는 것으로 보입니다. 프리미티브. 나는이 권리를 얻고 있는가?

좀 더 구체적인 갈거야 :

를 서로 다른 사용자로 실행중인 다른 프로세스에 신호를 보내 (때 루트가 아닌 사용자로 실행) 어떻게해야합니까? man 페이지에서, 이것을 수행하기 위해 CAP_KILL 기능이 필요하다. 그러나 기능 맨 페이지를 읽는 중, 그 기능을 프로세스에 부여 할 수있는 방법이 확실하지 않습니다. man cap_set_proc에서

+0

오우 와우 .. 어떻게 이런 주제에서 벗어날 수 있습니까? 이 질문을 끝내기로 한 사람이 설명해 주시겠습니까? – JosephH

+1

http://unix.stackexchange.com/이이 질문에 더 적합한 곳으로 보입니다. –

+0

이 질문은 * 절대적으로 * 여기에 주제입니다. – caf

답변

-1

불가능합니다. 소켓 또는 파일을 대신 사용하십시오.

1

:

주의는 기본적으로 그들에게 사용할 수 CAP_SETPCAP을 가지고있는 유일한 프로세스는 프로세스가 커널 스레드로 시작합니다. (일반적으로 init (8), kflushd 및 kswapd가 포함됩니다. 이 기본값을 수정하려면 커널을 다시 컴파일해야합니다.

나를 쉽게 믿어 의심치 않습니다. 누군가가 지금까지 그것을 악용 한 것으로 확신합니다. 유닉스의 보안 모델은 다른 운영 체제와 비교해 보면 간단 할 수 있지만 "결함이있는"것은 아닙니다.

+0

그래, 능력을 부여하는 유일한 방법은 커널을 수정하는 것만 큼 원시적이라고 말해 주겠니? – JosephH

+1

아니요, 저는 유닉스의 대부분의 프로세스가 기능을 수정해야 할 필요가 없다고 말하고 있습니다. 따라서 "허용 된"프로세스가 커널에 하드 코딩되어있는 경우는 거의 없습니다. 나머지 프로세스는 기능에 의존하지 않는 정상적인 보안 모델을 준수합니다. –

관련 문제