KDE 플라즈마(Plasma) 데스크톱 환경에서 샌드박스(sandbox)로 격리된 애플리케이션이 사용자의 특정 클릭 동작을 통해 호스트 시스템에서 임의의 바이너리(binary)를 실행할 수 있는 심각한 취약점이 발견되었습니다. 이는 악성 앱이 샌드박스를 우회하여 시스템을 완전히 제어할 수 있는 가능성을 의미합니다. 연구자는 이 취약점을 이용해 플랫팩(Flatpak) 앱이 호스트의 계산기 프로그램(/usr/bin/kcalc)을 샌드박스 밖에서 실행하는 것을 시연하며 문제의 심각성을 입증했습니다.
이 취약점의 핵심 원인은 KDE의 창 관리자 KWin이 앱이 제공하는 `app_id`를 무조건 신뢰하는 데 있습니다. KWin은 실제 `.desktop` 파일(애플리케이션 정보 파일)과 앱을 매칭하지 않고, `/proc/PID/cmdline` 경로를 통해 프로세스의 실행 명령줄 정보를 읽어옵니다. 악성 앱은 이 `app_id`와 `argv0` (프로세스 실행 시 첫 번째 인자)를 조작하여 마치 다른 합법적인 앱인 것처럼 가장할 수 있습니다. 사용자가 작업 표시줄 아이콘에서 '새 창 열기(Open New Window)'를 선택하거나 마우스 중간 버튼을 클릭하면, 조작된 앱이 샌드박스 외부에서 호스트의 마운트 네임스페이스(mount namespace)와 `app.slice cgroup`에 노출된 상태로 실행됩니다. 이는 사실상 샌드박스의 보호막이 완전히 무력화되는 결과를 초래합니다.
이번 취약점은 리눅스 데스크톱 환경의 샌드박스 보안 모델에 대한 근본적인 질문을 제기합니다. 플랫팩과 같은 샌드박스 기술은 앱을 격리하여 시스템 보안을 강화하는 것이 목표지만, 창 관리자와 같은 핵심 컴포넌트의 허점으로 인해 그 목적이 달성되지 못할 수 있음을 보여줍니다. 특히, 서버 워크로드 보안에 비해 데스크톱 환경의 종단 간(end-to-end) 보안이 상대적으로 소홀히 다뤄지고 있다는 비판도 나옵니다. 안드로이드(Android)나 iOS/macOS가 사용자 대상 앱 샌드박싱을 성공적으로 구현한 사례를 볼 때, 리눅스 데스크톱 환경도 더욱 견고한 보안 모델을 구축해야 할 필요성이 강조됩니다. 제안된 수정 방향은 KWin이 앱 ID를 샌드박스의 보안 컨텍스트(security context), XdpAppInfo, 컨트롤 그룹(control groups) 등 신뢰할 수 있는 경로에서 얻고, `.desktop` 파일과 일치하지 않는 창에는 새 창 실행을 허용하지 않는 것입니다.