X11은 위험한가요?

X11은 위험한가요?

저는 X11을 처음 접했고 X11이 인터넷에서 말하는 것처럼 실제로 위험한지 알고 싶습니다.

이것을 어떻게 이해하는지 설명하겠습니다. 현재 사용자 아래에서 시작된 모든 응용 프로그램은 키보드, 마우스, 디스플레이(예: 스크린샷 찍기)에 액세스할 수 있으며 이는 좋지 않습니다. 하지만 공식 저장소에서 프로그램을 설치하면(예를 들어 데비안의 경우), 키로거 등을 포함하지 않을 가능성이 높으면 위험이 과장된 것 같습니다. 내가 잘못?

예, 별도의 서버에서 애플리케이션을 열 수 있습니다(예를 들어, 제퍼), 하지만 공유 클립보드가 없어 불편합니다. TMP 파일을 기반으로 클립보드를 만드는 것도 불편하다.

답변1

현재 사용자 아래에서 시작된 모든 응용 프로그램은 키보드, 마우스, 디스플레이(예: 스크린샷 찍기)에 액세스할 수 있으며 이는 좋지 않습니다.

데스크탑의 모든 X11 클라이언트는 창의 내용 가져오기, 창 변경, 창 닫기, 다른 클라이언트에 대한 키 및 마우스 이벤트 위조, 입력 장치 가져오기 등을 포함하여 서로 심층적으로 액세스할 수 있습니다.

X11 프로토콜 디자인은 클라이언트가 모두 신뢰할 수 있고 서로의 발끝을 밟지 않고 협력할 것이라는 아이디어를 기반으로 합니다(후자는 Firefox, Chrome 또는 Java와 같은 최신 앱에 의해 완전히 깨졌습니다).

그러나 키로거 등을 포함할 가능성이 없는 공식 저장소(예: Debian)에서 프로그램을 설치하면 위험 문제가 분명히 과장됩니다. 내가 잘못?

프로그램에는 악용될 수 있는 버그가 있습니다. X11 서버 및 라이브러리가 최신 상태가 아닐 수 있습니다. 예를 들어, 모든 X11 클라이언트는 다음을 수행할 수 있습니다.충돌무해한 Xkb 요청을 통해 Debian 현재 버전(Buster 10)의 X 서버. (그건결정된업스트림 소스에는 있지만 데비안에서는 아직 만들지 않았습니다). 충돌이 가능하다면 X11 서버의 권한(하드웨어 액세스 등)으로 코드를 실행할 수도 있을 가능성이 있습니다.

Xwayland(및 Debian의 일반 Xorg Xserver)의 느슨한 인증 문제에 대해서는 끝부분의 참고 사항을 참조하세요.이 답변.

네, 별도의 서버(예: Xephyr)에서 애플리케이션을 열 수 있지만 공유 클립보드가 없기 때문에 불편합니다. TMP 파일을 기반으로 클립보드를 만드는 것도 불편하다.

추가 조치를 취하지 않는 Xephyr모든 로컬 사용자기본적으로 연결합니다. 보다이것그것에 대한 토론을 위해.

여러 X11 서버 간에 공유 클립보드를 만드는 것은 흥미로운 문제이며, 이 문제와 혼합되기보다는 자체 Q&A가 필요합니다.

답변2

동일한 사용자 계정으로 동일한 시스템에서 실행되는 애플리케이션은 ptrace시스템 호출을 사용하여 서로의 프로세스 메모리를 수정할 수 있으므로 X11은 여기서 가장 편리한 공격 표면이 아닙니다.

완전히 신뢰할 수 없는 애플리케이션의 경우 먼저 다른 사용자 ID로 실행해야 하며(Android가 다른 공급업체의 애플리케이션을 사용하는 것처럼) XSECURITY 확장을 사용하여 X 서버에 대한 "신뢰할 수 없는" 액세스 토큰을 생성할 수 있습니다. , X11에 대한 애플리케이션의 액세스가 제한됩니다.

  • 자신의 창으로 향하지 않는 입력 이벤트에 접근할 수 없습니다.
  • XTEST 확장에 액세스할 수 없습니다.
  • 투명한 창문 없음

X11의 입력 이벤트에는 Synthetic입력 이벤트가 입력 장치에서 생성되었는지 또는 다른 프로그램에서 전송되었는지 알려주는 필드가 있으며, 수신 프로그램은 합성 이벤트로 무엇을 할지 결정합니다. 예를 들어 xterm해당 이벤트를 무시합니다. XTEST 확장을 사용하면 Synthetic테스트 목적으로 소프트웨어에서 비이벤트를 생성할 수 있으므로 신뢰할 수 없는 클라이언트는 해당 확장을 사용할 수 없습니다.

관련 정보