버전 91 이전에는 Chrome의 타이머 해상도가 site-isolation이 사용 설정된 데스크톱에서는 5마이크로초로, 사용 설정되지 않은 Android에서는 100마이크로초로 제한되었습니다.
버전 91부터 사양 변경에 따라 Chrome은 명시적 타이머(performance.now()
, performance.timeOrigin
, DOMHighResTimestamps
를 노출하는 기타 성능 API)의 해상도를 플랫폼 전반에서 100마이크로초로 제한합니다.
교차 출처 격리를 사용 설정하면 웹사이트는 플랫폼과 관계없이 제한을 5마이크로초로 완화할 수 있습니다.
교차 출처 격리를 사용 설정하여 더 강력한 기능을 얻는 것은 SharedArrayBuffer
에서 제안된 유사한 접근 방식입니다.
교차 출처 격리는 웹페이지가 선택한 출처를 제외한 다른 출처와 격리된 상태입니다.
이 문제와 관련해 취해야 할 조치가 있나요?
그렇지 않을 수도 있습니다. performance.now()
는 다른 브라우저에서 훨씬 더 거친 해상도(예: 1밀리초 = 0.001초)로 제한되었으므로 어쨌든 현재 해상도를 사용해서는 안 됩니다.
동시에, 예를 들어 더 정확한 성능 측정을 위해 타이머의 해상도를 높이려면 사이트가 교차 출처 격리되어 있는지 확인해야 합니다. 이렇게 하면 Chrome 및 기타 Chromium 기반 브라우저와 Firefox에서 더 나은 해상도를 얻을 수 있습니다.
타이머와 교차 출처 격리는 어떤 관련이 있나요?
브라우저 공급업체는 Spectre가 발견되었을 때 타이머를 더 거친 해상도로 제한하고 암시적 타이머로 사용할 수 있는 SharedArrayBuffer의 사용 가능 여부도 제한하기로 결정했습니다. Spectre 및 유사한 예측 실행 공격은 타이머를 사용하여 특정 작업에 걸리는 시간을 측정한 다음 프로세스 메모리의 콘텐츠를 추측하기 때문입니다.
추측 실행 공격은 대략적인 타이머로 실행할 수 있지만 고해상도 타이머를 사용하면 속도를 높일 수 있습니다. Chrome은 사이트 격리 아키텍처와 기타 메커니즘을 사용하여 위험을 완화하고 이러한 기능을 다시 사용 설정했지만 데스크톱 플랫폼 및 Chromium 브라우저로 제한됩니다. 기본 브라우저 아키텍처를 사용하는 API는 이상적이지 않습니다.
교차 출처 격리는 브라우저가 원치 않는 교차 출처 리소스를 로드할 수 없도록 격리된 환경에서 페이지를 실행할 수 있는 표준 기준을 제공하므로 Spectre의 위험이 없습니다.
이제 교차 출처 격리를 통해 페이지가 임의의 교차 출처 데이터를 읽을 수 있는 프로세스에서 노출하기에 안전하지 않은 고해상도 타이머, SharedArrayBuffer
, 기타 API에 액세스하도록 허용할 수 있습니다.
이 변경사항의 배경에 대해 자세히 알아보려면 강력한 기능을 위해 '교차 출처 격리'가 필요한 이유를 참고하세요.
표지 사진: Unsplash의 린다 페레즈 요하네센