Rust를 대규모 서비스에서 사용하기: WhatsApp을 위한 추가 보안 계층

1 week ago 6

  • 30억명 이상의 사용자를 가진 WhatsAppRust 기반 보안 계층을 도입해 악성코드 위협에 대한 방어력을 강화함
  • 미디어 일관성 라이브러리를 Rust로 재작성해 수십억 대의 기기와 브라우저에 배포, 글로벌 규모의 실사용 검증을 완료
  • 기존 C++ 코드 16만 줄을 Rust 9만 줄로 대체하며 성능과 메모리 효율 모두 개선됨
  • 2015년 Stagefright 취약점 이후 미디어 파일 처리 과정의 안전성을 높이기 위해 Rust같은 메모리 안전 언어 도입을 추진해왔음
  • 이 변화는 WhatsApp·Messenger·Instagram 전반의 보안 전략에서 메모리 안전 언어의 비중을 확대하는 전환점

WhatsApp의 미디어 처리 전략

  • WhatsApp은 30억 명 이상이 사용하는 종단간 암호화 메시징 서비스로, 지속적인 보안 위협 대응을 위해 전략을 발전시켜 옴
    • 사용자가 이미지·영상 등 미디어를 공유할 때 악성코드가 포함될 가능성이 존재
    • 일부 파일은 운영체제나 앱의 패치되지 않은 취약점을 악용할 수 있음
  • 이를 방지하기 위해 Rust 언어를 미디어 공유 기능에 도입, 메모리 안전성을 확보함
    • 이는 전 세계적으로 가장 큰 규모의 Rust 기반 라이브러리 배포 사례로 언급됨

2015년 Android Stagefright 취약점과 대응

  • 2015년 Android의 Stagefright 취약점은 OS 수준의 미디어 처리 라이브러리에 존재해 앱 차원에서 수정이 불가능했음
  • WhatsApp은 자체 C++ 라이브러리 “wamedia” 를 수정해 MP4 표준을 따르지 않는 파일을 탐지하도록 개선
    • 이를 통해 OS 업데이트 없이도 사용자 보호 가능
  • 그러나 wamedia가 신뢰할 수 없는 입력을 자동 처리한다는 점에서, 메모리 안전 언어로의 전환 필요성이 제기됨

Rust로의 전환: 대규모 재작성과 성과

  • WhatsApp은 기존 C++ 버전과 병행해 Rust 버전의 wamedia를 개발
    • 차등 퍼징(differential fuzzing) , 통합 테스트, 단위 테스트로 두 구현 간 호환성을 검증
  • 초기에는 Rust 표준 라이브러리로 인한 바이너리 크기 증가빌드 시스템 호환성 문제가 있었으나 장기적 지원 체계를 구축
  • 결과적으로 C++ 16만 줄 → Rust 9만 줄로 대체, 성능과 메모리 사용 효율 모두 개선
  • Android, iOS, Mac, Web, 웨어러블 등 모든 플랫폼에 Rust 버전 완전 배포 완료
  • 이후 “Kaleidoscope” 시스템을 도입해 PDF, 실행 파일 등 위험 파일 유형을 탐지하고, 확장자 위조나 MIME 스푸핑을 식별함

WhatsApp의 보안 접근 방식

  • WhatsApp은 종단간 암호화, 암호화된 백업, 키 투명성, 통화 보호 기능 등 다양한 보안 계층을 운영
  • CVE 공개, 내·외부 보안 감사, 퍼징 및 정적 분석, 공급망 관리, 공격면 분석을 통해 위험을 식별
  • Bug Bounty 프로그램을 확장해 연구자들이 WhatsApp 네트워크 프로토콜을 분석할 수 있는 Research Proxy를 제공
  • 주요 취약점의 다수가 C/C++ 메모리 안전 문제에서 비롯됨을 확인하고, 세 가지 전략을 병행함
    1. 불필요한 공격면 최소화
    2. 남은 C/C++ 코드의 보안 보증 강화
    3. 신규 코드의 기본 언어를 메모리 안전 언어로 전환

Rust 도입 가속화와 향후 방향

  • Rust는 WhatsApp의 고성능·크로스플랫폼 보안 라이브러리 개발을 가능하게 함
  • 이 변화는 사용자에게 보이지 않는 추가 보안 계층을 제공하며, 심층 방어(defense-in-depth) 전략의 일환
  • WhatsApp과 Meta의 보안팀은 Rust의 고효과 적용 영역을 확대 중이며, 향후 Rust 채택을 가속화할 계획

Read Entire Article