Meta / application-security

2 개의 포스트

meta

Rust at Scale: An Added Layer of Security for WhatsApp (새 탭에서 열림)

WhatsApp은 최근 30억 명 이상의 사용자들을 멀웨어 위협으로부터 보호하기 위해 미디어 처리 라이브러리를 Rust 언어로 재구축하여 성공적으로 배포했습니다. 이는 글로벌 규모의 서비스에서 Rust가 프로덕션 환경에 적합함을 증명한 사례로, 특히 메모리 안전성이 취약한 C/C++ 기반의 미디어 파싱 라이브러리에서 발생할 수 있는 보안 취약점을 근본적으로 해결하는 데 중점을 두었습니다. 결과적으로 WhatsApp은 성능과 메모리 효율성을 동시에 개선하면서도 사용자 보안을 한층 더 강화하는 성과를 거두었습니다. **미디어 보안의 취약점과 대응의 역사** - 이미지나 영상처럼 무해해 보이는 파일도 운영체제의 취약점을 공격하는 악성 코드를 포함할 수 있으며, 2015년 안드로이드의 'Stagefright' 취약점이 대표적인 사례입니다. - 당시 WhatsApp은 OS 라이브러리의 패치를 기다리는 대신, 자체 개발한 C++ 기반의 미디어 일관성 검사 라이브러리인 'wamedia'를 통해 표준을 준수하지 않는 파일을 사전에 차단하는 방식을 택했습니다. - 하지만 미디어 체크 로직 자체가 신뢰할 수 없는 입력을 자동으로 처리하기 때문에, 이 라이브러리 자체의 메모리 안전성을 확보하는 것이 보안의 핵심 과제로 떠올랐습니다. **Rust를 통한 대규모 현대화 및 성능 개선** - WhatsApp은 점진적인 수정 대신 기존 C++ 버전과 병행하여 Rust 버전의 라이브러리를 새롭게 개발했습니다. - 두 언어 간의 호환성을 보장하기 위해 '디퍼런셜 퍼징(Differential Fuzzing)'과 광범위한 통합 테스트를 거쳐 안전성을 검증했습니다. - 기존 160,000줄의 C++ 코드를 90,000줄의 Rust 코드로 대체했으며, 결과적으로 이전보다 더 우수한 성능과 낮은 런타임 메모리 사용량을 기록했습니다. - 안드로이드, iOS, 웹, 웨어러블 등 다양한 플랫폼 지원을 위한 빌드 시스템 구축과 바이너리 크기 최적화라는 기술적 난관을 극복하고 글로벌 배포를 완료했습니다. **다층 방어 체계 'Kaleidoscope'의 구축** - Rust로 작성된 이 라이브러리들은 'Kaleidoscope'라 불리는 종합 보안 체크 시스템의 핵심 구성 요소입니다. - 단순히 파일 구조의 결함을 찾는 것을 넘어, PDF 내의 스크립트 요소나 임베디드 파일, 확장자를 위조한 MIME 타입 변조 등을 감지합니다. - 실행 파일이나 앱 설치 파일과 같은 위험한 파일 형식을 식별하여 사용자 인터페이스(UX) 차원에서 특별 관리함으로써 비공식 클라이언트나 악성 첨부파일로부터 사용자를 보호합니다. **메모리 안전 언어 중심의 보안 로드맵** - WhatsApp의 분석에 따르면 심각도가 높은 취약점의 대부분은 C/C++의 메모리 관리 문제에서 발생하며, 이를 해결하기 위해 새로운 코드 작성 시 메모리 안전 언어(Memory Safe Language)를 기본으로 선택하고 있습니다. - 불필요한 공격 표면을 최소화하고, 기존 C/C++ 코드에 대해서는 강화된 메모리 할당자와 보안 버퍼 API를 적용하는 등 보안 보증 투자를 병행하고 있습니다. - 이번 Rust 도입의 성공을 바탕으로 향후 더 많은 영역에 Rust 채택을 가속화하여 내부 방어 체계를 지속적으로 강화할 계획입니다. **결론 및 제언** WhatsApp의 사례는 보안이 중요한 클라이언트 사이드 애플리케이션에서 Rust가 단순한 대안을 넘어 최고의 선택지가 될 수 있음을 보여줍니다. 특히 외부에서 유입되는 미가공 데이터를 파싱해야 하는 시스템이라면, 메모리 안전성이 보장되는 Rust로의 전환을 통해 보안 사고의 근본 원인을 제거하고 운영 효율성을 높이는 전략을 적극 검토할 필요가 있습니다.

meta

How AI Is Transforming the Adoption of Secure-by-Default Mobile Frameworks (새 탭에서 열림)

Meta는 잠재적으로 위험한 OS 및 서드파티 기능을 안전한 기본값(Secure-by-default)으로 래핑하는 프레임워크를 통해 개발자의 속도를 유지하면서도 보안을 강화하고 있습니다. 이러한 프레임워크는 기존 API와 유사한 구조를 가져가고 공개된 안정적 API를 기반으로 설계되어 개발자의 마찰을 최소화하고 채택률을 극대화합니다. 특히 생성형 AI와 자동화 기술을 결합함으로써 대규모 코드베이스 전반에 걸쳐 취약한 패턴을 식별하고 보안 프레임워크로의 전환을 가속화하고 있습니다. ### 기본 보안 프레임워크의 설계 원칙 * **기존 API와의 유사성 유지**: 보안 API를 기존의 익숙한 API와 유사하게 설계하여 개발자의 인지적 부담을 줄이고, 불안전한 코드에서 안전한 코드로의 자동 변환을 용이하게 합니다. * **공개 및 안정적 API 기반 구축**: OS 제조사나 서드파티의 비공개 API 대신 공개된 안정적 API 위에 프레임워크를 빌드하여, OS 업데이트 시 발생할 수 있는 호환성 문제와 유지보수 위험을 방지합니다. * **범용적 사용성 확보**: 특정 보안 사례에만 국한되지 않고 다양한 앱과 OS 버전에서 폭넓게 사용할 수 있도록 소규모 라이브러리 형태로 설계하여 배포와 유지보수의 효율성을 높입니다. ### SecureLinkLauncher(SLL)를 통한 인텐트 하이재킹 방지 * **인텐트 유출 차단**: Android의 인텐트 시스템을 통해 민감한 정보가 외부로 유출되는 '인텐트 하이재킹' 취약점을 해결하기 위해 개발되었습니다. * **의미론적 API 래핑**: `startActivity()`나 `startActivityForResult()` 같은 표준 Android API를 `launchInternalActivity()`와 같은 보안 API로 래핑하여, 내부적으로 보안 검증 절차를 거친 후 안전하게 인텐트를 전송합니다. * **범위 검증(Scope Verification) 강제**: 인텐트가 타겟팅하는 패키지를 명확히 제한함으로써, 악성 앱이 동일한 인텐트 필터를 사용하여 민감한 데이터를 가로채는 것을 원천적으로 방지합니다. ### AI 및 자동화를 활용한 보안 채택 가속화 * **취약 패턴 자동 식별**: 생성형 AI 도구를 활용하여 방대한 코드베이스 내에서 보안에 취약한 API 사용 패턴을 실시간으로 감지합니다. * **코드 마이그레이션 자동화**: AI가 안전하지 않은 API 호출을 적절한 보안 프레임워크 호출로 자동 교체하거나 수정 제안을 제공하여 대규모 코드 전환 비용을 절감합니다. * **일관된 보안 규정 준수**: 자동화된 모니터링을 통해 개발 초기 단계부터 보안 프레임워크 사용을 강제함으로써 전체 에코시스템의 보안 수준을 상향 평준화합니다. 보안을 위해 개발자 경험(DX)을 희생하는 대신, 기존 개발 워크플로우에 자연스럽게 스며드는 도구를 제공하는 것이 핵심입니다. 특히 대규모 조직일수록 AI를 활용한 자동 마이그레이션 전략을 병행하여 보안 프레임워크의 도입 장벽을 낮추고 코드의 안전성을 지속적으로 유지할 것을 권장합니다.