COOP와 Site Isolation, 알고 있어야 할 구글 보안 정책의 변화
최근에 Google security blog에 site isolation 관련하여 글이 하나 올라왔습니다.
이는 구글이 앞으로의 웹 서비스의 보안을 위해서 적용하려고 하는 것들에 대한 내용이 있고, 이런 내용은 높은 확률로 표준처럼 자리잡을 수 있기 때문에 간단히 어떤 내용들이 있는지 살펴보고 글로 정리해두려고 합니다.
TL;DR
- Extension/Addon에서 Site Isolation 정책 강화(프로세스를 공유할 수 없도록 제한)
- 안드로이드 환경에서 COOP에 대한 적용 범위 확대(제한된 범위 -> 일반적인 범위)
- 중요 데이터가 있는 페이지는 COOP를 적용하는게 좋다!
COOP
COOP는 Cross-Origin-Opener-Policy의 약자로 Response에 해당 헤더가 있는 경우 top-level document에서 browsing context group과 cross-origin document를 공유하지 않도록 설정합니다. 또한 XS-Leaks를 방어하기 위해 process-isolate(site isolateion)를 적용하여 해당 document에 엑세스할 수 없도록 제한합니다.
쉽게 말하면, rel=noopener의 상위호환이라고 보시면 됩니다. 자세한 내용은 아래 링크들을 참고해주세요.
Site Isolation
Site Isolation은 MacOS, Windows, Linux, Chrome OS 등에서 악성 웹 페이지(또는 공격코드가 삽입된 웹)에서 다른 웹 사이트의 데이터를 쉽게 탈취할 수 없도록 만들어진 Protection 입니다. 이는 각 웹 사이트간의 접근을 제한하고, Extension/Addon 등 일반 웹 페이지보다 높은 권한을 가진 앱에서도 쉽게 접근할 수 없도록 제한하는 기능을 수행합니다.
예를들면 이렇습니다. iframe으로 하위 페이지를 부른 경우, 예전에는 해당 부모 페이지와 자식 iframe 페이지가 브라우저 내 동일 프로세스 상에서 존재 했었습니다. 만약 부모 페이지와 자식 페이지가 Cross-origin 관계일 시 서로 데이터를 교환하거나 접근할 수 있는 방법에 제한이 있었는데요(SOP), 이전에 한창 말썽이였던 spectre 등 메모리 관련 공격이 성공했을 시 아무리 Cross-origin 관계의 페이지여도 동일 프로세스이기 때문에 쉽게 데이터를 읽을 수 있는 문제가 있었습니다.
그래서 Chrome은 이러한 문제를 해결하기 위해 Out-of-process iframe이라고 해서 단일 페이지에서 렌더링 프로세스를 분리하는 형태로 대응했습니다. 네 이게 Site Isolation입니다.
Do not share proceeses with extension
이번 크롬 92부턴, Extension/Addon 에서도 프로세스 자체 서로 공유할 수 없도록 무조건 제한된다고 합니다. 앞으로 이러한 형태로 점점 더 사이트간의 탈취를 어렵게 만드는 방법이 늘어나게 될 것 같네요. (물론 우리 입장에선 머리아프죠. 전 Lax 쿠키만 해도 스트레스입니다)
Android’s Isolation
기존의 안드로이드의 OAuth는 성능을 위해 Site Isolation이 약하게 설정되어 있었습니다.
https://blog.chromium.org/2019/10/recent-site-isolation-improvements.html
크롬 92부턴, 이러한 OAuth 플로우에서 Site isolation이 3rd party를 통해 로그인하는 사이트뿐만 아니라 Cross-Origin-Opener-Policy
헤더가 있는 사이트도 적용되게 됩니다. (웹과 동일하게)
Conclusion
구글이 점점 보안 정책을 강화하는게 많이 느껴집니다. 요 몇년사이 SameSite=Lax, Rel=noopener 와 COOP 등 웹 자체의 보안성을 위한 여러가지 정책들이 추가되고 있고, 기업의 보안부서나 관련 개발자라면 잘 알고 있어야하는 부분들이 계속 생기게 되네요. 어쨌던 이로 인해 많은 공격과 취약점들이 에방될 수 있어서 좋긴 합니다만, 공격자와 동일하게 분석해야 하는 입장에선 꽤나 번거로운 허들들이 생긴 느낌이네요
이번 내용은 구글에서 이야기한 내용이지만, 제가 간간히 이야기하듯이 Google/Apple/Mozilla 등 웹 브라우저 서비스를 운영하는 회사들은 서로 표준을 맞추기 위한 정책을 사용하고 있습니다. 그래서 아마 이 내용이 올라왔다는 이야기는 타 브라우저에서도 비슷한 형태로 처리될 수 있다는 이야기입니다. 참고하시길 바래요!
References
- https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cross-Origin-Opener-Policy
- https://security.googleblog.com/2021/07/protecting-more-with-site-isolation.html
- https://security.googleblog.com/2018/07/mitigating-spectre-with-site-isolation.html
- https://blog.chromium.org/2019/10/recent-site-isolation-improvements.html
- https://www.hahwul.com/2020/01/18/samesite-lax/
- https://www.hahwul.com/2021/05/20/the-reverse-tabnabbing-has-weakened-more/