Linux가 파일 형식을 결정하는 방법 및 실행 방법

Linux가 파일 형식을 결정하는 방법 및 실행 방법

파일 확장자를 생략하면 보안 위험이 발생하지 않나요? .pdf 파일은 완전히 배치 파일이 될 수 있습니다. 그렇죠? 또는 .txt는 .pdf(포함된 js 포함)일 수 있습니다. 여기서 가능성은 끝이 없어 보입니다.

문제는 Linux가 파일을 실행하기 위해 잘못된 프로그램을 선택한다는 것이 아닙니다. 알아요리눅스는 파일 유형을 어떻게 알 수 있습니까?어떻게Linux의 파일 확장자 및 프로그램과의 연결. 그러나 이로 인해 공격자가 사용자를 속여 잘못된 유형의 파일을 실행하기가 쉽지 않습니까?

답변1

파일이 "실행"되는 방식에는 여러 가지 컨텍스트가 있습니다.

execve()첫 번째는 프로그램을 실행하기 위해 시스템 호출을 사용하도록 커널에 요청하는 경우입니다 . 여기서 파일의 실행 권한이 작용합니다. 실행 권한 비트가 설정되지 않은 경우 파일은 이런 방식으로 프로그램으로 실행될 수 없습니다.

두 번째는 Unity, Plasma 또는 Nautilus와 같은 다른 특수 셸을 사용하는 것입니다. 이러한 셸은 일반적으로 file파일을 검사하고 MIME 유형(파일 유형 선언 및 시각적 표시기 제공)을 검색하는 프로그램을 실행합니다. 묻는다면열려 있는파일에 대해 일반적으로 호출합니다. 이 파일은 해당 파일에서 다시 실행 xdg-openfile다음 시스템이 해당 유형의 파일로 어떤 작업을 수행하도록 구성되어 있는지, 해당 파일을 여는 데 사용할 수 있는 프로그램 등을 찾습니다.

특별하고 흥미로운 사례가 있습니다. Windows의 ".lnk" 바로가기 파일과 마찬가지로 Linux에도 ".desktop" 파일이 있습니다. 이러한 파일에는 파일 아이콘의 모양, 파일이 실행될 때 수행해야 하는 작업 등에 대한 지침이 포함되어 있습니다.

답변2

실행 비트는 이 공격에 대한 일반적인 보호입니다. 파일을 다운로드하는 프로그램은 항상 실행 비트를 제거해야 하며, 실행 비트가 설정되지 않은 파일은 위험한 작업을 수행할 수 없어야 합니다. 바라보다https://wiki.ubuntu.com/Security/ExecutableBit세부 사항(적어도 우분투에서는).

관련 정보