유형 1 데스크톱 파일에 대한 보안 고려 사항

유형 1 데스크톱 파일에 대한 보안 고려 사항

이것무료 데스크탑정리하다표준 정의파일 용 .desktop. 불행히도 정의되지 않았습니다권한파일의 (참조무료 데스크톱 메일링 리스트) 소프트웨어는 다음을 통해 배포됩니다.

a) executable .desktop files
b) non executable .desktop files
c) mixed a) and b) in one software package. 

이는 다음과 같은 경우에 유용합니다.리눅스 배포자, 그들의 목표는 일관된 시스템을 제공하는 것입니다. 나는 더 많은 것을 알아보기 위해 sx의 방대한 청중을 활용하고 싶습니다.

.desktop 파일의 장점은 무엇입니까?아니요실행 비트?.desktop파일 시스템에서 허용하는 경우 모든 파일을 실행할 수 있는 이유가 있습니까?

알려진 보안 문제가 있습니까? 실행파일에 문제가 있는 프로그램이 있나요 .desktop?

답변1

a에 반드시 실행 가능 비트가 설정되어 있지 않은 한 가지 분명한 이유는 .desktop이러한 파일이 처음부터 실행 가능하지 않기 때문입니다. 파일에는 .desktop데스크톱 환경에 프로그램을 파일 형식과 연결하는 방법을 알려주는 메타데이터가 포함되어 있지만 자체적으로 그렇게 하도록 설계되지는 않았습니다.

그러나 .desktop파일은 그래픽 환경에 무엇을 실행할지 간접적으로 알려주기 때문에 그 안에 정의된 모든 프로그램을 실행할 수 있는 간접적인 능력을 갖고 있어 악용 가능성이 높습니다. 악성 파일이 악성 또는 원치 않는 프로그램을 실행하는 것을 방지하기 위해 .desktopKDE와 gnome 개발자는 보안 계층을 추가하기 위해 Unix 파일 실행 권한의 의도된 목적에서 다소 벗어난 사용자 정의 핵을 도입했습니다. 이 새로운 계층을 사용하면 .desktop데스크탑 환경에서는 실행 가능한 비트가 설정된 파일만 고려합니다.

단순히 파일과 같은 비실행 파일을 .desktop실행 파일로 변환하는 것은 위험을 수반하므로 의심스러운 관행이 될 것입니다. shebang이 없는 비바이너리 실행 파일은 쉘(쉘이든 아니든)에 의해 실행 bash됩니다 sh. 셸이 아닌 스크립트를 실행하기 위해 셸이 필요한 파일은 예측할 수 없는 결과를 생성할 수 있습니다.

이 문제를 피하려면 파일에 shebang이 있어야 하며 .desktop이를 처리하도록 설계된 올바른 명령을 가리켜야 합니다.xdg-열기, Thunderbird가 여기서 하는 것처럼:

#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Name=Thunderbird
GenericName=Email
Comment=Send and Receive Email
...

이 경우 파일을 실행하면 브라우저나 텍스트 편집기로 파일을 여는 것일 수도 있고 예상한 것과 다를 수도 있는 올바른 작업(및 데스크탑 환경)이 생각하는 작업이 수행됩니다 .desktop.xdg-open

답변2

유형 1 데스크톱 파일에 대한 보안 고려 사항

데스크탑 파일은 파일 관리자와 창 관리자가 사용하는 텍스트 구성 파일입니다. 위에서 언급했듯이 형식은 다음과 같습니다. FreeDesktop 표준에 따라 지정됨:

KDE와 GNOME 데스크탑 환경은 모두 유사한 "데스크탑 항목" 형식을 사용합니다. 이는 특정 프로그램이 시작되는 방법, 메뉴에 나타나는 방법 등을 설명하는 구성 파일입니다. 통일된 표준은 더 큰 커뮤니티에 도움이 됩니다. 두 환경, 그리고 실제로 사양을 구현하는 다른 환경 간의 상호 운용성이 더욱 단순해지도록 모든 당사자로부터 만장일치로 동의를 얻으세요.

이것현재 FreeDesktop 사양 세 가지 유형의 데스크탑 항목이 나열됩니다.

Application이 사양은 ( 유형 1), Link(유형 2) 및 Directory(유형 3) 의 세 가지 유형의 데스크탑 항목을 정의합니다 . 향후에 새로운 유형이 추가되도록 하려면 구현 시 알 수 없는 유형의 데스크톱 항목을 무시해야 합니다.

(유형 1) 데스크톱 파일의 보안 위험은 ApplicationFreeDesktop 메일링 목록에서 여러 번 자세히 논의되었습니다.

나는 freedesktop.org에서 지정한 .desktop 파일이 GNU/Linux 창을 열고 다양한 바이러스와 트로이 목마를 포함하고 있다는 사실을 오래 전에 알아차렸습니다. 이 문제는 이전에 논의된 것 같습니다. 문제가 아직 해결되지 않은 것으로 확인되어 해결 방법을 제안하고 싶습니다.

전통적으로 인터넷에서 다운로드한 파일은 단순히 "클릭"하여 unix/GNU/Linux에서 실행할 수 없으며 실행 권한을 부여해야 합니다(설치 프로그램을 사용하거나 아카이브 추출).

--샘 왓킨스,".desktop 파일, 심각한 보안 취약점, 바이러스 친화성", 2006년 4월(LWN 요약)

앞서 언급한 제한 사항에 따라 시작이 금지된 경우 사용자는 서비스를 자동으로 실행 가능하게 만든 후 시작하도록 선택할 수 있습니다. 이 부분이 조금 불안하긴 하지만, 기존 바탕 화면 아이콘, 패널 런처 등이 계속 작동하도록 쉽게 허용하기 위한 최선의 옵션이라고 생각합니다.

--마이클 파인,".desktop 파일 보안", 2009년 2월

내가 아는 한, 데스크톱 파일과 관련된 CVE는 단 하나뿐입니다. CVE-2017-14604.

3.23.90 이전의 GNOME Nautilus에서는 .desktop 파일의 이름 필드가 .pdf로 끝나지만 파일의 Exec 필드가 악성 "sh -c"를 실행하는 공격에서 알 수 있듯이 공격자가 .desktop 파일 확장자를 사용하여 파일 형식을 스푸핑할 수 있었습니다. 방법. " 명령입니다. 즉, Nautilus는 파일에 실제로 안전하지 않을 수 있는 .desktop 확장자가 있다는 UI 표시를 제공하지 않습니다. 대신 UI는 .pdf 확장자만 표시합니다. 한 가지(약간의) 완화 요소는 공격에 .desktop 파일이 필요하다는 것입니다. 실행 권한을 가지려면 사용자에게 파일이 .desktop 파일로 처리되어야 하는지 확인하도록 요청한 다음 메타데이터::trusted 필드에 사용자의 답변을 기억하는 것입니다.

궁금하시다면 여기에 좀 더 자세한 배경 정보가 있습니다.

nautilus: CVE-2017-14604: .desktop 파일은 Nautilus에서 악성 코드를 숨길 수 있습니다.

노틸러스에는 악성 스크립트를 무해한 문서(예: PDF 또는 ODT)로 위장하고 사용자가 열 때 실행할 수 있는 버그가 있습니다.

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=860268

내가 만든 익스플로잇은 sgos_handbook.pdf.desktop(비록 이름을 지을 수도 있고 malware.desktopNautilus에서도 동일하게 보일지라도)라는 파일입니다. 내부 내용은 다음과 같습니다. 이름은 로 설정되고 sgos_handbook.pdf아이콘은 gnome-mime-application-pdf하위 그래프의 PDF에 대한 기본 아이콘입니다. 이 두 가지로 인해 노틸러스에서 볼 때 PDF가 아닌지 알 수 없습니다.

https://micahflee.com/2017/04/breaking-the-security-model-of-subgraph-os/

다음은 개념 증명 악성 데스크톱 파일의 단순화된 버전입니다.

[Desktop Entry]
Name=my-file.pdf
Exec=sh -c "xeyes"
Type=Application
Icon=gnome-mime-application-pdf

아이콘은 PDF 파일처럼 보이지만 PDF 파일을 여는 대신 xeyes. 이후 이 문제는 파일 관리자가 사용자 정의 아이콘과 이름을 표시하기 전에 사용자가 데스크톱 파일을 적극적으로 신뢰하도록 요구함으로써 해결되었습니다.xeyesrm -rf $HOME

데스크탑 파일의 다른 용도.

그러나 데스크톱 파일은 MIME 유형을 연결하고 응용 프로그램을 실행하는 것 이상의 용도로 사용됩니다.

유형 3부터 시작하겠습니다. 이는 데스크탑 항목이지만 .directory파일이 아닌 파일 이기도 합니다 .desktop.

카탈로그 파일(유형 3)

카탈로그 파일(유형 3)은 주로 계층적 메뉴에서 범주를 만드는 데 사용됩니다. 이것이 Categories 유형 1 데스크탑 파일의 키에 사용됩니다. 예를 들어, 다음 예를 고려하십시오 /usr/share/desktop-directories/Utility.directory.

[Desktop Entry]
Name=Accessories
Comment=Desktop accessories
Icon=applications-utilities
Type=Directory
X-Ubuntu-Gettext-Domain=gnome-menus-3.0

따라서 데스크탑 파일의 키에 "Utility"가 있으면 메뉴 하위 디렉토리 Categories에 표시됩니다 .Utility

Dolphin 파일 관리자는 카탈로그 파일도 사용합니다.이미지의 썸네일 미리보기 활성화/비활성화.

.directory내가 아는 한, 파일이 실행 가능해야 할 이유는 없습니다 .

연결된 데스크톱 파일(유형 2)

링크 유형 데스크톱 파일은 모든 URL을 가리킬 수 있습니다. 이를 통해 특정 디렉토리에 관련 링크나 URL을 쉽게 저장할 수 있습니다.

현재 대부분의 파일 관리자에서는 URL을 열기 전에 링크형 데스크톱 파일을 실행할 수 있도록 요구합니다. URL을 여는 것이 임의의 코드를 실행하는 것과는 다르지만 file://URL은 실행 파일을 가리킬 수 있고 URL은 종종 악성일 수 있기 때문에 이는 의미가 있습니다.

파일 URL

예를 들어 Ubuntu에서 example-content패키지는 홈 디렉터리에 다음과 유사한 유형 2 데스크톱 파일을 추가합니다.

[Desktop Entry]
Type=Link
Name=Examples
Comment=Example content for Ubuntu
URL=file:///usr/share/example-content/
Icon=folder

파일 관리자에서 이 데스크탑 파일을 두 번 클릭하면 해당 /usr/share/example-content/폴더로 이동됩니다.

연결된 데스크톱 파일파일을 가리킬 수도 있습니다.. 예를 들어 LaTeX 패키지 매뉴얼을 여는 내용은 다음과 같습니다 hyperref.

[Desktop Entry]
Type=Link
Name=hyperref manual
URL=file:///usr/share/doc/texlive-doc/latex/hyperref/manual.pdf

http/https URL

링크 유형 데스크톱 파일을 사용하여 브라우저에서 HTTP URL을 열 수도 있습니다. 예를 들어, 이 페이지에 링크된 데스크톱 파일은 다음과 같습니다.

[Desktop Entry]
Name=What is the advantage of .desktop files without executable bit set?
Type=Link
URL=https://unix.stackexchange.com/questions/373239/what-is-the-advantage-of-desktop-files-without-executable-bit-set

이것은 가장 크로스 플랫폼 옵션은 아니지만 넓게 사용된.

기타 URL

연결된 데스크톱 파일에는 임의의 URL이 포함될 수 있습니다. URI 체계에 등록된 처리기가 있는 한 작동합니다. 예를 들어 데스크톱 파일에는 mailto:다음 URL이 포함될 수 있습니다.

[Desktop Entry]
Name=Email Linus Torvalds
Type=Link
URL=mailto:[email protected]

또는 smb://URL:

[Desktop Entry]
Name=My Samba share
Type=Link
URL=smb://username@server/my-samba-share

또는 다음과 같은 특수 파일 관리자 URL:

[Desktop Entry]
Name=Trash
Type=Link
Icon=user-trash-full
EmptyIcon=user-trash
URL=trash:///

아니면 이거:

[Desktop Entry]
Name=Recent documents
Type=Link
Icon=document-open-recent
URL=recent:///

관련된 링크들.

관련 정보