KeePassXC 데비안 관리자, 모든 네트워크 기능 제거
(fosstodon.org)- Debian의
keepassxc패키지가 최소 기능 패키지로 바뀌면, 기존 기능을 유지하려는 사용자는keepassxc-full로 전환해야 함 - 제거 범위는 네트워킹에 그치지 않고 YubiKey, auto-type, 브라우저 통합, SSH agent, FDO secrets, favicon 다운로드, HIBP까지 포함됨
- Debian 패키지 설명은 기본
keepassxc가 “bare minimal functionality”만 제공하며, 네트워킹·SSH agent·브라우저 플러그인·FDO secret storage를 보안상 복잡성으로 분류함 - 변경 공지는
NEWS.Debian.gz와apt-listchanges를 통해 전달되며, stable 사용자는 릴리스 노트를 확인해야 함 - 패키지 이름과 전환 방식은 아직 조정 여지가 있으며, Trixie 이후에는
apt install keepassxc가 두 선택지를 보여주는 방안이 거론됨
Debian keepassxc 패키지 변경
- Team KeePassXC는 Debian 사용자에게
keepassxc패키지 관리자가 기능을 대폭 제거하려 한다고 알림 - 변경이 testing/sid 밖으로 반영되면, 기존 기능이 필요한 사용자는
keepassxc-full로 전환해야 함 - Debian 버그 리포트는 네트워킹 비활성화처럼 보이지만, Team KeePassXC는 실제 변경이 네트워킹을 넘어 전체 기능 제거에 가깝다고 반박함
제거되는 기능 범위
- Team KeePassXC가 밝힌 제거 대상은 다음과 같음
- YubiKey
- auto-type
- 브라우저 통합
- SSH agent
- FDO secrets
- 네트워킹
- favicon 다운로드
- HIBP
Debian 패키지 설명과 근거
- Debian sid의
keepassxc패키지 설명은 기본 패키지가 최소 기능만 포함한다고 안내함 - 해당 설명은 네트워킹, SSH agent, 브라우저 플러그인, FDO secret storage를 보안상 복잡성으로 보고, 꼭 필요하면
keepassxc-full을 사용하라고 안내함 - 관련 Debian 버그 리포트로 #953529 - keepassxc: Compiling with disable networking support가 공유됨
Debian 관리자의 입장
- Debian 관리자는 예기치 않은 변경을 확인할 첫 위치로
/usr/share/doc/<package>/NEWS.Debian.gz를 제시함 - testing/unstable 사용자는
apt-listchanges가 설치되어 있으면 변경 사항을 자동으로 볼 수 있고, stable 사용자는 릴리스 노트를 읽어야 함 - 이 결정은 1년 동안 논의됐으며, xz-utils 사건 이후 기본 포함 코드를 최대한 줄이는 쪽으로 기울었다고 밝힘
- 관리자는 Debian, KeePassXC, 기능이 많은 패스워드 매니저를 동시에 원하는 사용자층이 크게 겹친다고 보지 않음
- 로컬 전용 패스워드 매니저에 “구멍”을 넣는 것은 말이 되지 않는다고 표현함
upstream과 downstream의 소통 문제
- 한 사용자는 논의가 오래 걸렸는데도 upstream 개발자들이 완전히 놀란 것처럼 보이는 점을 문제로 삼음
- Debian 관리자는 Debian 프로젝트 내부 문제이며, IRC에서 다른 Debian 개발자들에게 의견을 물었다고 답함
- upstream의 입장은 이미 알고 있었고, upstream이 IRC를 몇 년 전에 떠났으며, 새 버전 패키징만으로도 에너지가 부족하다고 설명함
- Team KeePassXC와 일부 사용자는 downstream 결정으로 인해 upstream에 버그 리포트와 혼란이 몰릴 수 있다고 우려함
패키지 이름과 전환 방향
- 여러 사용자는 기본
keepassxc를 최소 기능 패키지로 바꾸기보다,keepassxc-minimal또는keepassxc-light같은 이름을 쓰고 기존keepassxc는 전체 기능을 유지하는 편이 덜 혼란스럽다고 제안함 - 한 제안은 다음 구조였음
keepassxc-lightkeepassxc-fullkeepassxc는keepassxc-full에 의존하는 전환 패키지NEWS.Debian으로 변경 설명
- Debian 관리자는 이름 변경이
ftpteam승인에 달려 있으며, Trixie 전환 패키지 방향은 그 제안이 최선일 수 있다고 답함 - Trixie 이후에는 전환 패키지를 없애고,
apt install keepassxc가 두 선택지를 보여주도록 하는 방안도 거론됨
댓글과 토론
Hacker News 의견들
-
업스트림이 소프트웨어에 넣어 둔 기능을 대거 제거한 뒤 같은 이름으로 배포하는 건 좋게 봐도 의심스러움
이 방향으로 가고 싶다면 다른 이름의 포크로 배포해야 하고, 그래야 업스트림이 사용자 문제 제기로 계속 시달리지 않음
예전에 Debian의 Chromium 관리자가 확장 설치 기능을 일방적으로 비활성화했다가 결국 패치가 되돌려진 일이 떠오름
훨씬 오래전 Debian이 네트워크 카드에 바이너리 펌웨어를 로드하는 커널 인터페이스를 제거해서 내 네트워크가 깨졌던 일도 생각남-
실제로 한 일은 XC_ALL 빌드 매개변수를 OFF로 바꾼 것뿐이고 [0], 이 값은 업스트림 CMakeLists.txt의 기본값이기도 함 1
업스트림이 이 기능을 그렇게 중요하게 생각한다면 기본값부터 고쳐야 함
업그레이드 후 기능이 멈춰 사용자가 혼란스러울 수는 있지만, 접미사가 없는 패키지가 업스트림 기본값과 맞는 건 그 자체로는 꽤 합리적임[0] https://salsa.debian.org/debian/keepassxc/-/commit/7d6d16e3f...
1 https://github.com/keepassxreboot/keepassxc/blob/develop/CMa... -
관리자의 역할은 업스트림을 복사해 붙여 넣는 것 이상임
배포판 최종 사용자에게 무엇이 적절한지 판단할 권한이 있음
이 경우에는 합리적인 보안상 근거가 있어 보이고, 대안 패키지도 제공됨 -
Debian은 업스트림을 무시하는 이상한 태도를 가진 유일한 배포판 같음
내가 관리하는 업스트림 프로젝트 두 개에서도 Debian이 일방적으로 패키지 이름을 바꿨음
하나는 한참 뒤에야 알았고, 다른 하나는 내가 명시적으로 반대했는데도 완전히 말이 안 되는 방식으로 진행됐음
결국 사용자에게 설명해야 하는 건 나임수정: 여기서 Debian 쪽 Julian의 오만함을 보면 됨: https://github.com/keepassxreboot/keepassxc/issues/10725#iss... — 내가 말하는 게 이런 것임
-
업스트림이 만든 걸 “도려낸” 게 아님
플러그인 없는 버전을 배포하고, 플러그인이 포함된 -full 버전을 만든 것임
플러그인이 기본으로 꽂혀 있다면 그건 플러그인이 아니라 내장 기능이고, 이 방식이 맞음 -
Apple이 “보안상 더 낫다고 생각해서 당신 앱을 수정했다”고 했다면 사람들은 횃불과 쇠스랑을 들고 나왔을 것임
그런데 deb 관리자가 하면 논쟁거리가 됨
보안 문제가 있다면 안전하지 않은 버전은 아예 제공되면 안 되지만, 이번 경우는 그것도 아님
App Store 같은 세상에서는 관리자의 역할이 바뀌어야 함
할 일은 소프트웨어가 배포판에서 동작하게 만드는 것이지, 이름은 유지한 채 자기 취향대로 유사 포크를 만드는 게 아님
-
-
꽤 합리적인 결정으로 보임
네트워크 기능과 브라우저 통합은 큰 잠재적 구멍이자 공격 진입점임
네트워크 관련 기능 없이 신뢰하는 데이터베이스만 실행한다면, 취약점이 발견되더라도 도구를 악용하기 거의 불가능해야 하고, 비밀번호 관리자처럼 중요한 도구에는 매우 바람직한 특성임
원래 관리자도 동의함 1
네트워크가 켜진 전체 패키지도 Debian에 있으니, 원하는 사용자는apt install keepassxc-full만 하면 모든 네트워크 기능을 쓸 수 있음
다만 업스트림을 “crappy”[0]라고 부르는 건 패키지 관리자로서 생산적인 태도가 아니고, 패키지 이름도keepassxc와keepassxc-full보다는keepassxc-lite와keepassxc-full이 Debian 사용자에게 더 알기 쉬웠을 듯함[0] https://github.com/keepassxreboot/keepassxc/issues/10725#iss...
1 https://github.com/keepassxreboot/keepassxc/issues/10725#iss...
-
많은 것들이 큰 잠재적 구멍이자 공격 진입점이고, 동시에 유용하기도 함
“유용함”은 보안을 높일 수 있음
비밀번호 관리자가 쓰기 어렵다면 사람들이 사용을 그만두기 때문임
좀 더 보니 클립보드 사용이 브라우저 통합보다 꼭 더 안전한지도 불분명함
복사/붙여넣기 실수만으로도 브라우저 통합의 보안 부담 상당 부분을 상쇄할 수 있음
오래전 큰 회사에서 계약 작업을 했는데, 계정 관리자들의 노트북에는 디스크 암호화 비밀번호, Windows 로그인 비밀번호, AD 로그인 비밀번호가 있었고 모두 달라야 했으며 몇 달마다 바꿔야 했고 복잡도 요구사항도 심했음
내가 본 모든 노트북에는 예외 없이 세 비밀번호가 적힌 포스트잇이 붙어 있었음
요점은 가상의 보안 덕후식 보안이 실제 현실 보안과 같지 않다는 것임
적어도 항상 같지는 않고, 여기에는 실제 절충이 필요함1: 우리는 외부 계약자로서 일부 직원들의 노트북 유지보수를 했음
원래 그러면 안 됐지만, 회사 IT 시스템을 통하면 관료주의 때문에 너무 오래 걸려서 훨씬 빠르고 쉬웠음
그런 유형의 회사였음
이것 자체도 당연히 “보안 위험”이었는데, 컴퓨터 매장의 임의 기술자가 극비 회사 데이터가 든 노트북을 만지는 건 원래 맞지 않기 때문임
다만 보호할 게 그렇게 많지는 않았다고 봄. 영업/고객 숫자 정도였고, 아주 제한된 사람들에게만 유용한 정보였음 -
브라우저 통합이 수동 복사/붙여넣기보다 보안을 높이는 면이 하나 있음
브라우저 확장은 자격 증명을 채우기 전에 페이지 URL을 확인하지만, 수동 복사/붙여넣기는 오타 도메인이나 동형 문자 피싱에 취약함 -
네트워크 기능과 브라우저 통합이 큰 잠재적 구멍이라는 데는 동의하지만, GitHub 이슈의 참여자들이 말한 것처럼 전체 빌드에 비해 축소 빌드 테스트가 거의 없고, 임의의 빌드 플래그 조합은 전혀 테스트되지 않는다는 점이 중요함
다른 곳에서도 나왔듯이 비활성화된 “선택” 플래그 중 하나가 yubikey 지원이고, 이 때문에 새로 깨진 패키지로 업그레이드한 사용자가 비밀번호 관리자에서 잠겨 버리고 있음
그 플래그 하나만 다시 켜도 실제로 아무도 테스트하지 않는 상태가 됨
기존 사용자를keepassxc-full로 옮겼다는 전제라면keepassxc-lite라는 이름이 문제를 막았을 것이라는 데 동의함
그런데 바로 그게 핵심임
가장 안전한 해법을 기본값으로 삼는 건 합리적이지만, 관리자는 업스트림이나 사용자가 원하지 않는 한 기존 기능을 깨서는 안 되고, 특히 사용자를 비밀번호 관리자에서 잠기게 하면 안 됨 -
GitHub에 “crappy”라고 올린 건 너무 무례해서, 내가 Debian을 쓰고 있었다면 사용을 재고했을 정도임
패키지가 그렇게 형편없는 기능으로 가득하다면 왜 굳이 관리하는지 모르겠음
그냥 없애고 사용자가 제대로 설치하는 방법을 알아서 찾게 하는 편이 낫겠음
KeepassXC 개발자들이 안쓰럽고, 오픈소스 프로젝트 유지도 어려운데 이런 일까지 감당해야 함 -
crappy라는 표현을 보는 순간 julian-klode에 대한 존중이 바로 사라졌음
-
-
drawks가 제안한 해법이 분명히 올바른 선택으로 보임:
적절한 해법은 아마 소프트웨어의 "-full"과 "-minimal" 버전을 모두 패키징하고, Debian 패키지 메타데이터 필드로 두 패키지 사이에 Conflicts 관계를 정의하며, 둘 다 keepassxc를 Provides하도록 태그하고, -full 빌드에는 Replaces: keepassxc 태그도 추가하는 것일 듯함. 그러면 패키지 업그레이드 중 기존 사용자는 업그레이드/교체되는 패키지의 기능을 계속 제공하는 버전을 받게 되고, 신규 사용자는 설치할 버전을 직접 고를 수 있음
https://github.com/keepassxreboot/keepassxc/issues/10725#iss...
왜 이게 명백한 선택지가 아닐 수 있는지 모르겠음
-
관리자는 자기 견해가 있고, 명시적으로 기본값을 바꾸고 싶어 했기 때문임
-
그게 명백한 선택일 뿐 아니라, 실제 Debian에서 정확히 그렇게 일어났음: https://salsa.debian.org/debian/keepassxc/-/commit/7d6d16e3f...
원 글은 그냥 잘못 쓰인 클릭베이트임
아무것도 제거되지 않았고,keepassxc-full패키지로 옮겨졌을 뿐임
-
-
한편 Arch 쪽에서는, 아마 사용자층에서 꽤 흔히 설치되어 있을 fwupd 패키지가 조용히 passim에 의존하도록 설정됐고, passim은 명시적 사용자 동의 없이
0.0.0.0:275001에 열린 웹 서버를 띄움
게다가 passim은 구멍이 스위스 치즈보다 많기로 유명한 GnuTLS를 사용함 2
정말 말도 안 된다고 보고, 체인 어딘가에 xz 유형의 익스플로잇이 숨어 있어도 놀랍지 않을 것 같음-
굳이 fwupd를 찾을 것도 없음
어디에나 있는 systemd-resolved는 요청 시 5355 포트에서 LLMNR 서버, 즉 mDNS라고도 불리고 예전 Microsoft NetBIOS 계열인 것을 열 수 있음
사물인터넷 때문에 모두가 내 LAN에 접근할 수 있는 시대라 이제 Linux도 그 난장판에 합류하게 만드는 중임fwupd 수정은 기본 설정 파일 품질이 낮고 주석 처리된 기본값도 없으니 이렇게 하면 됨:
# /etc/fwupd/fwupd.conf [fwupd] P2pPolicy=noneresolved 수정은
/etc/systemd/resolved.conf에서LLMNR=no로 주석 처리되어 있고, 아마DNSStubListener=no도 원할 것임
괜찮은 기본값은 이렇다:# /etc/systemd/resolved.conf [Resolve] DNS=9.9.9.9#dns.quad9.net 149.112.112.112#dns.quad9.net 2620:fe::fe#dns.quad9.net 2620:fe::9#dns.quad9.net FallbackDNS=127.0.0.1 ::1 Domains=~. DNSOverTLS=yes LLMNR=no DNSStubListener=no -
알아두면 좋음
이건 별도 글로 올라와도 될 것 같음
-
-
패키지 관리자는 최소 놀람의 원칙에 따라 움직여야 하고, 문서화됐거나 최소한 그럴듯한 위험이 없는 한 핵심 기능을 비활성화하지 말아야 한다고 봄
이 댓글 섹션에서 “플러그인”이라는 단어가 현재 25번 나오지만, 여기서 말하는 건 플러그인이 아님
KeePassXC에는 기능이 많지만, 명시적 사용자 조작 없이 그 자체만으로 취약점의 유력한 원천이 될 만한 것은 없어 보임
브라우저 통합은 설정하기 전 먼저 켜야 하고, 이 플래그로 비활성화된 다른 기능들도 아마 마찬가지라서-minimal패키지가 더 적절했을 것임
불확실한 미래에 이 변경으로 이득을 볼 극소수 사용자보다, 브라우저 통합을 쓰던 사람들에게 생길 심각한 불편이 훨씬 큼
브라우저 통합은 일반적으로 클립보드 접근보다 훨씬 안전한 기능이기도 함
프로젝트의 비전과도 맞지 않아 보임:누구나 사용할 수 있으면서, 필요한 사람에게는 고급 기능도 제공하는 애플리케이션을 만드는 것이 목표임
-
기존 사용자를 깨뜨리지 않고도 이 구분을 만들 수 있었으므로, Debian 패키지 관리자의 나쁜 결정 외에는 달리 보기 어려움
네트워크 기능 없는 KeepassXC를 쓸 수 있는 건 분명 좋지만, 브라우저 통합을 틈새 기능으로 보는 건 심하게 현실과 동떨어져 있음
지금 Debian에서 KeepassXC를 쓰는 사용자 절반 이상, 아마 훨씬 많은 수가 이번 방식 때문에 예고 없이 비활성화될 기능을 원한다고 돈을 걸 수 있음
결국 결정 권한은 그들에게 있지만, 그렇다고 좋은 결정이라는 뜻은 아니며, 나는 아니라고 봄 -
KeePassXC 관리자의 말:
이 스레드가 시작되기 전까지 이 새 패키징 방식이 사람들의 작업 흐름을 망가뜨렸다는 보고를 세 건 받았음. 한 건은 yubikey 기능이 제거되어 더 이상 데이터베이스를 열 수 없게 된 사용자였음. 잠깐 생각해 보길 바람. 가장 중요한 비밀에 접근하지 못하게 된 사람은 패닉 상태에서 때로 비합리적인 행동을 할 수 있음
https://github.com/keepassxreboot/keepassxc/issues/10725#iss...
- 오프라인 비밀번호 관리자를 쓰면서 백업이 없다면 전부 잃어버린 것으로 봐도 됨
이건 감정적 협박처럼 들림
하드웨어 고장, 운영체제를 깨뜨린 업데이트, 잘못된 드라이브에dd사용 등으로 모든 걸 잃은 적이 얼마나 많았는지 모름
- 오프라인 비밀번호 관리자를 쓰면서 백업이 없다면 전부 잃어버린 것으로 봐도 됨
-
다운스트림 관리자가 업스트림 프로젝트의 의도와 다른 방식으로 패키지를 바꾸려면, 다른 이름으로 배포하고 그 수정 버전 때문에 생기는 모든 버그 보고를 직접 처리해야 한다고 봄
-
기본 빌드는 네트워킹이 OFF임
Yubikey, 브라우저 통합 등도 마찬가지임-DWITH_XC_NETWORKING=[ON|OFF] Enable/Disable Networking support (e.g., favicon downloading) (default: OFF)https://github.com/keepassxreboot/keepassxc/blob/develop/INS...
-
WITH_XC_NETWORKING빌드 옵션은 기본적으로 꺼져 있으니, 개발자들이 이 구성을 유효한 빌드 설정으로 의도한 것이 분명함 -
보통은 잘 지켜지지 않는다는 건 알지만, 원래 기본 흐름은 그렇게 되어 있음
배포판 제공 패키지를 쓰다가 버그를 만나면 배포판 패키지에 버그를 열고, 관리자가 살펴본 뒤 업스트림에서 온 버그라면 업스트림 프로젝트에 올리는 식이어야 함
이 방식이 유용한 이유는 1. 패키지 관리자가 해당 패키지에 익숙해서 초기 분류와 분석을 해줄 수 있고, 업스트림에 가기 전에 바로 고칠 수도 있으며, 2. 말한 대로 배포판 패키지는 종종 패치를 포함하므로 관리자가 문제가 패키징에 있는지 업스트림 소스에 있는지 확인해야 하기 때문임
안타깝게도 많은 사용자가 먼저 업스트림에 보고함
그래서 현실적으로는 걱정할 만하지만, 원래는 그러면 안 됨 -
아니면 최종 사용자에게 지원되지 않는 패키지라는 점을 표시해야 함
예를 들어 KeePassXC-Debian이나 KeePassXC-Unsupported로 보이게 하고, About에서 개발자 연락처나 웹사이트를 빼고 Debian 지원 정보로 바꾸는 식임
운영체제에 맞추기 위한 다운스트림의 작은 변경은 괜찮음
하지만 앱을 수정해 핵심 기능을 제거하고 업스트림 개발자가 엄청난 불만을 받게 만드는 건 괜찮지 않음 -
링크된 200자짜리 글도 읽지 않고 왜 댓글을 다는지 모르겠음
관리자는keepassxc-full패키지에 네트워크 관련을 포함한 모든 플러그인을 켰고,keepassxc패키지는 훨씬 나은 보안 태세를 가진 기본 기능만 담게 됨
이건 명백히 완전히 괜찮고 관리자의 권한 범위 안에 있음
전체 불만은 이것이 변경이라는 데 있음
-
-
관심 있는 사람에게는 GitHub의 이 이슈가 최신 댓글을 담고 있는 듯함
https://github.com/keepassxreboot/keepassxc/issues/10725
-
Debian 관리자 Julian Klode의 견해는 꽤 날이 서 있음:
유감이지만 그렇게 되지는 않을 겁니다. 기본으로 모든 플러그인을 빌드해 배포한 것은 실수였습니다. 사용자가 읽어야 할 NEWS 파일을 성가실 정도로 읽지 않기 때문에 1년 정도는 고통스럽겠지만, 어쩔 수 있는 일은 거의 없습니다.
사용자에게 가능한 가장 안전한 옵션을 기본값으로 제공하는 것이 우리의 책임입니다. 이 모든 기능은 불필요하고 로컬 비밀번호 데이터베이스 관리자에는 실제로 속하지 않습니다. 이런 개발 방향은 모두 완전히 잘못됐습니다.
이 쓰레기가 필요한 사용자는 쓰레기 버전을 설치할 수 있지만, 이는 당연히 지나가는 기여자 공격의 위험을 높입니다.
-
-
제목이 틀렸음
원래 글은 관리자가 네트워크 기능뿐 아니라 모든 기능을 제거했다고 했고, 실제로 모든 선택 기능, 완전히 오프라인인 기능까지 빌드 중 꺼졌기 때문에 맞는 말이었음