리눅스는 20년 넘게 서버와 임베디드 영역을 장악해 왔지만, 데스크톱만큼은 윈도우와 macOS에 밀려 좀처럼 자리를 잡지 못했다. 게임은 윈도우, 콘텐츠 제작은 macOS라는 구도가 오래 이어졌다. 그러나 지난 10여 년 사이 Wayland, PipeWire, Portals, FreeDesktop, 그리고 Flatpak 같은 기술들이 등장하면서 데스크톱 리눅스의 사용 경험은 눈에 띄게 달라졌다. 이 글은 그중에서도 2015년 공개된 애플리케이션 배포·격리 기술인 Flatpak을 둘러싼 보안 논쟁을 다룬다.
Flatpak의 발상은 사실 서버 운영에서 빌려온 것이다. 대규모 서버는 가동 시간을 지키기 위해 수년, 때로는 10년이 넘은 커널과 라이브러리를 그대로 쓰면서 필요한 보안 패치만 선별 적용하는 경우가 흔하다. 문제는 최신 기능을 요구하는 소프트웨어가 낡은 시스템 라이브러리 위에서 돌아가지 않는다는 점인데, 이를 해결한 것이 컨테이너다. 의존성과 버전을 하나의 격리된 상자 안에 묶고 호스트 접근을 제한하는 이 방식을, Flatpak은 데스크톱에 가져왔다. 함께 등장한 Portals와 Freedesktop SDK는 그동안 배포판마다 제각각이던 의존성·패키징 환경을 하나의 일관된 플랫폼과 API로 묶어주는 역할을 한다.
'security nightmare' 비판의 구조
Flatpak을 겨냥한 대표적 비판은 "샌드박스가 샌드박스가 아니다"라는 주장이다. 이런 주장은 Flathub에 올라온 10년 된 구형 앱들을 근거로 든다. 원문 저자는 이 논리가 전형적인 체리피킹이라고 본다. 문제의 앱들은 애초에 격리되지 않은 환경을 전제로 설계됐고, 당시에는 필요한 API 자체가 없었거나 개발자가 새 API로 이전하지 않은 상태라는 것이다. 즉 가장 허술한 사례만 골라 "그러니 Flatpak 전체가 가치 없다"고 결론짓는 방식인데, 저자는 이것이 Flatpak이 아니라 해당 앱 자체가 안전하지 않음을 보여줄 뿐이라고 반박한다.
여기서 핵심은 용어의 구분이다. 저자의 주장은 "Flatpak은 샌드박스이고 안전하다. 안전하지 않은 것은 애플리케이션이다"로 요약된다. 어떤 앱이 정적 권한(static permissions)에 의존해 호스트에 폭넓게 접근한다면, 그것은 샌드박스의 결함이 아니라 그 앱이 일관되지 않은 인터페이스에 기대고 있거나 아직 성숙하지 않은 API를 우회하고 있다는 신호다. iOS나 안드로이드만큼 엄격하지 않다는 이유로 샌드박스가 아니라고 단정하는 것은 단어의 의미를 바꾸는 일이라는 것이다.
fractureiser 사례가 보여준 것
부분적 격리도 실제로 효과가 있다는 근거로 저자는 'fractureiser' 멀웨어를 든다. 이 악성코드는 애초에 리눅스에서는 제대로 동작하지 않았지만, 동시에 전통적 패키징 방식의 한계를 드러낸 사례이기도 하다. 저자의 분석에 따르면 이 멀웨어는 사용자의 ~/.config/ 경로를 하드코딩하는데, PrismLauncher Flatpak은 기본 설정상 그 실제 경로에 접근 권한이 없다. 권한 없는 경로에 파일을 쓰면 샌드박스 재시작 시 사라지는 tmpfs에 기록될 뿐이고, 샌드박스 안에서는 systemd도 쓸 수 없어 관련 명령 실행이 실패한다. 멀웨어는 이런 제약을 우회하려 시도하지 않고 격리되지 않은 환경을 가정한다. 다시 말해 "신뢰하는 소프트웨어만 실행한다"는 전제가 더는 충분한 방어가 아니며, 권한을 좁혀두는 것만으로도 피해를 막을 수 있다는 것이다. 사용자는 Flatseal 같은 도구로 각 앱에 주는 권한을 직접 점검할 수 있다.
자주 제기되는 또 다른 비판은 번들된 의존성이 오래됐다는 점이다. 저자는 이를 큰 문제로 보지 않는다. 런타임은 보안 업데이트가 필요할 때마다, 사안이 중대하면 ABI를 깨면서까지 갱신되고, 자동 업데이트 체크 덕에 개발자가 번들 의존성을 일일이 손댈 필요도 줄어든다. GPU 드라이버 같은 주요 라이브러리는 런타임과 별개로 갱신할 수 있다. 설령 어떤 앱이 빌드 오류나 설정 누락으로 낡은 라이브러리를 품게 되더라도, 모든 Flatpak 앱을 감싸는 샌드박스가 개발자가 문제를 고치는 동안 위험을 완화해 준다는 설명이다.
한국 실무자가 읽어야 할 지점
이 글은 명백히 Flatpak을 옹호하는 입장의 논평이라는 점을 감안하고 읽어야 한다. 그러나 실무적으로 짚어둘 지점은 분명하다. 첫째, Flatpak의 보안 수준은 플랫폼 자체와 개별 앱의 권한 설계를 분리해서 평가해야 한다. 같은 Flatpak이라도 앱마다 격리 강도가 크게 다르므로, 배포하거나 도입할 때는 각 앱이 요구하는 권한 범위를 실제로 확인하는 절차가 필요하다. 둘째, 구형 앱을 근거로 한 '샌드박스 무용론'은 전체 생태계의 방향성과는 구분해서 받아들일 필요가 있다.
다만 반대 진영의 구체적 반론, 포털로 막지 못하는 공격 벡터, 권한 상승 경로 등은 이 글에 정량적으로 제시되지 않는다. 저자가 인정하듯 새 API는 아직 모든 사용 사례를 감당할 만큼 성숙하지 않았고, 다수의 앱이 정적 권한에 의존하는 현실도 남아 있다. 결국 PipeWire나 FreeDesktop처럼 진전을 이룬 영역이 있는 한편, 데스크톱 리눅스가 개발자들이 안심하고 겨냥할 플랫폼이 되기까지는 갈 길이 남았다는 것이 저자 스스로 내린 균형 잡힌 평가에 가깝다. 도입을 검토하는 조직이라면 이 논쟁의 양면을 함께 확인하고, 권한 관리 정책을 운영 절차에 포함하는 편이 현실적이다.