물어보기XpressEngine

https://github.com/xpressengine/xe-core/commit/558768b9ad76c75260db47ab2ff89ebfdabe2ae4

 

이번 보안패치의 커밋 내용을 보면...

 

onclick="window.open(this.href);return false;"

-->

 

target="_blank" rel="noopener"

 

로 바뀐게 굉장히 많습니다. 이런 패치가 있을때 기본적인 스킨의 변경파일을 제공하고 나머지는 어떻게 하라는 설명이 없어 코드를 잘 모르는 저희 같은 사용자들은 뭘 어찌 해야할지 알 수 가 없네요.

 

기본 제공하는 내장 스킨에서 보안때문에 저렇게 변경된 것이라면 똑같은 모듈의 사용 스킨도 모두 똑같이 변경해야 하는지 변경대상의 범위가 도대체 무엇 까지인지 알 수 가 없네요.

 

보안상 어떤 문제가 생기는지도 궁금하구요. 

  • profile
    람보 2017.09.12 14:52:22

    네 저렇게 바꾸시면되요.

    새창 띄우는 액션을 굳이 window.open함수를 사용하게 되면 내부적으로 해킹을 할 수 있는 보안취약점이 존재합니다.

  • profile
    람보 2017.09.12 14:57:10
    그리고 이번 보안 취약점에서는 rel="noopener" 이 것이 가장큰 보안에 핵심이니 참고하세요..
  • profile
    웹지기 2017.09.12 15:01:51
    어렵네요. 저희 같은 코알못 사람들에게는요. 타이틀에는 onclick이 중요한 것 같은데.. 그게 아니고
    window.open 이부분이 들어간 곳이 수정대상이라는 거죠??

    rel="noopener" 가 들어가지 않은 곳도 있어 알쏭 달쏭 합니다. 멤버모듈의 스킨에는 이게 안들어갔네요.
  • profile
    기진곰 2017.09.12 15:04:42

    사이트 내부 링크(예: 작성글 보기)는 신뢰할 수 있다고 가정하므로 rel="noopener"가 필요하지 않습니다.

     

    onclick에서 window.open 쓰는 것은 완전 꼼수예요. 링크를 새 창에 띄우라는 얘긴데, target="_blank"만으로도 충분히 구현할 수 있는 기능에 굳이 자바스크립트를 써서 복잡하게 만들어 놓은...

  • profile
    기진곰 2017.09.12 15:03:00

    링크를 새 창(탭)에 열기 위해 저런 스크립트를 사용하는 부분이 굉장히 많습니다. 한때 target="_blank"가 웹표준에 어긋난다고 해서 억지로 저렇게 바꿔쓴 것 같은데요... 웹표준 체크 프로그램에 걸리지 않을 뿐, 웹표준의 정신에는 target="_blank"보다 오히려 훨씬 더 어긋납니다 ㅋㅋ

    신뢰할 수 없는 외부 주소(예: 글쓴이가 입력한 홈페이지 주소)를 window.open으로 새 창(탭)에 열면 새 창에서 부모 창의 일부 속성에 접근할 수 있게 된다는 점이 최근에 발견되었습니다. 그래서 위와 같이 불필요하게 window.open을 사용하던 곳을 모두 다시 target="_blank" rel="noopener"로 바꾸게 되었습니다. 서드파티 스킨에서도 모두 변경하시기를 권합니다.

    취약점이 있는 window.open 함수 자체를 패치할 수도 있지만, 그렇게 하면 우편번호 검색이나 결제모듈, 본인인증 등 팝업창을 사용하는 기능들이 모두 망가지기 때문에 곤란합니다. 편의를 위해 XE에서 제공하는 winopen, popopen 등의 함수는 이미 패치되었기 때문에 괜찮습니다. 따라서 예제처럼 모두 바꾸기 힘들다면 window.open만 winopen으로 일괄 변경하셔도 됩니다.

    1년에 한 번 정도는 서드파티 스킨까지 수정해야 하는 심각한 보안취약점이 발견되는 것 같습니다. 어디 계신지도 모르는 스킨 제작자분이 일일이 수정해 주시기를 기대하기도 어렵고, 제작자분이 원본을 수정해 주시더라도 스킨의 특성상 많이들 고쳐쓰기 때문에 그대로 덮어씌우기는 쉽지 않지요. 이런 경우에는 어떻게 하는 것이 좋을지 저도 잘 모르겠네요. 라이믹스 개발팀에서는 람보님이 스케치북 스킨을 별도로 관리하고 계시긴 하지만, 코어 개발팀이 모든 스킨을 관리할 수는 없으니... ㅠㅠ

    한 가지 분명한 것은, 애초에 스킨을 아주 잘 만들어 놓으면 이런 문제가 생길 가능성도 훨씬 낮아진다는 점입니다. 이번 보안문제도 window.open으로 코딩해 놓은 스킨은 수정이 필요하지만, 원래부터 target="_blank"로 구현해 놓은 스킨은 코어에서 일괄적으로 rel="noopener"를 추가해 줄 수 있기 때문에 수정이 필요하지 않습니다. 스케치북 스킨도 방명록 형태 외에는 딱히 고칠 데가 없더군요.

  • profile
    웹지기 2017.09.12 15:13:28

    커밋 제목에 완전 오해하개 onclick을 강조해서 깜짝 놀랬습니다. window.open 만 잘 조회해서 대응하는 것으로 하면 될 것 같네요. 자세한 설명 감사합니다.

    XE 공지의 눈높이는 참... 저희들 일반인에게는 너무 높은 수준입니다.

  • profile
    웹지기 2017.09.12 15:20:18
    일단 저희 사이트는 보안패치 완료! 보안패치는 빠르게!

서버에 요청 중입니다. 잠시만 기다려 주십시오...