18.216.142.2
IP 사용자
18.216.142.2님, 하늘위키에 처음 오셨나요?
이 문서들을 통해 하늘위키 사용법을 익혀보세요!
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
[ 공지] 하늘위키 '새로고침' 프로젝트가 진행 중입니다. 자세히 알아보기
앞으로 규정에 없는 사안은 대부분 관리자 재량으로 처리 가능합니다.
[ 업데이트 안내] haneul-seed 1.1.2 Beta 로 업데이트되었습니다. 업데이트 내역 확인하기
주요 변경 사항: 이제 사용자 이름을 변경할 때 문서 이동이 정상적으로 표시되고 권한이 정상적으로 이동합니다.

분류

1. 개요
2. 원인
3. 피해의 완화
3.1. Content Security Policy
3.2. HttpOnly
4. 공격 코드
5. 피해
6. 해결
7. 결론

1. 개요[편집]

namu 피셜 간밤에 삽질하게 만든 사건.

2. 원인[편집]

기능 링크[1] 를 렌더링하는 과정에서 어떤 사유로 인해 렌더링 되지 못하면서[2] fallback 처리 로직이 실행되었는데 해당 로직에 escape를 실수로 빼먹어 버린 것.

3. 피해의 완화[편집]

기본적으로 보안에 많은 염두를 두고 개발되었기 때문에 여러 가지 보안 대비책이 마련돼 있었다.

3.1. Content Security Policy[편집]

나무위키는 CSP가 활성화된 상태였기 때문에 공격자 입장에서는 XHR이나 img tag를 통해 외부 서버로 쿠키 전송 같은 짓거리를 할 수가 없어서, 처음에 취약점 소식을 들었을 땐 별 피해가 없겠거니 싶었다. 그런데 생각보다 좀 창의적인 공격을 했더라.
기술 부채로 인해 script-src에 unsafe-inline 이 들어가서 이번 공격을 원천적으로 막을 수 없었던 것은 아쉬웠던 점.

3.2. HttpOnly[편집]

기본적으로 세션 쿠키는 HttpOnly[3]속성이 켜져 있기 때문에 이번 공격에서 로그인한 상태여도 기본적으로 피해가 없었다.

하지만 자동 로그인 쿠키 honoka에 해당 속성을 켜놓는 걸 깜박하는 바람에 자동 로그인한 사용자는 이번 공격의 영향을 받게 되버린 것이다! 사실 자동 로그인 쿠키에 HttpOnly 속성만 들어가 있었어도 공격자가 특정 사이트히토미를 띄울 수 있었다는 것 외에 전혀 피해가 없을 수 있다는 점 또한 아쉬웠다.

4. 공격 코드[편집]

[[파일:<script>$('textarea').val(document.cookie);$('form.new-thread-form').submit();</script>]]
[[파일:<script>location.assign('https://hitomi.la');</script>]]

구현의 귀찮음으로 인해 쓰레드에 레스를 작성하는 부분이 CSRF 토큰이 없었는데 사실 있어도 이 케이스에서는 별 쓸모가 없었다.
다행인 점은 CSP로 인해 공격자가 외부 서버 등으로 쿠키를 전송할 수 없어서 토론 레스로 남기게 끔[4] 했는데 이 때문에 정확한 피해자 특정이 가능했다.

5. 피해[편집]

자동 로그인을 사용 중이고 해당 시간대에 해당 쓰레드에 접속했던 8명의 자동 로그인 토큰 유출

6. 해결[편집]


  1. 파서의 해당 루틴 버그 수정됨.
  2. 자동 로그인 쿠키에 HttpOnly 속성 적용
  3. 장기적으로 inline script tag 제거 예정 과연 언제가 될지?

7. 결론[편집]

뭐 패스워드나 이런게 유출된게 아니니...
규모에 비해 생각보다 피해는 적었다. 메데타시 메데타시

[1] 파서 내부적으로 [[파일:~~~~.png]] 나 [[분류:~~~~.png]] 를 이렇게 부른다.[2] 이경우에는 해당 이름을 가진 파일 문서가 존재하지 않아서[3] document.cookie, XMLHTTPRequest 등으로 쿠키값을 읽을 수 없도록 하는 속성. 자세한 설명은 이쪽으로. MDN[4] 좀 창의적이었다.