프로세스가 su/sudo를 실행하는 tty에 키 입력을 보내거나 텍스트를 읽을 수 있습니까?

프로세스가 su/sudo를 실행하는 tty에 키 입력을 보내거나 텍스트를 읽을 수 있습니까?

su/ 를 실행하는 *nix 플랫폼에서 가능한 공격 벡터에 대한 정보가 필요합니다 sudo.

악의적인 프로세스가 사용자가 실행될 때까지 기다리 su거나 sudo해당 루트 액세스를 어떻게든 이용할 수 있습니까? 아니면 이미 어떤 방식으로든 보호되고 있나요?

예를 들어, /dev/tty2가 root에뮬레이트 된 경우 su:

# inject text 
echo Adding malicious text to a root tty, like Enter Password: > /dev/tty2
# read keystrokes
cat /dev/tty2 
# not sure how to write keystrokes or if it is possible

아마도 이것은 확실히 문서화되었거나 보호되어 있을 것입니다. 그렇다면 내 문서를 링크해 주십시오.

예

추신: 제가 악용에 대한 도움을 요청한다고 생각하지 마십시오. 난 아니다. 문제는 컨텍스트에서 로그인을 사용 su/ 사용할 때의 위험에 관한 것입니다.sudoroot논의하다Windows용 명령이 있어야 하는지 여부에 대해 sudo. 사실을 바로잡아야 합니다.

답변1

예, 프로세스는 다음을 통해 tty에 입력을 주입할 수 있습니다.TIOCSTI읽기 및 쓰기 제어. 적어도 Linux에서는 이로 인해 약간의 어려움이 있습니다.한계: 사용자는 루트( CAP_SYS_ADMIN) 여야 합니다.또는주사하다제어 터미널.

이것은 여전히 ​​상당히 위험 TIOCSTI하고속이 비었다OpenBSD와 같은 시스템에서 위협 모델은 일반적으로 문제와 반대입니다. su일반 사용자로 명령을 실행하려면 루트를 사용해야 하며 해당 명령은 작동 중인 컨트롤에 키를 삽입할 수 있어야 합니다. 권한 있는 호출자와 공유됩니다. 예시 보기여기그리고여기.

물론 부팅 biff(1)되는 동일한 tty에서 실행되는 일부 또는 다른 프로그램을 통해 악용 될 수도 있지만 그다지 흥미롭지는 않습니다. 공격자가 업그레이드 방법을 사용할 수 su root확보할 수 있다면 말이죠su있는 계정을sudo

관련 정보