월드코인 오브 프라이버시 및 보안 감사 보고서

Mar 14, 2024 3 Minute Read

월드코인 프로젝트는 프라이버시와 보안에 대한 약속을 기반으로 설립되었습니다. 이 약속의 일환으로, 프로젝트 기여자 Tools for Humanity (TFH)는 Worldcoin Foundation과 함께 Trail of Bits의 존경받는 보안 전문가들을 참여시켜, orb 소프트웨어에 대한 전문적인 감사를 수행했습니다. 일반적인 보안 평가 외에도 Trail of Bits는 오브와 관련된 일련의 프라이버시 및 기능성 주장에 대해 평가하는 데 중점을 두었습니다. 

최종 보고서는 여기에서 확인할 수 있습니다.

평가 범위

Trail of Bits는 2023년 8월 14일에 소프트웨어 버전을 2023년 7월 8일로 고정하고 SemVer 3.0.10의 평가를 시작했습니다. 2024년 3월 14일 기준으로, orbs에 배포된 현재 소프트웨어 버전은 4.0.34로, 최초 출시일은 2024년 1월 17일 입니다.

TFH는 구현을 검증하기 위해 참여 범위를 좁히는 일련의 포괄적이지 않은 기술적 주장을 제공했습니다. 이러한 주장은 2023년 7월 8일 버전으로 고정된 소프트웨어 출시를 대상으로 했습니다.

1. 기본 선택 해제 가입 흐름에 대하여, 홍채 코드를 제외한 개인 식별 정보(PII)는 orb에 의해 수집되지 않습니다.

  • Orb에 PII(개인식별정보)는 영구 저장되지 않습니다.
  • 홍채 코드를 제외한 PII는 Orb을 떠나지 않습니다(예: 업로드).

2. 기본 선택이 아닌 가입 절차의 경우, PII는 Orb에 의해 안전하게 처리됩니다.

  • 기기에 영구 저장되는 유일한 PII는 Orb의 SSD에 비대칭 암호화된 것입니다.*
  • Orb의 SSD에 저장된 비대칭 암호화된 PII는 Orb에 의해 복호화될 수 없습니다.

3. Orb는 사용자의 기기에서 민감한 데이터를 추출하지 않습니다.

  • Orb이 사용자의 전화에서 수집하는 유일한 정보는 QR 코드에 있습니다.**

4. 사용자의 홍채 코드는 안전하게 처리됩니다.

  • 사용자의 홍채 코드는 오브의 영구 저장 장치에 기록되지 않습니다
  • 사용자의 홍채 코드는 오브의 백엔드로의 단일 요청에만 포함됩니다 ***
  • 홍채 코드는 승인된 서버로만 전송될 수 있으며, 네트워크 통신은 종단 간 암호화됩니다.

* 4.0.XX 릴리스부터, 오브는 데이터 보관 옵션과 상관없이 SSD에 데이터를 저장하지 않습니다.

** 오브 소프트웨어 버전 3.0.10 에서 QR 코드는 128비트 UUID user_iddata_policy 플래그를 포함하며, 사용자의 데이터 보관 선택을 나타내고, 내부 사용을 위한 선택적 DataCollectionConfig 구조체를 포함합니다. 소프트웨어 버전 4.0.0에서는 사용자 공개 키를 포함하는 암호화 해시를 포함하도록 QR 코드가 수정되었습니다. 이 해시는 user_data_hash로 명명되었습니다. 이 해시는 사용자의 장치로 데이터를 암호화할 때 올바른 공개 키가 사용되도록 검증하는 데 사용됩니다. 

*** 소프트웨어 버전 4.0.0에서는 새로운 “개인 보관” 기능이 추가되어 홍채 코드와 생체 인식 데이터의 추가 복사본이 사용자의 공개 키를 사용하여 직접 사용자의 장치에 암호화됩니다.

이러한 주장들은 Trail of Bits와 협력하여 최종 보고서에 있는 구체적인 목표로 더 정제되었습니다. 오브의 고객 사용자 공간 애플리케이션은 Rust로 작성되었고, Debian 기반 운영체제를 사용하여 이 평가의 범위 내로 정의되었으며, 다음 구성 요소는 원래 주장에 적용되지 않으므로 제외되었습니다:

  1. 부트로더 구성
  2. 드라이버 수정
  3. TrustZone 애플리케이션
  4. 보안 요소 인터페이스

대상에 대한 포괄적인 목록은 최종 보고서에 나열되어 있습니다.

평가 결과

총 세 명의 컨설턴트가 여섯 주간의 엔지니어링 검토를 수행했습니다. 감사원에게는 전체 소스 코드 접근 권한과 두 개의 평가 오브에 대한 런타임 접근 권한이 주어졌습니다. 보고서는 잠재적인 공격 표면을 기술하면서 (TOB-ORB-4TOB-ORB-5, TOB-ORB-10, 그리고 TOB-ORB-11), 결론을 내렸습니다. “우리의 분석은 프로젝트 목표와 관련하여 직접적으로 이용될 수 있는 Orb의 코드의 취약점을 발견하지 못했습니다.” 추가로, Trail of Bits의 검토는 이론적으로 프로젝트 목표에 영향을 미칠 수 있는 확인되지 않은 우려를 식별했으며, 그 이후로 영향 받은 코드가 업데이트되었지만, 감사는 알려진 취약점 또는 정상 실행 중에 프로젝트 목표가 직접적으로 손상될 수 있는 어떤 사례도 식별하지 못했습니다.

Trail of Bits 감사관들은 커널 구성의 추가적인 강화와 런타임 소프트웨어를 위한 도구 및 기법에 대한 전문가 추천을 제공했으며, 이는 최종 보고서에서 더 자세히 제공됩니다.

클레임 1: 기본적으로 옵트아웃되는 가입 흐름

평가는 감사를 받은 소프트웨어 버전의 구성이 PII를 유지하거나 외부로 유출하지 않으며, 이는 오브의 “홍채 코드”를 제외한다고 결론지었습니다. Trail of Bits는 향후 구성 또는 코드 변경으로 인한 우발적인 누출을 방지하기 위해 오브의 “심층 방어”를 강화하는 추가 구성 강화 변경 사항을 권장했습니다 (발견 사항 TOB-ORB-1). 

클레임 2: 비기본적으로 옵트인하는 가입 흐름

사용자가 데이터 보관에 동의하는 경우, 오브는 libsodium 라이브러리를 사용하여 PII를 비대칭으로 암호화하며, 일회용 봉투*라고 불리는 구조에서 “봉함 상자”로 암호화합니다. 최종 보고서에서 감사관은 “[우리는 오브의 SSD 외부 및/또는 암호화되지 않은 상태에서 PII가 보존된 곳을 식별하지 못했습니다]”라고 명시하고, “PII가 암호화된 후에는, 설명된 메커니즘이 오브가 이를 복호화하는 것을 허용하지 않는다.” 라고 결론내립니다.

*최신 코드는 데이터 보관 옵션과 상관없이 데이터를 전혀 저장하지 않지만, 대신 사용자의 공개 키를 사용하여 개인 보관 패키지에 대해 이 암호화 코드를 재사용합니다.

주장 3: 오브는 사용자의 장치에서 추가 데이터를 추출하지 않습니다

사용자가 첫 상호작용을 통해 오브에 가입할 때, 사용자 기기에 QR 코드가 표시되고 오브가 이를 처리합니다. 관련 코드에서, 감사관들은 오브가 사용자 기기에서 수집한 추가 데이터나 정보를 식별하지 못했습니다. 그러나 평가는 QR 코드를 스캔하는 데 사용된 라이브러리 (ZBar)와 관련된 잠재적인 메모리 안전 문제 (최종 보고서에서 TOB-ORB-4)를 강조했습니다. 이에 대응하여, 취약한 라이브러리가 순수 Rust 바코드 스캐닝 라이브러리인 rxing으로 교체되었습니다.

주장 4: 사용자의 홍채 코드는 안전하게 처리됩니다

감사관들은 "홍채 코드"가 어떻게 처리되고 백엔드로 전달되는지에 대한 주장을 검증하려고 시도했습니다. 그들은 “홍채 코드는 Orb에 영구 저장되지 않으며 단일 요청에서만 Orb의 백엔드에 포함된다고 믿습니다,” 및 “[이] 구성을 더 안전하게 만들 수는 있지만(TOB-ORB-10), 일반적인 공격자는 Orb의 네트워크 트래픽에서 홍채 코드를 추출할 수 없어야 하며, 공격자는 신뢰할 수 있는 인증서 중 하나를 제어해야 합니다.”라고 보고했습니다.

결론

Trail of Bits의 철저한 분석에 대한 전체 보고서에는 각 개별 발견 사항 및 그 해결책과 주장의 추가 분석이 포함되어 있습니다. 

이것은 첫 번째도 아니었고 마지막 세 번째자 보안 평가도 아니었으며, 추가 보고서는 이용 가능해지는 대로 커뮤니티와 공유될 것입니다. 

Worldcoin 버그 바운티 프로그램에 참여하여 Worldcoin 프로젝트의 보안을 유지하는 데 도움이 될 수 있습니다. 프로젝트에 대한 추가 중요 정보는 Worldcoin 프로토콜 백서에서 확인할 수 있습니다.

면책 조항

위 내용은 표시된 날짜 기준으로만 유효합니다. 또한, 해당 내용은 다양한 위험, 불확실성 및 가정에 따라 달라질 수 있으므로 정확하지 않을 수 있으며, 사전 공지 없이 변경될 수 있습니다. 전체 면책 조항은 이용약관(Terms of Use) 에서 확인할 수 있으며 중요한 사용자 정보는 위험성(Risks) 페이지에서 확인할 수 있습니다.

이 기사에 포함된 정보는 12개월 이상이 되었으며 오래되었을 수 있습니다. 프로젝트에 대한 최신 정보를 보려면 world.org/blog 을 방문해 주세요.