![Linux가 파일 형식을 결정하는 방법 및 실행 방법](https://linux55.com/image/106634/Linux%EA%B0%80%20%ED%8C%8C%EC%9D%BC%20%ED%98%95%EC%8B%9D%EC%9D%84%20%EA%B2%B0%EC%A0%95%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%20%EB%B0%8F%20%EC%8B%A4%ED%96%89%20%EB%B0%A9%EB%B2%95.png)
파일 확장자를 생략하면 보안 위험이 발생하지 않나요? .pdf 파일은 완전히 배치 파일이 될 수 있습니다. 그렇죠? 또는 .txt는 .pdf(포함된 js 포함)일 수 있습니다. 여기서 가능성은 끝이 없어 보입니다.
문제는 Linux가 파일을 실행하기 위해 잘못된 프로그램을 선택한다는 것이 아닙니다. 알아요리눅스는 파일 유형을 어떻게 알 수 있습니까?어떻게Linux의 파일 확장자 및 프로그램과의 연결. 그러나 이로 인해 공격자가 사용자를 속여 잘못된 유형의 파일을 실행하기가 쉽지 않습니까?
답변1
파일이 "실행"되는 방식에는 여러 가지 컨텍스트가 있습니다.
execve()
첫 번째는 프로그램을 실행하기 위해 시스템 호출을 사용하도록 커널에 요청하는 경우입니다 . 여기서 파일의 실행 권한이 작용합니다. 실행 권한 비트가 설정되지 않은 경우 파일은 이런 방식으로 프로그램으로 실행될 수 없습니다.
두 번째는 Unity, Plasma 또는 Nautilus와 같은 다른 특수 셸을 사용하는 것입니다. 이러한 셸은 일반적으로 file
파일을 검사하고 MIME 유형(파일 유형 선언 및 시각적 표시기 제공)을 검색하는 프로그램을 실행합니다. 묻는다면열려 있는파일에 대해 일반적으로 호출합니다. 이 파일은 해당 파일에서 다시 실행 xdg-open
된 file
다음 시스템이 해당 유형의 파일로 어떤 작업을 수행하도록 구성되어 있는지, 해당 파일을 여는 데 사용할 수 있는 프로그램 등을 찾습니다.
특별하고 흥미로운 사례가 있습니다. Windows의 ".lnk" 바로가기 파일과 마찬가지로 Linux에도 ".desktop" 파일이 있습니다. 이러한 파일에는 파일 아이콘의 모양, 파일이 실행될 때 수행해야 하는 작업 등에 대한 지침이 포함되어 있습니다.
답변2
실행 비트는 이 공격에 대한 일반적인 보호입니다. 파일을 다운로드하는 프로그램은 항상 실행 비트를 제거해야 하며, 실행 비트가 설정되지 않은 파일은 위험한 작업을 수행할 수 없어야 합니다. 바라보다https://wiki.ubuntu.com/Security/ExecutableBit세부 사항(적어도 우분투에서는).