CORB란 무엇입니까?

3709 단어 securitywebdev
브라우저 콘솔에서 이러한 유형의 콘솔 경고를 본 적이 있습니까? Cross-Origin Read Blocking (CORB) blocked cross-origin response https://example.com/sub with MIME type application/json. CORS에 익숙할 수 있지만 CORB가 무엇입니까?

먼저 CORS란?



브라우저에는 출처에서 다른 출처의 리소스로 문서 또는 스크립트의 상호 작용을 제한하는 동일 출처 정책이라는 보안 메커니즘이 있습니다. 예를 들어 <script src="https://domain-b.com/example.js"></script>가 포함된 domain-a.com의 JavaScript는 브라우저에서 로드되지 않습니다.

CORS(Cross-Origin Resource Sharing)는 서버가 브라우저에서 정보를 읽을 수 있는 출처를 설명할 수 있도록 하는 HTTP 헤더를 추가합니다. 위의 javascript가 domain-a.com에서 로드해야 하는 경우 서버는 응답에 다음 헤더와 함께 반환해야 합니다.

Access-Control-Allow-Origin: https://domain-b.com/example.js


서버가 Access-Control-Allow-Origin: *로 응답하면 모든 원본에서 domain-a.com의 리소스에 액세스할 수 있음을 의미합니다. 와일드카드를 사용하면 CORS에서 제공하는 보안이 완화되어 XSS 공격이 허용되므로 권장되지 않습니다.

캐싱을 제거하려면 Vary: Origin header를 추가하는 것도 중요합니다. 이 헤더가 없으면 공격자가 트래픽을 악성 호스트로 리디렉션하는 데 사용할 수 있는 공격cache poisoning/DNS spoofing으로 이어질 수 있습니다.

추가 정보MDN Web Docs: Cross-Origin Resource Sharing (CORS)
HackTricks: CORS - Misconfigurations & Bypass

CORB 란 무엇입니까?



서버에서 요청할 수 있는 데이터에는 두 가지 유형이 있습니다.
  • HTML, XML 또는 JSON 문서와 같은 데이터 리소스 및
  • 이미지, JavaScript, CSS 또는 글꼴과 같은 미디어 리소스.

  • CORS 헤더Access-Control-Allow-Origin: *를 사용하면 웹 사이트에서 원본 간 데이터 리소스에 액세스할 수 있는 반면 허용되는 CORS 헤더가 없어도 모든 원본에서 미디어 리소스를 포함할 수 있습니다.

    교차 출처 읽기 차단(CORB)은 X-Content-Type-Options: nosniff가 있거나 CORS가 리소스에 대한 액세스를 명시적으로 허용하지 않는 경우 브라우저가 교차 출처 데이터 리소스를 수신하지 못하도록 합니다.

    ( X-Content-Type-OptionsContent-Type 헤더가 엄격히 따라야 하는 MIME 유형(예: 텍스트, 글꼴 및 모델)을 지정하는 서버에서 사용하는 HTTP 응답 헤더입니다. 이를 통해 MIME type sniffing을 방지할 수 있습니다.)
    X-Content-Type-Options: nosniff가 없으면 브라우저는 응답 본문을 스니핑하여 MIME 유형(MIME sniffing)을 결정하고 액세스를 허용하여 공격자가 이를 수행하는 데 사용할 수 있는 JavaScript 파일과 같은 것을 차단하지 않도록 합니다MIME sniffing XSS attack.

    악성 웹 페이지는 <script> 요소를 사용하여 은행 잔고와 같은 민감한 데이터가 포함된 JSON 파일을 로드하고 민감한 데이터를 메모리에 커밋할 수 있습니다.

    <script src="https://your-bank.example/balance.json" />
    


    Site isolation 보호와 함께 CORB는 balance.json의 위 내용이 XSSI(Cross-Site Script Inclusion) 및 추측성 사이드 채널 공격(예: Spectre ).

    최적의 보안과 CORB의 이점을 얻으려면 응답을 올바른Content-Type 헤더로 표시해야 합니다.

    추가 정보CORB explainer
    CORB for developers

    좋은 웹페이지 즐겨찾기