/etc/fstab의 "nodev"가 왜 그렇게 중요한가요? 해킹을 위해 캐릭터 디바이스를 활용하는 방법은 무엇입니까?

/etc/fstab의 "nodev"가 왜 그렇게 중요한가요? 해킹을 위해 캐릭터 디바이스를 활용하는 방법은 무엇입니까?

저는 Linux 보안에 대해 배우고 있으며 문자 장치가 있는 USB 스틱이 잠재적으로 위험한 이유를 이해하려고 노력하고 있습니다.

bash 실행 파일과 setuid 루트가 포함된 USB 스틱이 있는 경우 위험은 명백합니다. 이와 같은 항목이 있으면 해당 USB 스틱을 가진 사람은 누구나 내 컴퓨터 루트 권한에 해당 항목을 가져올 수 있습니다.

/dev/sdb1 /media/usbstick auto defaults 0 0

내 포함되어 있기 /etc/fstab때문에 .defaultssuid

하지만 캐릭터 디바이스는 어떨까요? 캐릭터 장치가 있는 USB 스틱이 있거나 설치된 경우 dev루트 액세스 권한을 얻거나 콘텐츠를 손상시키기 위해 캐릭터 장치를 어떻게 사용합니까 defaults?

답변1

기본 장치에 대한 액세스는 기본적으로 파일 권한에 의해서만 제어되므로 USB 드라이브에 POSIX 파일 시스템이 포함되어 있고 시스템의 실제 장치에 해당하는 전역적으로 쓰기 가능한 장치 노드가 있는 경우 해당 장치 노드를 사용하여 적절한 장치. 장치를 "일반" 사용자로 간주합니다. 오디오 장치(웹캠) 중 하나에 해당하는 장치를 상상해 보세요 /dev/sda(이것은 문자 장치가 아닌 블록 장치이지만 매개 변수는 동일합니다)...

다음은 상황을 더 명확하게 하기 위한 예입니다. 액세스를 원한다고 가정하면 /dev/sda(그러면 디스크 내용에 대해 원하는 거의 모든 작업을 수행할 수 있습니다. 여기에는 프로그램 이식을 포함하여 root블록 장치이지만 문제는 문자 장치와 동일합니다). 대상 시스템에서 ls -l /dev/sda다음을 표시하십시오 .

brw-rw----  1 root disk      8,   0 Sep  8 11:25 sda

이는 메이저 번호가 8이고 마이너 번호가 0(라인 중간에 있는 것 ) 을 갖는 /dev/sda블록 장치(라인의 시작 부분에 있는 것)임을 의미합니다. 장치 에는 그룹 구성원과 그룹 구성원만 액세스(읽기/쓰기)할 수 있습니다(읽기/쓰기도 가능).b8, 0rootdisk

이제 이 시스템에서는 그럴 수 없지만 root어떤 이유로든 그럴 필요 없이 USB 스틱을 사용자로 마운트할 수 있다고 상상해 보십시오 nodev. 현재 있는 다른 시스템에서는 rootUSB 키에 해당하는 특수 파일을 만들 수 있습니다.

mknod -m 666 usersda b 8 0

usersda그러면 누구나 읽고 쓸 수 있는 특수 파일이 생성됩니다 .

usersda대상 시스템에 키를 설치하면 동일한 방식으로 장치를 사용할 수 있지만 /dev/sda액세스 제한은 없습니다...

(해독된 매퍼 장치에 액세스할 수 있는 한 암호화된 파일 시스템에서도 작동합니다. 적절한 항목과 일치하는 장치를 만듭니다 /dev/mapper.)

관련 정보