
무슨 일이 있었나요?
Molly는 Signal 안드로이드 앱을 포크(fork)해서 만든 메신저 앱이에요. 포크는 원본 코드를 복사해서 따로 발전시킨 프로젝트를 말해요. "Signal도 충분히 안전한데 굳이 포크를 왜 써?"라고 생각할 수 있는데요. Molly는 보안이나 프라이버시에 특히 예민한 사람들 사이에서 꽤 알려진 앱이에요. 그런데 최근 Molly가 약 3개월 동안 업데이트되지 않았다는 문제 제기가 나왔어요. 그 사이 원본 Signal에 들어간 보안 패치를 받지 못했으니 취약한 상태라는 거예요.
좀 아이러니하죠. "Signal보다 더 단단하게" 만든 앱이, 업데이트가 멈추는 순간 오히려 Signal보다 위험해질 수 있다는 얘기니까요. 이 글에서는 Molly가 어떤 앱인지, 업데이트가 늦어지면 왜 위험한지, 포크 프로젝트를 쓰거나 만들 때 뭘 챙겨야 하는지 정리해볼게요.
Molly는 어떤 앱인가요?
Molly는 Signal의 암호화 프로토콜과 서버를 그대로 쓰고, 앱 쪽에 보안 기능을 더 얹은 구조예요. 대표 기능은 이런 것들이에요.
- 비밀번호 기반 데이터베이스 암호화: Signal도 폰에 저장된 대화 DB를 암호화하지만, 암호화 키는 안드로이드 키스토어(시스템이 키를 보관하는 금고 같은 곳)에 맡겨요. Molly는 여기에 사용자가 정한 비밀번호를 하나 더 걸어요. 그래서 앱이 잠겨 있을 때는 폰을 통째로 뺏겨도 대화 내용을 꺼내기가 훨씬 어려워요.
- 자동 잠금과 메모리 정리: 일정 시간 앱을 안 쓰면 잠그고, 메모리에 남은 민감한 데이터를 지우려고 해요.
- 프록시와 Tor 지원: 내가 어디서 접속하는지 숨기고 싶은 사람을 위한 기능이에요.
- Molly-FOSS 버전: 구글 플레이 서비스 없이 돌아가는 빌드예요. UnifiedPush 같은 대체 푸시 방식을 지원해서, GrapheneOS처럼 구글 서비스를 걷어낸 폰을 쓰는 사람들이 많이 써요.
업데이트가 3개월 늦으면 왜 위험할까요?
원본 프로젝트가 보안 패치를 공개하는 순간부터 시계가 돌기 시작하거든요. 오픈소스에서는 보안 수정도 커밋으로 공개되잖아요. 그래서 공격자가 그 diff를 보고 "이전 버전에는 여기에 구멍이 있었구나"를 거꾸로 알아낼 수 있어요. 이걸 패치 디핑(patch diffing)이라고 해요. 원본 사용자는 업데이트를 받아서 안전해지는데, 포크 사용자는 구멍 위치가 이미 공개된 채로 계속 노출되는 거죠.
메신저는 특히 공격 표면이 넓은 앱이에요. 공격 표면은 공격자가 건드려볼 수 있는 입구를 말해요. 메신저는 상대가 보낸 이미지, 영상, 링크 미리보기를 자동으로 해석하고, 음성·영상 통화를 위해 WebRTC 같은 복잡한 미디어 처리 코드도 돌려요. 여러 메신저에서 "메시지를 받기만 해도 감염되는" 제로클릭 공격이 바로 이런 이미지·미디어 처리 라이브러리에서 터진 적이 있어요. 이런 부분의 업데이트를 3개월이나 놓치면 가볍게 넘길 일이 아니에요.
게다가 Signal은 프로토콜과 서버 API도 계속 바꿔요. 너무 오래된 클라이언트는 언젠가 서버 쪽 지원이 끊길 수도 있어요. 그러니 보안뿐 아니라 앱이 계속 제대로 돌아갈지도 걱정해야 해요.
포크가 안고 가는 '유지보수 부채'
이건 Molly만의 문제가 아니에요. 원본을 따라가야 하는 포크라면 다 같은 고민을 안고 있어요. 브라우저 쪽만 봐도, 파이어폭스나 크로미움을 포크한 브라우저들이 원본 보안 패치를 늦게 반영해서 비판받은 일이 여러 번 있었어요. 안드로이드 커스텀 롬도 사정이 비슷하고요.
포크가 원본에서 멀어질수록 머지 비용은 커져요. 그 일을 자원봉사자 한두 명이 맡고 있다면, 그중 한 명의 개인 사정만으로도 프로젝트 전체가 멈출 수 있어요. 이걸 버스 팩터(bus factor)라고 하는데요, "몇 명이 빠지면 프로젝트가 멈추는가"를 뜻해요. 이 숫자가 1인 프로젝트가 생각보다 많아요. 그래서 "기능은 더 많지만 업데이트가 느린 포크"와 "기능은 적어도 큰 조직이 빠르게 패치하는 원본" 중에 뭐가 더 안전한지는 생각만큼 간단하지 않아요.
한국 개발자에게 주는 시사점
1. 쓰는 입장이라면 보안 도구일수록 기능 목록보다 업데이트 주기를 먼저 보세요. GitHub 릴리스 페이지에서 원본보다 몇 버전 뒤처져 있는지만 확인하는 습관을 들여도 위험을 꽤 많이 피할 수 있어요. 상황이 그새 바뀌었을 수도 있으니, 지금 Molly를 쓰고 있다면 최신 릴리스와 메인테이너 공지를 직접 확인해보세요.
2. 만드는 입장이라면 회사에서 오픈소스를 포크해서 쓰는 경우도 많잖아요. 이럴 때는 수정을 최소한으로 하고, 가능하면 플러그인이나 설정으로 분리해두세요. 원본의 보안 공지를 구독하고, Dependabot이나 Renovate 같은 도구로 의존성 업데이트를 자동화해두는 것도 좋아요. "나중에 한꺼번에 머지하자"고 미루는 순간부터 부채가 쌓이기 시작해요.
3. 꼭 필요한 수정이라면 원본에 기여하세요. 포크를 오래 유지하는 가장 확실한 방법은 내가 바꾼 부분을 원본에 반영시켜서 포크해야 할 이유 자체를 줄이는 거예요.
마무리
한줄 정리: 보안 앱이 얼마나 안전한지는 기능보다 "얼마나 빨리 패치되느냐"에 달려 있어요.
여러분이라면 기능이 더 많은 포크와, 기능은 적어도 패치가 빠른 원본 중 어느 쪽을 고르시겠어요? 회사에서 오픈소스 포크를 유지해본 적이 있다면 원본을 따라가는 노하우도 댓글로 나눠주세요.
🔗 출처: Hacker News