사고 & 취약점
Capital One, Equifax, Log4Shell, Heartbleed, XZ — 공개된 침해 사고와 취약점을 원인, 영향, 초동 대응, 예방법으로 나누어, 지금도 통하는 교훈을 짚어봅니다.
7pay 부정 사용 사건(2019) — 2단계 인증 없는 결제 앱은 왜 탈취되었나
출시 다음 날에는 계정 탈취가 시작되어 약 808명·약 3,862만 엔의 부정 사용이 발생했습니다. 핵심은 인증 설계의 결함으로, ① 2단계 인증이 없어 ID+비밀번호만으로 로그인할 수 있었고, ② 비밀번호 재설정의 새 비밀번호를 '등록되지 않은 이메일 주소'로도 보낼 수 있어 단편적인 개인정보만으로 계정을 빼앗을 수 있었습니다. 당신의 환경에서는 중요한 작업에 2단계 인증을 필수화하고, 비밀번호 재설정은 등록된 경로로만 제한하며, 크리덴셜 스터핑을 상정한 탐지·잠금을 갖추고, 출시 전에 인증 흐름을 제3자가 리뷰해 대비하세요.
Benesse 개인정보 유출 사건(2014) — 내부 부정은 왜 막지 못했나, 최소 권한과 위탁처 관리
업무 위탁처(그룹 회사)의 파견 시스템 엔지니어가, 정규로 부여받은 데이터베이스 접근 권한으로 고객정보를 대량으로 빼내 개인 스마트폰으로 전송해 명부업자에게 매각했습니다. 감시 소프트웨어는 USB 저장장치로의 기록은 막았지만 스마트폰으로의 전송(MTP)은 막지 못했습니다. 최대 약 3,504만 건이 유출. 권한을 필요 최소한으로 줄이고(최소 권한·need-to-know), 반출 경로를 DLP로 '전부' 막고, 대량 접근을 탐지하고, 위탁처·재위탁처까지 관리를 미치게 하여 대비하세요.
Capcom 랜섬웨어 사고(2020) — 오래된 VPN 장비가 왜 침투 경로가 되었나, 이중 갈취에 대한 방어
침투 경로는 신형으로 교체한 뒤에도 폐기되지 않고 북미 자회사에 남아 있던 '오래된 예비 VPN 장비'였습니다. 거기서 사내 네트워크가 뚫려 데이터가 도난당한 뒤 랜섬웨어로 시스템이 암호화되었습니다(이중 갈취). 최대 약 39만 명의 개인정보가 유출될 가능성이 있었습니다(카드 정보는 포함되지 않음). Capcom은 지불을 거부하고 백업에서 복구했으며 투명하게 공개했습니다. 여러분의 환경에서는 사용하지 않는 장비를 폐기하고, 경계 장비를 패치하며, 절도와 암호화 양면(분할·탐지·백업)으로 대비하세요.
코인체크 NEM 유출 사건(2018) — 약 5,800억 원이 도난당한 원인과 키 관리 방어
진입은 직원을 노린 스피어 피싱/악성코드로 보고되었고, 거기서 핫월렛(인터넷 연결)의 개인키가 탈취되어 약 5억 2,300만 XEM(당시 약 5,800억 원)이 한 번에 부정 송금되었습니다. 핵심은 거액을 즉시 움직일 수 있는 '뜨거운' 상태로 다중서명 없이 두었다는 것 — 단 하나의 키 유출로 전액이 움직였습니다. 여러분의 환경에서는 중요한 키·비밀을 오프라인/전용 금고에 모으고, 핫은 최소화하며, 단일 장애점을 만들지 않고, 비정상적인 대량 조작을 탐지·정지할 수 있게 대비하세요.
KADOKAWA·Niconico 랜섬웨어 사고(2024) — 왜 피해가 전사로 번졌나, 네트워크 분리와 BCP
침투 경로는 직원의 자격 증명을 훔친 피싱으로 설명됩니다. 거기서 사내 네트워크가 뚫려 랜섬웨어가 실행되었고, Niconico를 포함한 그룹의 다수 서비스가 수개월간 정지했으며 약 25만 명의 데이터가 유출되었습니다. 피해가 전사로 번진 배경으로는 중요도가 크게 다른 시스템이 같은 네트워크에 함께 있어 충분히 분리되지 않았던 점이 보도·분석에서 지적됩니다. 네트워크를 중요도로 분리하고, 피싱에 강한 인증을 쓰며, 사업 연속성(BCP)과 복구를 준비해 방어하세요.
Takufile-bin 정보 유출 사건(2019) — 비밀번호 평문 보관은 왜 치명적인가, 해싱이라는 방어
서버의 취약점을 찔려 부정 접근을 당했고, 탈퇴 완료된 고객을 포함한 약 481만 건의 이름·이메일·로그인 비밀번호·생년월일 등이 유출됐다. 결정적이었던 것은 로그인 비밀번호가 암호화되지 않은 '평문'으로 보관돼 있었다는 점 = 유출된 순간 그대로 악용 가능했고, 재사용된 곳에서의 2차 피해(계정 탈취)로 직결됐다. 당신의 환경에서는 비밀번호를 단방향 해시+솔트로 보관하고, 애초에 불필요한 데이터를 갖지 않으며, 취약점을 막고, 재사용에 대비(2FA)함으로써 지킨다.
MOVEit 대규모 유출 사고(2023) — SQL 인젝션 제로데이가 2,700개 이상 조직에 도달한 경위와 방어법
진입점은 인터넷에 노출된 MOVEit Transfer의 SQL 인젝션 제로데이(CVE-2023-34362)였습니다. 웹 셸(LEMURLOOT)이 심어지고 백엔드 데이터베이스에서 데이터가 대량 탈취되어 2,700개 이상 조직, 약 9,330만 명에게 피해를 입혔습니다. 대부분의 피해자는 벤더가 MOVEit을 썼기 때문에 간접적으로 끌려 들어갔습니다. 여러분의 환경에서는 KEV 신속 패치, 노출 최소화, 웹↔DB 최소 권한과 분리, 벤더 인벤토리와 데이터 최소화가 핵심입니다.
Capital One 데이터 유출 사고(2019) — 단 하나의 SSRF가 1억 건이 넘는 기록을 유출시킨 경위와 방어법
단 하나의 SSRF가 메타데이터 엔드포인트에 도달 → 과도한 권한의 IAM 임시 자격 증명 → S3 일괄 복사로 약 1억 600만 건이 유출되었습니다. 모든 단계에서 막을 수 있었습니다. 여러분의 환경에서는 IMDSv2, IAM 최소 권한, 그리고 아웃바운드 조회에 대한 허용 목록이 핵심입니다.
Codecov 유출 사고(2021) — CI 안의 '신뢰하던 도구'가 탈취되어 비밀 정보가 새어 나갔을 때
신뢰하던 CI 도구(curl|bash로 실행되는 Bash Uploader)가 상위에서 변조되었습니다. 여러분의 코드는 손대지 않았기 때문에 약 2개월간 알아채지 못한 채 CI 비밀 정보가 유출되었고, 체크섬 검사가 이를 잡아냈습니다. 여러분의 CI에서는 가져온 산출물 검증, 최소 권한 비밀 정보, 로테이션, 이그레스 모니터링이 핵심입니다.
Equifax 유출 사고(2017) — 패치되지 않은 Apache Struts 결함이 1억 4,700만 명을 유출시킨 경위
원인은 이미 패치까지 나와 있던 알려진 CVE(CVSS 10.0)를 공개 시스템에 적용하지 않은 것이었습니다. 만료된 모니터링 인증서가 76일간 유출을 가렸습니다. 여러분의 환경에서는 자산 인벤토리, 패치 SLA, 머신 모니터링, 그리고 건강한 탐지가 핵심입니다.
Heartbleed(CVE-2014-0160) — 암호화 통신의 토대에서 메모리가 새어 나왔을 때
OpenSSL의 메모리 과다 읽기는 개인 키와 세션까지 유출시킬 수 있었습니다. 원인은 서버가 주장된 길이를 신뢰하고 인접 메모리를 읽은 것입니다. 교훈은 전부 새어 나갔다고 보고 행동하는 것 — 인증서를 재발급하고 모든 비밀 정보를 로테이션 — 그리고 토대 소프트웨어와 메모리 안전성의 무게입니다.
Log4Shell(CVE-2021-44228) — 자신이 그 버그를 가졌는지조차 확인할 수 없어 전 세계가 두려워한 밤
Log4j의 CVSS 10.0 버그. 진짜 공포는 전이 의존성 — 자신도 모르게 쓰던 라이브러리를 통해 영향을 받는 것이었습니다. 수동적인 로깅 경로가 공격 벡터가 되었습니다. SBOM, 머신 모니터링, 빠른 패치, 그리고 후속 CVE 추적이 교훈입니다.
XZ Utils 백도어(CVE-2024-3094) — 신뢰 그 자체가 표적이 되었을 때
신뢰받던 메인테이너가 xz에 백도어를 심은 공급망 공격. 한 엔지니어의 '이거 느린데?'가 안정 배포 직전에 잡아냈습니다. 표적은 코드가 아니라 사람과 신뢰였습니다. 의존성을 최소화하고, 버전을 핀 고정하고, 재현 가능하게 빌드하고, 이상을 끝까지 쫓고, 메인테이너를 지원하십시오.