WhatsApp, Rust로 보안 강화! 30억 사용자 안전 지킨다.
WhatsApp, Rust 기반 미디어 처리 라이브러리(Media Handling Library)를 도입하여 보안을 강화함
메모리 안전성(Memory Safety)을 제공하는 Rust를 통해 잠재적 보안 위협에 대응
C++에서 Rust로의 전환 과정에서 이진 파일 크기 증가(Binary Size Increase)라는 기술적 난관 직면
커뮤니티에서는 Rust의 대규모 배포(Large-Scale Deployment)에 대한 긍정적 평가와 함께, 공급망 공격(Supply-Chain Attacks)에 대한 추가적인 보안 조치에 대한 궁금증 제기
Rust 도입 배경: Stagefright 취약점
WhatsApp은 2015년 Android의 Stagefright 취약점(Vulnerability)을 계기로 미디어 파일 처리의 보안 강화를 모색했다. 운영체제(OS) 레벨의 취약점으로 인해 WhatsApp 자체 패치가 불가능했기에, 메모리 안전성(Memory Safety)을 제공하는 Rust를 선택하여 잠재적 위협에 대응했다. 이는 OS 업데이트를 기다리는 대신, 자체적으로 보안을 강화하려는 전략의 일환이었다.
C++에서 Rust로의 전환 과정
WhatsApp은 기존 C++로 작성된 wamedia 라이브러리를 Rust로 병렬 개발하는 방식을 택했다. 차등적 퍼징(Differential Fuzzing)과 광범위한 통합 테스트를 통해 두 구현 간의 호환성을 검증했다. 초기에는 Rust 표준 라이브러리(Standard Library)로 인한 이진 파일 크기 증가(Binary Size Increase)와 다양한 플랫폼 지원을 위한 빌드 시스템(Build System) 문제에 직면했지만, 장기적인 투자를 통해 극복했다.
대규모 배포와 성능 개선
Rust 기반 라이브러리는 Android, iOS, Mac, Web, Wearables 등 다양한 플랫폼에 배포되어 30억 명 이상의 사용자에게 제공된다. C++ 버전 대비 Rust 버전은 성능 및 런타임 메모리 사용량 측면에서 이점을 보였다. 코드 라인 수 감소(Code Line Reduction)(16만 라인 C++ → 9만 라인 Rust)는 유지보수성 향상에도 기여했다. 이는 Rust가 대규모 시스템에서도 충분히 활용될 수 있음을 입증하는 사례이다.
커뮤니티의 시각: 보안 및 기술적 과제
커뮤니티에서는 Rust의 대규모 배포에 대해 긍정적으로 평가하면서도, 공급망 공격(Supply-Chain Attacks)과 같은 추가적인 보안 조치에 대한 궁금증을 제기했다. 또한, Rust의 이진 파일 크기(Binary Size) 문제에 대한 해결 방안과 C++ 코드와의 통합 과정에 대한 기술적 세부 사항에 대한 질문이 이어졌다. 일부에서는 Rust가 아닌 다른 기술의 대규모 배포 사례를 언급하며, WhatsApp의 주장에 대한 의견을 제시했다.