r53 vs r54 | ||
---|---|---|
1 | ||
1 | [[분류:더시드위키]] | |
2 | [include(틀:사건사고)] | |
3 | [include(틀:알림 상자, title=포크를 위한 이용허락 안내, content=이 문서의 내용 중 현재 버전 상에서 아래 제시된 아이디의 기여부분에 한정한 모든 내용은 저작자표시를 하여 CC BY‐NC-SA 2.0 KR로 배포할 수 있습니다. (단\, 반대로 포크해 오는 것은 이용허락 없이는 불가능합니다.) 편집시 다음 아이디 목록에 편집자가 스스로 본인의 아이디를 기입한다면 위의 이용혀락에 대한 동의를 한 것으로 간주합니다.)] | |
4 | [include(틀:알림 상자, title=아이디 목록, content=disciple153 )] | |
5 | [include(틀:토론, 문서명=2021년 더시드위키 서버 과부하 사건, 토론사유=제목 변경)] | |
6 | [목차] | |
7 | == 개요 == | |
8 | 2021년 12월 2일(KST 기준) [[the seed]] 엔진을 사용하고 클라우드플레어 적용을 받는 세 위키 [[나무위키]], [[더시드위키]], [[알파위키]]의 접속에 장애가 발생한 사건. 이들 중 더시드위키, 알파위키는 522 오류(Connection Timed Out)를 내뿜어 접속이 거의 불가능했었으나 나무위키는 엔터프라이즈 플랜이라 데이터 유동을 어느 정도 견디어 서버 다운까지는 발생하지 않았다. | |
2 | 9 | |
10 | == 추정되는 원인 == | |
11 | === DDoS === | |
12 | 단순 서버 오류가 아니라 DDoS 공격으로 추정된다는 설이 있다. 해당 설이 있는 이유로는 더시드위키, 알파위키에 하술한 include 도배에도 불구하고 잠간 동안 522 오류 없이 접근이 가능했기 때문이다. | |
13 | ||
14 | 더시드위키에 (KST 기준) 12시 40분에 접근이 가능해 include 도배로 반달된 문서들을 되돌린 작업이 있어 05시부터 12시 30분 까지, 12시 50분부터 17시까지에 발생한 것으로 추정된다. | |
15 | 알파위키의 접속 가능상황은 더시드위키와 비슷했다. 그러나 알파위키 내에서 당시의 [[https://archive.ph/xyGub|최근 변경내역(KST 2021-12-03 06시 아카이브)]][*UTC 접속한 컴퓨터의 시간대에 맞게 편집, 토론 스레드 등의 시각이 변한다. 아카이브의 시각은 UTC 시간대이며 여기에 맞춰 스냅샷이 저장된 것. 따라서 UTC 및 기록된 편집 시각 등에서 9시간을 더 경과시킨 시각을 KST라 생각하면 이해할 수 있다.]을 보면 [[https://archive.ph/sWPzq|더시드위키(KST 2021-12-03 06시 아카이브)]][*UTC]와 다르게 include도배와 관련된 편집이나 편집 요청 내역이 없다. 그럼에도 불구하고 알파위키가 더시드위키와 동시에 접속이 안 되었던 정황과 두 위키 모두 [[namu]]의 소유인 정황으로 미루어 두 위키가 동일서버를 사용한다는 추정이 있다. (만일 이것이 사실이고 DDoS가 원인이라면 공격은 12시까지 되었고 12시 50분 경에 재시작했다는 말이 된다.) | |
16 | ||
17 | === include 도배다 === | |
18 | [anchor(include_반달)]include가 대상 문서에서 본문들을 모두 호출하는 명령이면서 '''무제한으로 가능'''함을 감안할 때, 문서 하나 열 때마다 KB(킬로바이트) 단위 되는 내용이 include 구문으로 도배한 횟수 만큼 기계적으로 로드(load)되는 구조라고 보면서 서버 자체에 무리를 준 공격의 원인이 되지 아니하냐는 설이 있다. 만일 문서 시스템이 이렇게 기계적으로 일일이 구문을 불러온 다음 컴파일하고 출력하는 방식으로 동작되고 있었다면 심각한 문제일 것이다. | |
19 | ||
20 | 이 설이 있는 근거로는 두 사례가 있고, 다음 글자수는 해당 설이 참이라고 가정했을 때 도출되는 계산이다. | |
21 | ||
22 | ------- | |
23 | 먼저 동일한 [[the seed]] 엔진을 쓰는 나무위키에서, KST 2021-12-02 15:17:54 편집으로 [[https://namu.wiki/w/SARS-CoV-2/%EC%98%A4%EB%AF%B8%ED%81%AC%EB%A1%A0%20%EB%B3%80%EC%9D%B4|오미크론 변이]] 문서(이하 "오미크론 변이" 문서)에 include 도배가 된 예가 있다. 이 문서의 [[https://namu.wiki/history/SARS-CoV-2/%EC%98%A4%EB%AF%B8%ED%81%AC%EB%A1%A0%20%EB%B3%80%EC%9D%B4?from=720|편집 기록]] 중 r698판[* 반달러가 2001:4430:412b:fc8c:d06a:7d30:babe:410e VPN이다.]에 대한 "편집 비교"나 "blame"을 열람하고자 하면 오류로 '''탭 로드가 중지되면서 튕긴'''다. ("편집 비교"나 "blame"이 구문에 대하여 일부 동작이 되면서 데이터 비교를 보여주는 동작으로 추정된다.) 다만 r698판의 [[https://namu.wiki/raw/SARS-CoV-2/%EC%98%A4%EB%AF%B8%ED%81%AC%EB%A1%A0%20%EB%B3%80%EC%9D%B4?rev=698|RAW]]는 동작하기 전 입력된 구문들만 보여주는 까닭이라 열람이 가능하다. | |
24 | ||
25 | 해당 도배된 구문은 {{{[include(제7회 전국동시지방선거/여론조사)]}}} 만 4,760번 입력인데, '오미크론 변이' 문서 수정 당시 시점인 KST 2021-12-02 15:17:54 기준으로 붙여놓기 된 문서는[[https://namu.wiki/w/%EC%A0%9C7%ED%9A%8C%20%EC%A0%84%EA%B5%AD%EB%8F%99%EC%8B%9C%EC%A7%80%EB%B0%A9%EC%84%A0%EA%B1%B0/%EC%97%AC%EB%A1%A0%EC%A1%B0%EC%82%AC|"제7회 전국동시지방선거/여론조사" 문서]]의 r1328판이며, 글자수만 해도 include구문을 제외하면 484,920자였다. 이는 연습장에 옮겨적기 할 때 include문법을 삭제하면서 개행 4번까지 삭제하고 연습장에 입력하면 484,916자가 되는데 개행 1번당 글자수 1자임을 고려할 때 총 484,920자가 된다. ([[https://namu.wiki/raw/%EC%A0%9C7%ED%9A%8C%20%EC%A0%84%EA%B5%AD%EB%8F%99%EC%8B%9C%EC%A7%80%EB%B0%A9%EC%84%A0%EA%B1%B0/%EC%97%AC%EB%A1%A0%EC%A1%B0%EC%82%AC?rev=1328|비교 1 (붙여놓기 된 문서의 r1328판의 RAW)]], [[https://namu.wiki/raw/%EB%82%98%EB%AC%B4%EC%9C%84%ED%82%A4:%EC%97%B0%EC%8A%B5%EC%9E%A5?rev=13684|비교 2 (연습장 r13684판의 RAW)]]) | |
26 | ||
27 | 해당 글자수만큼 4,760번 하면 무려 '''23억 자'''[* 정확히는 [math(484,920 \times 4,760 = 2,308,219,200)]자. 게다가 개행은 0번이다. 곧 반달러가 '''한 줄에 그 많은 include문법을 다 때려넣고 저장'''한 것.]가 된다. '오미크론 변이' 문서의 글자수 변동만 해도 [math(\color{green}+97,446)] 자이며 처음부터 반달 겸 도배하는 수정이므로 실제 변경된 글자 수는 이보다 더 많겠지만[* 5자마다 {{{\}}}를 놓으면 {{{ [incl\ude(제\7회 전국\동시지방선\거/여론조\사)]}}} 로 28자, 이 문구가 [math(4,760)]번 도배되었으니 입력된 구문은 [math(28 \times 4,760 = 133,280)]자.[br]이 13여 만 자에서 변동폭을 뺀 만큼의 글자수가 '''반달되기 직전 문서의 글자 수'''가 된다. 이 글자수 만큼 전체 지우고 해당 도배문구로 채웠으니 실제 변경된 글자 수는 (최대) [math((133,280 - 97,446)+133,280 =169,114)]자 이다.]앞의 연습장의 수정에서는 이보다 서너 배 넘는 글자수가 수정되었어도 동작이 원활했다. (단순 글자수 변동이 아니라 어떤 동작원리가 있다고 추정된다.) | |
28 | ||
29 | 번외로, 이 문제를 사측에서 인지하고 있는 상황인데도 되돌리기 하는 이용자가 있었다. --운영 방해-- | |
30 | ||
31 | ----- | |
32 | 두 번째 사례로는 더시드위키에서 include를 악용하여 캬루 사진 문서를 도배한 사례가 있다. (이 문서는 더시드위키의 일반 문서들 중 2021-12-02 기준 __가장 내용이 많은 문서__이며, 시스템상 106,756글자이다.) 해당 반달러는 차단되었다. | |
33 | 위와 같은 계산법으로 한다면 include를 제외하고(r4판 바이트 수 기준) 개행 1자를 추가하면 [math(106,737)]자가 된다. 도배한 [[https://theseed.io/raw/%EB%8B%B4%EB%8F%84%EC%95%94%EB%B3%B5%EC%8B%B1%206%ED%98%B8%EC%84%A0?rev=8|한 문서]]만 봐도 {{{ [include(캬루캬루캬루쨩♥)]}}}을 [math(19,620)]번을 도배했는데, 이렇게 되면 문서에 로드 되는 글자수는 무려 '''20억 자''' [* 정확히는 [math(106,737 \times 19,620 = 2,094,179,940)]자. 그러나 입력 문구까지 보면 이보다 조금(?)은 더 많이 된다.]가 된다. | |
34 | ||
35 | {{{#!folding [여담] | |
36 | 여담으로 해당 더시드위키의 반달러는 다른 문서에도 같은 짓을 해서 총 두 번 했고, 나머지는 자잘(?)하게 도배했다. 해당 이용자는 [[https://theseed.io/history/마이조노 사야카|어떤 캐릭터에 대한문서]]를 [[https://theseed.io/raw/마이조노 사야카?rev=1|편집(r1판)]]하면서 [[http://namu.wiki/w/마이조노 사야카|해당 캐릭터]]의 [[https://i.pinimg.com/736x/d7/44/34/d74434e96f564f618dbea1d5659718b6.jpg|이미지]]가 업로드가 안된다는 편집 요약을 남겼다면 자유게시판에 다른 질문을 할 수 있을텐데도 "비로그인 이용자가 편집 못한다" 하는 [[https://theseed.io/thread/OptimalAblazeTameMiddle|핑계 토론]]에 기여내역들이 부정입력으로 벌이는 업무방해 행위들이니 유감일 따름이다.}}} | |
37 | ||
38 | === 결론 === | |
39 | 더 많은 조사가 필요하나, 현재로서는 해당 include문법의 악용이 유력한 원인이라고 본다. | |
40 | 확실한 점으로는 반달을 방지하는 차원에서라도 인용문 문법({{{ > }}}를 입력) 같이 엔진을 개선하여 include 문법 동작에 제한을 줄 필요가 있다. | |
41 | 이것이 원인으로 밝혀진다면 이 사건은 이용자들이 [[2017년 나무위키 XSS 공격 보고서|대낮에 삽질하게 만든 사건]]으로 될 것이다. |