안녕하세요. 한국기업교육강사협회 교육운영 담당자입니다.
최근 크롬브라우져의 보안취약성의 이유로 document.domain 비활성화 정책 업데이트 되어 일부 환경에서 document.domain js가 정상적으로 작동되지 않는것이 확인되었습니다. 크롬 개발자 블로그에서 확인된 버전은 아래와 같습니다.
https://developer.chrome.com/blog/immutable-document-domain/
Chrome 115, 112, 109, 100, 106 입니다.
그 에 따라 해당 크롬 버전에서 크로스도메인 문제가 발생해서 부모(seumedu.kr)과 자식(vod.seumedu.kr)간에 정상적으로 작동이 되지 않아 창이 깨져 보이면서 진도율이 정상적으로 적용되지 않습니다.
혹시나 장애가 발생한다면 윈도우같은경우 엣지나 네이버 웨일 맥북같은경우 사파리를 사용해주시길 바랍니다.
윈도우 환경에서 엣지실행버튼을 못찾으시는분은 내강의실 우측의 메뉴바에서 Microsoft Edge 라는 버튼을 클릭하시면 엣지가 실행 됩니다.
그리고 크롬의 향후 전체적인 document.domain 비활성화 정책을 대비해서 window.postMessage API를 활용한 방식으로 개선작업이 진행 중입니다.
Q) document.domain 정책이 왜 차단되는 건가요?
A) document.domain은 스크립트가 현재 처리 중인 문서의 도메인을 가져오거나 설정할 수 있도록 하는 웹 브라우져의 속성 입니다. 역사적으로 이는 SOP(동일 출처 정책)를 시행하면서 하위 도메인의 페이지가 iframe과 같은 메커니즘을 통해 서로 통신할 수 있도록 하기 위해 도입되었습니다. 동일 출처 정책은 웹 페이지의 스크립트가 다른 출처의 콘텐츠와 상호 작용하는 것을 제한하는 보안 메커니즘입니다. 그러나 시간이 지나면서 개발자들은 document.domain이 남용되어 특정 유형의 취약점으로 이어질 수 있다는 사실을 발견했습니다. 보안취약성, 브라우저 내부의 복잡성, 최신 웹에서의 필요성감소(posetMessage 및 CORS 메커니즘 등)의 사유로 브라우저 공급업체는 document.domain 기능을 단계적으로 폐지하거나 더이상 사용하지 않기로 하였습니다.
Q) 보안이 취약하다는게 무슨의미 인가요? 쉽게 설명해주세요.
A) 예를 들어서 대학교는 웹사이트, 강의실은 하위 도메인이라고 가정하겠습니다. 과거에는 두 강의실(하위 도메인)이 서로 정보를 주고 받으려면 document.domain을 사용했습니다. 두 강의실 모두 해당 document.domain을 동일한 대학교명으로 설정하면 누구나 정보를 주고받을 수 있었습니다. 하지만 일부 학생들이 document.domain을 속이면 정보를 받기 원하지 않는 강의실에도 정보를 보내거나 심지어 동의없이 정보를 남길수 있다는것을 알아냈습니다. 이러한 정보에는 중요한내용이 포함될 수 있으므로 좋지 않습니다.
그래서 최근 브라우저 공급업체들은 이러한 document.domain을 통한 정보교환을 중단하고 안전하게 공유할 수 있는 방법을 찾아내기 위해 노력하였습니다. 그래서 이제부터는 강의실에서는 공유가 허용된 강의실간에만 올바른 장소의 학생에게 전달되도록 하는 postMessage 또는 CORS를 사용하기로 결정하였습니다. 그 결과 최근 23년 6월 1일부터 일부 브라우저에 한해 document.domain 방식의 통신이 비활성화 되어서 seumedu.kr 과 영상을 제공하는 vod.seumedu.kr 간에 정보교류가 이루어지지 않아서 장애가 발생한건 이였습니다. 이제는 안전한 postMessage 방식으로 전부 교체완료 하였습니다.
Q) document.domain을 이용한 보안취약 사례에는 어떤것이 있나요?
A) 몇가지 예를 들자면 아래와 같습니다.
1) 피싱 : 악성 웹 사이트가 document.domain을 합법적인 사이트의 도메인과 일치하도록 설정하고 사용자가 해당 웹사이트와 상호작용하도록 속일 수 있는 경우 사용자는 자신도 모르게 그 피싱 사이트와 정보를 주고 받을 수 있습니다.
2) DNS 리바인딩 : 공격자가 브라우저를 속여 도메인 이름을 자신이 선택한 IP 주소에 연결하도록 하여서 공격자가 요구하는 도메인으로 접속할 수 있습니다.
그 외 많은 예시가 있지만 위 사례는 실제 많은 사람들이 당하는 사례 입니다.
Q) postMessage 방식으로 전부 교체되었는데.. 이게 기존 document.domain보다 좋은점이 무엇인가요?
A) A와 B가 서로 다른 사람이 모르게 메세지를 주고 받을려고 합니다.
기존 document.domain 방식은 두 사람이 서로의 방에 메세지를 남길 수 있도록 뒷문을 열어두기로 합의한 건 입니다. 그러나 문을 닫는것을 잊어버리거나 누군가를 속여서 예를 들어서 내가 B야 라고 속여서 뒷문을 열게 하면 도독이 몰래 들어올 수 있습니다.
하지만 postMessage 방식은 두 집에 서로가 지정한 특별한 우편함이 존재 합니다. A는 B의 지정된 우편함에 메세지를 남기고, 이 메세지는 B 만이 열어볼 수 있습니다. 집문을 열어주거나 서로의 집안으로 들어갈 필요가 없습니다. 따라서 postMessage 는 이름 그대로 서로의 문을 열어두는 대신 특수한 지정 우편함을 이용해서 대화를 하기에 안전하다고 생각하시면 됩니다.
Q) 저는 여전히 진도가 적용되지 않습니다.
A) 이전 쿠키/캐시파일을 보유하고 있어서 작동하지 않는것으로 확인이 됩니다. CTRL+SHIFT+DEL 키를 눌러서 쿠키랑 캐시에 삭제 체크가 되어 있는지 확인해주시고 기간을 길게 잡아주시고 삭제해주시기 바랍니다.
불편을 끼쳐드려서 죄송합니다. 감사합니다.