9P by xguru 2020-11-16 | favorite | 댓글 4개

- 이번에 이슈가 된 OCSP에 대한 기술적인 분석
ㅤ→ 개발자 인증서가 유효한지를 확인하기 위해 앱 실행시에 애플서버에 접속해서 체크
ㅤ→ 네트웍 연결이 불가능하면 그냥 실행함
ㅤ→ 접속은 가능한데 서버가 느리면 이번처럼 애플이 만든것 외의 모든 앱이 안뜨는 이슈가 발생
ㅤ→ 앱 실행시마다 애플서버로 앱의 해쉬를 보내고 있다는 주장이 있음 [1]
ㅤ→ 문제는 HTTPS 가 아닌 HTTP를 사용한다는 것 (HTTPS 인증서를 확인하기 위해서 또 커넥션을 열어야 하는 상황이 나오므로)
- 내부 들여다 보기
ㅤ→ 중간에 HTTP Proxy 나 Wireshark 만 있으면 모두 캡쳐 가능
ㅤ→ 한번 실행해서 OCSP 인증이 되면 특정 시간 동안은 다시 인증 안함
ㅤ→ GET 으로 base64 인코딩 된 80바이트 문자열을 전송
ㅤ→ 해당 값이 앱의 Hash 같지만 "아님"
ㅤ→ OpenSSSL로 그 바이너리 정보를 열어보면, 진짜로 인증서 Issuer 이름 & 키 해쉬값과 시리얼번호가 들어있음
ㅤ→ 그래도 인증서가 앱마다 다르면 어차피 그게 앱에 대한 해쉬값이랑 같은거 아닌가 ? 하는 의심
- 개발자 인증서
ㅤ→ 이 인증서 정보는 어디서 오는 것일까?
ㅤ→ codesign 으로 맥앱의 인증서를 추출해봄(여기선 Firefox)
ㅤ→ 시리얼 번호가 위에 캡쳐한 것과 일치함
ㅤ→ 그럼 다시 Thunderbird 의 인증서를 뽑아보니 역시 시리얼번호가 같음(당연하겠지만)
ㅤ→ 즉 [1]에서 얘기한 대로 모든 앱을 알수 있는 해쉬 정보를 보낸다는 것은 틀린 정보임
ㅤ→ 물론 언제 어떤 컴에서 "어떤 개발자의" 앱을 실행했다는 것 자체를 알 수 있다는 것은 사실
- OCSP를 차단 하는 것에 대해서
ㅤ→ Little Snitch 를 이용하거나 /etc/hosts 를 통해서 막을 수는 있음
ㅤ→ 하지만 이건 중요한 보안 기능 자체를 막는 것이니까 하지 말기를 권함

- TL;DR
ㅤ→ macOS 가 앱을 실행할 때마다 애플로 앱의 해쉬를 보내지 않음
ㅤ→ macOS 가 당신이 사용하는 앱의 개발자 인증서 정보를 보내고 있고, 이건 HTTP로 전송됨
ㅤ→ 웬만하면 ocsp.apple.com 접속을 막지 마세요.

참고로 영문 위키피디아에 따르면 구글 크롬은 이미 2012년부터 OCSP를 비활성화했습니다. “이득은 찾기 어려우면서 비용(딜레이 및 프라이버시 문제 발생)은 분명하다”는 것이 그 이유입니다.
https://www.imperialviolet.org/2012/02/05/crlsets.html

ocsp 는 원래 웹 브라우저도 SSL 인증서의 만료 여부 등을 확인하기 위해서 사용하는 방법이긴 할텐데요. 앱 인증을 SSL 인증서와 동일한 방식으로 하기 때문에 그런 것으로 추정할 수도 있겠네요.

이게 iOS처럼 맥앱도 App Analytics 정보를 수집하기 위한게 아닐가 추측해봅니다.

관련해서 읽어볼 이슈들

[1] 당신의 컴퓨터는 당신만의 것이 아니다 https://news.hada.io/topic?id=3200
[2] 맥 OS 카탈리나(10.15) : 디자인에 의해 느려지다 https://news.hada.io/topic?id=2145