우려를 표명 한 구체적인 공격은 다음과 같습니다.
종종 공격자는 다운로드 및 클릭을 통해 실행 가능한 사용자를 속이는 사용자를 속일 수 있습니다.
적어도 파일이 웹 브라우저에서 다운로드되는 일반적인 경우에, 우분투에서는 브라우저가 Execute-Permission Bit Required 정책을 준수함으로써 이미이를 방지해야 합니다 . 해당 정책에서 가장 직접적으로 관련된 부분은 다음과 같습니다.
- 웹 브라우저, 메일 클라이언트 등에서 다운로드 한 파일은 실행 파일로 저장해서는 안됩니다.
따라서 사용자에게 웹 브라우저에서 프로그램을 다운로드하라는 메시지가 표시되면 두 번 클릭하여 파일을 실행하려고 시도하면 실행되지 않습니다. 이것은 다운로드 한 파일이 셸 스크립트 또는 .desktop 파일 인 경우에도 적용됩니다. ( 홈 디렉토리의 .desktop 파일 이 실제로 프로그램 이 아니더라도 실행 파일로 표시되어야하는 이유가 궁금하다면 , 그 이유입니다.)
사용자는 구성 변경을 통해이 동작을 변경할 수 있습니다. 대부분의 사람들은 그렇지 않을 것입니다. 아마 그렇게하지 말아야 할 사람들은 그렇게 걱정하지 않아도됩니다. 더 큰 문제는 당신이 이미 악의적 인 사람 (또는 봇) 특정 파일을 다운로드하는 사용자를 지시하는, 걱정 생각보다 복잡한 공격이다, 그것은 자신을 실행 표시 (자신의 파일 브라우저를 통해 또는과 chmod
), 및 그런 다음 실행하십시오.
불행히도, 사용자가 파일에서 실행 비트를 설정하거나 일부 허용 목록에있는 파일 이외의 파일을 실행하는 기능을 제한해도 문제가 눈에 띄게 완화되지는 않습니다. 일부 공격은 이미 작동하고 사소하게 수정 될 수없는 공격도 가능합니다. 근본적인 문제는 파일에 실행 권한이없는 경우에도 파일 실행 효과를 얻을 수 있다는 것 입니다.
이것은 예를 통해 가장 잘 설명됩니다. 한다고 가정은 evil
현재 디렉토리, 그 경우 주어진 실행 권한 (의 파일 chmod +x evil
)과 실행 ( ./evil
뭔가 악을 할 것이다). 프로그램의 종류에 따라 다음 중 하나에 의해 동일한 효과를 얻을 수 있습니다.
. ./evil
또는 현재 실행중인 쉘에서source ./evil
명령을 실행합니다 .evil
bash ./evil
에서 실행 evil
됩니다 bash
.
python3 evil
에서 실행 evil
됩니다 python3
.
perl evil
에서 실행 evil
됩니다 perl
.
- ... 일반적으로 통역사 에서
interpreter evil
실행됩니다 .evil
interpreter
- 대부분의 시스템
/lib64/ld-linux-x86-64.so.2 ./evil
에서 이진 실행 파일을 실행 evil
합니다.
마지막 것까지도 파일에 실행 권한이 있거나 사용자가 파일 실행 권한을 부여 할 필요 가 없습니다.
그러나 악의적 인 지시조차 그렇게 복잡 할 필요는 없습니다. NVM을 설치하거나 업데이트하기 위해 공식적으로 권장되는 방법 중 하나 인 이 악성 이 아닌 명령을 고려하십시오 .
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
악의적이지 않은 이유는 NVM이 악성 코드가 아니기 때문에 URL이 실행시 악의를 가진 다른 사람의 스크립트 인 경우 해당 명령이 스크립트를 다운로드하여 실행하는 것입니다. 어떤 파일에도 실행 권한을 부여 할 필요는 없습니다. 이와 같은 단일 명령으로 악성 파일에 포함 된 코드를 다운로드하고 실행하는 것은 공격자가 사용자를 속이는 일반적인 행동이라고 생각합니다.
사용자가 실행할 수있는 통역사를 제한하려고 할 수 있습니다. 그러나 실제로 사용자가 할 수 있기를 원하는 일반적인 작업에는 실질적으로 영향을 미치지 않는 방법은 없습니다. 몇 개의 프로그램 만 실행하는 키오스크와 같이 컴퓨터에서 사용자가 생각하는 거의 모든 것이 허용되지 않는 매우 제한적인 환경을 설정하는 경우 이는 의미있는 보호 수단을 제공 할 수 있습니다. 그러나 그것은 당신의 유스 케이스처럼 들리지 않습니다.
따라서 귀하의 질문에 대한 대략적인 답변은 "아니오"입니다. 더 완전한 대답은 사용자가 허용 목록에 제공 한 파일을 제외하고 사용자가 파일을 실행하지 못하도록 관리 할 수 있다는 것입니다 . 그러나 그것은 "실행"이라는 엄격하고 기술적 인 의미에 있으며 대부분의 프로그램이나 스크립트를 실행하는 데있어 완전한 효과를 얻는 데 필요하지 않습니다. 방지하기 위해 것을 , 당신이 만들려고 수있는 아주 작은, 그래서 그것은 매우 제한 될 수있는 경우를 제외하고 모든 통역을 나열하지 않았다 화이트리스트. 그러나 당신이 그것을 관리하더라도 사용자는 많은 것을 할 수 없었고, 너무 작게 만들면 스스로 다 치지 않을 것입니다. 아마도 아무것도 할 수 없었습니다. ( 토마스 워드의 의견 참조 )
사용자가 자신을 다치게하면 자신을 다치게 할 수 있습니다.
특정 프로그램이 사용되거나 유해 할 수있는 방식으로 동작하는 것을 제한 할 수 있으며 특정 패턴 랜섬웨어가 따르는 경향이있는 경우 특정 일반적인 경우를 방지 할 수 있습니다. ( AppArmor 참조 ) 일부 값을 제공 할 수 있습니다. 그러나 원하는 포괄적 인 솔루션에 가까운 것은 아닙니다.
어떤 기술적 조치 (있는 경우)를 취하 든 가장 좋은 방법은 사용자를 교육하는 것입니다. 여기에는 그들이 이해하지 못하는 명령을 실행하지 말고, 왜 그렇게 안전한지 설명 할 수없는 상황에서 다운로드 한 파일을 사용하지 말라고 지시하는 것이 포함됩니다. 그러나 백업을 만드는 것과 같은 것들도 포함되어 있기 때문에 (맬웨어 등으로 인해) 문제가 발생할 경우 가능한 피해는 거의 없습니다.