교차 출처 격리 제한에 맞춰 타이머 정렬

버전 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린다 페레즈 요하네센