Flame은 마이크로소프트 서명을 위조했다
2012년, 한 첩보 툴킷이 자신을 '서명된 윈도우 업데이트'로 위장해 감염 대상 PC에 설치됐다. 서명하려고 그들은 학계가 아직 발표하지 않은 MD5 충돌로 마이크로소프트 인증서를 위조했다 — 줄줄이 늘어선 제도적 실수의 마지막 고리로.
프로토콜, 보안 사건, 그리고 인터넷이 실제로 작동하는 방식. 147편.
2012년, 한 첩보 툴킷이 자신을 '서명된 윈도우 업데이트'로 위장해 감염 대상 PC에 설치됐다. 서명하려고 그들은 학계가 아직 발표하지 않은 MD5 충돌로 마이크로소프트 인증서를 위조했다 — 줄줄이 늘어선 제도적 실수의 마지막 고리로.
2023년 연구자들은 SSH 세션 시작 부분에서 메시지 하나를 조용히 삭제할 수 있음을 보였다 — 그리고 그게 가장 깔끔하게 통한 암호가 바로 모든 하드닝 가이드가 권하던 chacha20-poly1305였다. 버그는 어느 서버에도 없었다. 프로토콜이 한 번도 확인하지 않은 이음매에 있었다.
2014년 구글 팀이 SSL 3.0을 깼다. 1996년에 나온, 아무도 더는 고르지 않던 프로토콜을. POODLE이 공격한 건 쓰이던 암호가 아니라, 18년 전 암호로 슬쩍 되돌아가게 만든 브라우저의 '친절한 반사작용'이었다.
2018년 2월 28일, GitHub은 당시 사상 최대인 1.35Tbps DDoS를 견뎠다. 이 무기를 만든 봇넷은 없었다. 열린 채 방치된 memcached 서버와, 인터넷이 2000년부터 고치기를 거부해 온 라우팅 결함으로 조립된 것이었다.
1996년 9월, SYN flood 하나가 뉴욕의 한 ISP를 멈춰 세웠다. 몇 주 만에 두 사람이 상태를 아예 저장하지 않는 방어법을 만들어냈다 — 커넥션을 공격자가 위조할 수 없는 숫자 안에 숨기는 방식이다. 리눅스는 2009년부터 이걸 기본으로 켜 두고 있고, 지금도 일부러 조금 손해를 보게 설계돼 있다.
TLS가 무엇을 암호화하기도 전에, 클라이언트는 자기가 무엇인지 정확히 밝힌다. 인사하는 그 특유의 방식이 곧 지문이다 — JA3와 JA4의 이야기는, 아무도 감출 생각을 하지 않았던 프로토콜의 부위에서 신원이 어떻게 새어 나오는지에 관한 이야기다.
Slowloris 공격은 2009년 것이다. 작은 스크립트 하나, 컴퓨터 한 대, 대역폭은 거의 필요 없다. 그런데 요청 시간 제한 없이 연결마다 스레드를 붙이는 서버는 지금도 멈춰 세운다. 느리게 감으로써 이긴다 — 그리고 그 해법은 HTTP/2의 기록적 홍수 공격에 필요했던 바로 그것이다.
DNS에는 기억이 없다 — 도메인이 무엇을 가리키는지 물으면 오늘의 답만 나오고, 작년의 답은 절대 나오지 않는다. 패시브 DNS는 누가 물었는지는 결코 기록하지 않으면서, 인터넷이 내놓은 모든 답을 기억하는 우연한 감시 데이터베이스다.
1994년 NAT는 IPv6가 나올 때까지 시간을 버는 단기 패치로 제안됐다. 30년 뒤 그것은 없으면 안 되는 인프라가 됐고, 인터넷의 설계 원칙을 조용히 지웠으며, 너무 잘 작동한 나머지 자신의 대체제까지 지연시켰다.
2006년 OpenSSH는 시그널 핸들러에 있던 원격 루트 취약점을 잡았다. 2020년 말 로깅 코드를 고치는 과정에서 그 수정이 조용히 사라졌고, 같은 버그가 3년간 수백만 대 서버로 배포됐다 — 그게 죽은 채로 있는지 아무도 시험하지 않았기 때문이다.
1990년대 미국 정부는 기업들이 일부러 깨지는 암호를 해외에 팔게 만들었다. 그 약한 암호는 법보다 15년을 더 살아남았고 — 2015년, FREAK과 Logjam이 그것을 웹의 3분의 1에서 다시 켰다.
2017년 구글과 CWI는 SHA-1 해시가 같은, 내용이 다른 두 PDF를 공개했다. 흥미로운 건 그걸 해냈다는 사실이 아니다 — 다들 12년 전부터 이걸 예견했는데도 업계는 여전히 '증거'가 나올 때까지 기다렸다는 것이다.