배경

배경

KeePassXC가 샌드박스된 경우플랫 팩에, 브라우저는 다음과 같은 경우에만 액세스할 수 있습니다.아니요샌드박스 방식, 즉 deb/rpm 패키지 또는 이와 유사한 패키지로 호스트에 설치됩니다. 브라우저를 샌드박스합니다.파이어폭스 브라우저및 KeePassXC – 또는 최소한 보안상의 이유로 실제로 원하는 브라우저와 KeePassXC를 기본적으로 설치하는 것은 불가능합니다.

간단히 말해서:

  • 이것은 즉시 작동합니다: Firefox(호스트 설치), KeePassXC(플랫허브의 flatpak)
  • 이는 다음이 아닙니다: Firefox(샌드박스), KeePassXC(호스트 또는 샌드박스, 중요하지 않음)

그렇다면 이러한 의사소통이 어떻게 이루어지도록 합니까?

답변1

배경

단지 해결책을 원한다면 이 부분을 건너뛰어도 됩니다. 하지만 궁금한 분들을 위해 우리가 직면한 문제를 설명하겠습니다.

  • $XDG_RUNTIME_DIR/kpxc_serverKeePassXC는 또한 애플리케이션이 수신 대기할 UNIX 소켓을 생성합니다 . keepassxc-proxy시작 – 합격지역 메시징브라우저를 통해(플러그인 [email protected], 즉 KeePassXC-Browser에 의해 트리거됨) 해당 소켓에서 메시지를 수신하려고 시도합니다.
  • Firefox가 샌드박스 처리되지 않은 경우 에이전트는 정상적으로 시작할 수 있습니다. 해야 할 유일한 일은 KeePassXC flatpak에 들어가는 것입니다.
  • 플랫허브 KeePassXC패치가 있습니다keepassxc-proxy가 다음을 통해 시작되도록 허용합니다. 즉, flatpak run이제 Firefox를 실행할 수 있습니다.
  • 이것이 호스트에 설치된 Firefox가 지금까지 작동하는 이유입니다.
  • 이제 Flatpak으로 설치하면 Firefox가 작동하지 않는 이유: 아주 좋습니다 공식Mozilla의 Firefox Flatpak브라우저로서 실제로는 어떤 권한도 없습니다. 예를 들어 파일 시스템에 대한 일반적인 액세스 권한이 없습니다.웹 포털). 어쨌든, 무엇을 하든, 할 수 없는 한 가지 일이 있습니다.호스트 또는 다른 flatpak에서 프로세스 생성.

따라서 우리는 래퍼 스크립트를 만들어 이 문제를 해결할 수 있습니다.flatpak-spawn을 사용하세요Firefox가 샌드박스에서 탈출하도록 하세요. 그러나 Firefox 샌드박스가 얼마나 아름답고 안전하게 구축되었는지를 보면 감히 그러한 기능의 보안을 타협할 수는 없습니다. 결국 보안 관점에서 보면 호스트 컴퓨터에 Firefox를 다시 설치할 수 있습니다. 좋은 소식이 오고 있습니다:이 솔루션은 모든 샌드박스 및 보안 측면을 유지합니다!

그러나 Firefox가 프록시를 실행해야 하는 문제를 해결했지만 아직 더 많은 것이 있습니다. 스포일러 경고, 우리가 해결해야 할 핵심 사항은 다음과 같습니다.

  1. Firefox를 통해 keepassxc-proxy 실행(해결책: Firefox 샌드박스에서 실행)
  2. Firefox가 KeePassXC의 소켓에 액세스하도록 허용합니다. 참고: 이 단계에서는 이미 변형인 Firefox(샌드박스), KeePassXC(호스트 설치)를 실행할 수 있습니다.
  3. KeePassXC flatpak의 UNUX 소켓을 Flatpak 외부의 다른 응용 프로그램에 노출합니다. (해결책: 심볼릭 링크)

현재 해결 방법

v1.2

테스트 환경: Fedora 32, org.mozilla.firefoxflathub의 v75, org.keepassxc.KeePassXCflathub의 v2.5.4

Firefox를 통해 keepassxc-proxy 실행

  1. 먼저 가장 나쁜 점은 keepassxc-proxyFirefox flatpak 내에서 실행되기를 원하기 때문에 바이너리가 필요하다는 것입니다. 우리에게는 좋습니다. 종속성이 많지 않고 독립형 애플리케이션으로 작동합니다.
    1. 그래서 내가 골랐어Rust 프록시 애플리케이션(왜 그러면 안되는 걸까요?

답변2

루크의 대답올바른 길을 가고 있었지만 바꿔야 했어요문제Ubuntu 22.04에서 keepassxc 2.7.1을 사용하려면:

  • 이 저장소는 더 이상 사용되지 않습니다.https://github.com/varjolintu/keepassxc-proxy-rust대신에
  • 호스트와 flatpak에서 사용할 수 있는 libc 사이에 불일치가 있으므로 정적으로 링크된 바이너리를 만들어야 합니다.
  • Flatpak의 관점에서 .json 파일의 경로는 절대 경로여야 합니다.
  • 소켓 이름 변경으로 인해 flatpak override 명령을 조정해야 합니다.

날 봐블로그 게시물자세한 지침을 받으세요.

답변3

@decocijo 및 @rugk의 답변에서 영감을 받아 Chrome 기반 브라우저(Vivaldi)에 대한 작업 예제가 있으며 Firefox에 대한 보다 직접적인 접근 방식도 제공합니다.

Github 필수

git clone https://github.com/varjolintu/keepassxc-proxy-rust
cd keepassxc-proxy-rust

# compile
# add deps if needed
sudo dnf install gcc rustup
rustup-init
rustup target add x86_64-unknown-linux-musl
RUSTFLAGS='-C link-arg=-s' cargo build --release --target x86_64-unknown-linux-musl
cp target/x86_64-unknown-linux-musl/release/keepassxc-proxy ~/.var/app/com.vivaldi.Vivaldi/config/vivaldi/NativeMessagingHosts/

# modify flatpaks
sudo flatpak override --filesystem=xdg-run/app/org.keepassxc.KeePassXC:ro com.vivaldi.Vivaldi
sudo flatpak override --filesystem=xdg-run/org.keepassxc.KeePassXC:ro com.vivaldi.Vivaldi
sudo flatpak override --filesystem=/var/home/m8/.var/app/com.vivaldi.Vivaldi/config/vivaldi/NativeMessagingHosts org.keepassxc.KeePassXC

# modify keepassxc browser path
In the KeePassXC UI.
- Tools
  - Settings
    - Browser Integration
      - General
        - Enable Browser Integration
        - Tick Vivaldi
      - Advanced
        - Use a custom location
          - Chromium
            - ~/.var/app/com.vivaldi.Vivaldi/config/vivaldi/NativeMessagingHosts

관련 정보