새로운 SameSite=None; Secure 쿠키 설정에 대비

2020년 1월 16일 목요일

이 게시물은 Chromium 개발자 블로그의 교차 게시물로, Chrome 변경사항이 향후 웹사이트 작동에 영향을 미치는 방식과 관련이 있습니다.

지난 5월에 Chrome은 새로운 쿠키 분류 시스템(사양)을 사용하는 쿠키에 관한 기본 보안 모델을 발표했습니다. 이 이니셔티브는 웹 전반에서 개인 정보 보호와 보안을 개선하기 위한 지속적인 노력의 일환입니다.

Chrome은 2020년 2월에 Chrome 80에서 새 모델을 구현할 계획입니다. Mozilla와 Microsoft 역시 자체 일정에 따라 Firefox 및 Edge에서 새 모델을 구현하겠다는 의향을 밝혔습니다. 이러한 Chrome 변경이 시행되려면 아직 몇 개월 남아 있지만 쿠키를 관리하는 개발자는 준비 여부를 지금 평가해야 합니다. 이 블로그 게시물에서는 대략적인 개념을 간략히 설명합니다. 개발자를 위한 가이드는 web.dev의 SameSite 쿠키 설명을 확인하세요.

웹사이트는 일반적으로 광고, 콘텐츠 추천, 타사 위젯, 소셜 미디어 삽입 등의 기능을 위한 외부 서비스를 통합합니다. 웹을 탐색할 때 이러한 외부 서비스는 브라우저에 쿠키를 저장한 다음 맞춤 환경을 제공하거나 사용자 참여도를 측정하기 위해 이 쿠키에 액세스할 수 있습니다. 모든 쿠키에는 도메인이 연결되어 있습니다. 쿠키와 연결된 도메인이 사용자의 주소 표시줄에 있는 웹사이트가 아닌 외부 서비스와 일치하면 크로스 사이트(또는 '타사') 컨텍스트로 간주됩니다.

그보다는 명확하게 드러나지 않지만 여러 웹사이트를 소유한 항목이 이러한 속성에서 쿠키를 사용하는 경우도 크로스 사이트 사용 사례에 포함됩니다. 동일한 항목이 이 쿠키와 웹사이트를 소유하더라도 쿠키의 도메인이 쿠키에 액세스한 사이트와 일치하지 않는 경우는 크로스 사이트 또는 '타사' 컨텍스트로 간주됩니다.

사이트 도메인이 쿠키 도메인과 일치하지 않음

웹페이지의 외부 리소스가 사이트 도메인과 일치하지 않는 쿠키에 액세스하는 경우는 크로스 사이트 또는 '타사' 컨텍스트입니다.

반면, 동일 사이트(또는 '자사') 컨텍스트의 쿠키에 대한 액세스는 쿠키의 도메인이 사용자의 주소 표시줄에 있는 웹사이트 도메인과 일치할 때 이루어집니다. 동일 사이트 쿠키는 사용자의 개별 웹사이트 로그인 상태를 유지하고, 사용자의 환경설정을 기억하고, 사이트 분석을 지원하는 데 흔히 사용됩니다.

사이트 도메인이 쿠키 도메인과 일치함

웹페이지의 리소스가 사이트 사용자가 방문하는 사이트와 일치하는 쿠키에 액세스하는 경우는 동일 사이트 또는 '자사' 컨텍스트입니다.

쿠키가 자사 컨텍스트에서만 액세스되도록 하려는 경우, 현재 개발자는 외부 액세스 방지를 위해 두 설정(SameSite=Lax 또는 SameSite=Strict) 중 하나를 적용할 수 있습니다. 그러나 이 권장사항을 따르는 개발자는 거의 없기 때문에 많은 동일 사이트 쿠키가 크로스 사이트 요청 위조 공격과 같은 위협에 불필요하게 노출됩니다.

더 많은 웹사이트와 웹사이트 사용자를 안전하게 보호하기 위해 새 보안 기본 모델은 달리 지정하지 않는 한 모든 쿠키를 외부 액세스로부터 보호해야 한다고 가정합니다. 개발자는 새로운 쿠키 설정인 SameSite=None을 사용하여 크로스 사이트 액세스용 쿠키를 지정해야 합니다. SameSite=None 속성이 있으면 HTTPS 연결을 통해서만 크로스 사이트 쿠키에 액세스할 수 있도록 추가 Secure 속성을 사용해야 합니다. 이렇게 한다고 해서 크로스 사이트 액세스와 관련된 모든 위험이 완화되지는 않지만 네트워크 공격은 막을 수 있습니다.

이러한 즉각적인 보안상의 이점 외에도 크로스 사이트 쿠키를 명시적으로 선언하면 투명성이 개선되고 사용자가 선택할 수 있는 옵션이 많아집니다. 예를 들어 브라우저에서 사용자가 세부적인 제어를 통해 여러 사이트에서 액세스하는 쿠키와 별개로 단일 사이트에서만 액세스하는 쿠키를 관리할 수 있습니다.

2020년 2월부터 적용되는 Chrome 시정 조치

2월에 출시되는 Chrome 80부터 Chrome은 선언된 SameSite 값이 없는 쿠키를 SameSite=Lax 쿠키로 취급합니다. SameSite=None; Secure 설정이 있는 쿠키만 외부에서 들어오는 액세스에 관해 보안 설정을 사용할 수 있습니다(보안 연결을 통해 액세스하는 경우). SameSite=NoneSecure용 Chrome 플랫폼 상태 추적 도구는 계속해서 최신 출시 정보로 업데이트됩니다.

Mozilla는 Firefox의 크로스 사이트 쿠키에 SameSite=None; Secure 요구사항을 구현하겠다는 의사과 함께 새로운 쿠키 분류 모델을 지원하겠다고 밝혔습니다. Microsoft는 Microsoft Edge 80에서 실험적으로 모델 구현을 시작할 계획임을 최근에 발표했습니다.

준비 방법, 알려진 복잡성

크로스 사이트 쿠키를 관리하는 경우 SameSite=None; Secure 설정을 쿠키에 적용해야 합니다. 대부분의 개발자가 간단하게 구현할 수 있지만 다음과 같은 복잡성과 특수 사례를 파악하기 위해 바로 테스트를 시작하는 것이 좋습니다.

  • 일부 언어와 라이브러리는 아직 None 값을 지원하지 않으므로 개발자가 쿠키 헤더를 직접 설정해야 합니다. 이 GitHub 저장소에서는 다양한 언어, 라이브러리, 프레임워크로 SameSite=None; Secure를 구현할 수 있도록 안내합니다.
  • 일부 브라우저(예: Chrome, Safari, UC Browser의 일부 버전)는 의도치 않은 방식으로 None 값을 처리하여 개발자가 클라이언트에 예외를 코딩해야 할 수도 있습니다. 여기에는 이전 버전의 Chrome에서 제공하는 Android WebView가 포함됩니다. 다음은 알려진 비호환 클라이언트의 목록입니다.
  • 이 새로운 모델이 나중까지 Android WebView에서 적용되지 않더라도 앱 개발자는 HTTP(S) 헤더를 통해 액세스하는 쿠키와 Android WebViewCookieManager API를 통해 액세스하는 쿠키에 None 값과 호환되는 Chrome 버전에 따라 Android WebViews의 적절한 SameSite cookie 설정을 선언하는 것이 좋습니다.
  • 기업 IT 관리자는 싱글 사인온(SSO) 또는 내부 애플리케이션과 같은 일부 서비스가 2월 출시에 맞춰 준비되지 않을 경우 Chrome 브라우저를 일시적으로 레거시 버전으로 되돌리도록 특별 정책을 시행해야 할 수도 있습니다.
  • 자사 컨텍스트와 타사 컨텍스트 모두에 액세스하는 쿠키가 있는 경우 별도의 쿠키를 사용하면 자사 컨텍스트에서 SameSite=Lax의 보안 이점을 얻을 수 있습니다.

SameSite 쿠키 설명에서는 위의 상황과 문제 및 질문을 제기하는 채널에 관해 구체적으로 안내합니다.

새로운 Chrome 동작이 내가 관리하는 사이트나 쿠키에 미치는 영향을 테스트하려면 Chrome 76 이상에서 chrome://flags로 이동하여 'SameSite by default cookies' 실험과 'Cookies without SameSite must be secure' 실험을 사용 설정하면 됩니다. 이 실험은 Chrome 79 베타 사용자 하위 집합에도 자동으로 사용 설정됩니다. 실험이 사용 설정된 일부 베타 사용자는 새 모델을 아직 지원하지 않는 서비스와 호환되지 않는 문제를 겪을 수도 있습니다. 그러한 경우에는 chrome://flags로 이동한 다음 베타 실험을 사용 중지할 수 있습니다.

동일 사이트 컨텍스트에서만 액세스되는 쿠키(동일 사이트 쿠키)를 관리하는 경우에는 별도의 조치를 취하지 않아도 됩니다. SameSite 속성이 누락되거나 값이 설정되지 않았더라도 Chrome에서 외부 항목이 이러한 쿠키에 액세스하지 못하게 자동 차단합니다. 하지만 모든 브라우저에서 동일 사이트 쿠키를 기본적으로 보호하지는 않으므로 기본 브라우저 동작에는 의존하지 말고 적절한 SameSite 값(Lax 또는 Strict)을 적용하는 것이 좋습니다.

마지막으로, 공급업체 및 웹사이트에 서비스를 제공하는 다른 제공업체의 준비 여부가 우려되는 경우 페이지에 필수 설정이 누락된 크로스 사이트 쿠키가 포함되어 있을 때 Chrome 77 이상에서 개발자 도구 콘솔 경고를 확인할 수 있습니다.

크로스 사이트 리소스(쿠키 도메인)와 연결된 쿠키가 'SameSite' 속성 없이 설정됨

일부 제공업체(일부 Google 서비스 포함)는 2월의 Chrome 80출시까지 몇 개월 동안 필요한 변경사항을 구현할 예정입니다. 파트너에게 연락하여 준비 여부를 확인할 수도 있습니다.