2026 웹 보안 실전 가이드

저자 서문. 나는 막는 사람입니다

30년간 막아온 사람의 기록 — 이 책을 쓴 이유, 그리고 현실적인 보안이 약속할 수 있는 것.

저는 보안을 직업으로 삼기 전에, 보안과 함께 자랐습니다. 보호 로직을 거꾸로 읽어내며 우회하던 시절, 24시간 외부에 노출된 시스템을 혼자 지켜내던 시절을 지나, 지금에 이르렀습니다. 그동안 저는 수백 번 털렸고, 수백 번 막았으며, 허락된 자리에서 수백 번 직접 털어보기도 했습니다. 공격자의 사고와 방어자의 책임을, 같은 손으로 익혔습니다.

제 이름은 안정환이고, (주)뎁팀의 대표입니다. 지난 십수 년 동안 수백 개의 웹 프로젝트를 직접 만들고 운영해 왔습니다. 화면 너머의 코드부터 그 코드가 돌아가는 서버 인프라까지, 설계하고, 보안을 입히고, 새벽에 깨어 유지보수하고, 뚫린 자리를 되짚어 분석하는 일을 — 남에게 맡기지 않고 제 손으로 — 그 세월 내내 해 왔습니다. 그래서 이 책은 컨설턴트가 멀리서 내려다보며 쓴 권고문이 아니라, 같은 자리에서 같은 공격을 맞아 온 운영자가 옆에서 건네는 메모에 가깝습니다.

그래서 이 책에서 제가 하는 말들은 교과서에서 추려온 것이 아닙니다. 그 수백 번의 실전에서 살아남은 것만 남은, 일종의 잔존물입니다. 화려한 기법은 거의 없습니다. 오래 하다 보면 알게 됩니다. 시스템을 살리는 것은 화려한 무엇이 아니라, 지루할 만큼 당연한 기본기라는 것을.

지금 이 글을 쓰는 순간에도, 제 서버들은 중국과 동남아에서 날아오는 자동화된 공격과 끊임없이 부딪치고 있습니다. 멈추는 법이 없습니다. 그리고 새로운 취약점이 하나 발표될 때마다, 저는 주말을 반납하고 밤을 새우며, 막아낼 때까지 싸웁니다. 이것은 비유가 아니라 제 일상입니다. 이 책의 모든 문장은, 그 밤들 속에서 제가 실제로 겪고 확인한 것에서 나왔습니다.

가까운 예가 하나 있습니다. 2025년, 제가 여러 프로젝트에서 쓰는 Livewire 3에 인증 없이도 원격으로 명령을 실행당할 수 있는 치명적 취약점(CVE-2025-54068)이 공개됐습니다. 고치는 일은 버전 하나(3.6.4)를 올리는 게 전부였지만, 공개되자마자 실제 공격에 쓰여 CISA의 '악용 중인 취약점' 목록에까지 올랐고, 저는 그 주말에 운영 중인 Livewire 서비스를 전부 뒤져 버전을 맞췄습니다. 그리고 그해 하반기에는, 이번엔 제가 짠 코드가 아니라 제가 '가져다 쓴' 것들이 문제였습니다. npm 생태계가 공급망 공격에 휩쓸려 주당 수십억 번 내려받히는 chalk·debug 같은 패키지가 통째로 오염됐고(2025년 9월), 스스로 번식하는 Shai-Hulud 웜은 연말에 React 관련 패키지까지 감염시켰습니다. 내가 한 줄도 틀리지 않아도, 내가 신뢰한 누군가의 한 줄이 나를 무너뜨릴 수 있다는 것 — 그해 겨울, 수많은 개발자가 함께 밤을 새우며 그 사실을 배웠습니다.

이 책을 쓴 이유는 단순합니다. 이런 이야기를 들을 곳이 거의 없기 때문입니다.

뉴스는 0-day만 다룹니다. 0-day란 고치는 패치가 아직 세상에 없는, 그래서 정말로 막기 어려운 취약점을 말합니다. 아무도 막을 수 없었던 천재적 공격, 무력한 피해자. 그래서 사람들은 보안을 영화처럼 오해합니다. 그러나 현장의 진실은 정반대입니다. 대부분의 침해는, 패치가 이미 나와 있었는데 적용하지 않아서 일어납니다(이미 알려진 구멍이라는 뜻에서 n-day라고 부릅니다). 막을 수 있었는데 막지 않아서 뚫리는 것입니다. 멀리 갈 것도 없습니다. 2023년 수많은 기업을 무너뜨린 Citrix Bleed(CVE-2023-4966)는 이미 패치가 나와 있었는데도 적용을 미룬 곳들이 줄줄이 털렸고, 같은 해 MOVEit Transfer 사건(CVE-2023-34362)에서는 패치가 늦은 며칠이 곧바로 대량 유출로 이어졌습니다. 슈퍼해커가 아니라, 어제 나온 업데이트를 미룬 자신이 진짜 위협입니다. 이것은 비극이 아니라 통제 가능한 문제라는 뜻이고, 그래서 저는 이 이야기를 꼭 전하고 싶었습니다.

그리고 지금은, 이 이야기가 그 어느 때보다 중요한 시점입니다. AI를 잘 활용하면 누구나 공격이 가능해진 것처럼, 누구나 방어도 가능해졌습니다. 이 비대칭은 양쪽 모두에게 열려 있습니다. 저는 언제나 막는 사람 편에 서 있습니다. 그리고 막으려는 사람들 — 보안 전문가가 아니지만 자신의 웹사이트와 서버와 고객을 지켜야 하는 사업주, 프론트엔드와 백엔드 개발자들 — 에게, 현실이 어떤 모습인지, 개념이 무엇인지, 그리고 무엇을 어떻게 하면 되는지를 안내하기 위해 이 책을 썼습니다.

이 책은 당신을 보안 전문가로 만들지 않습니다. 그것이 목적도 아닙니다. 이 책의 목적은, 당신에게 경각심과 판단력을 주는 것입니다. 당신의 서버가 지금 이 순간에도 두들겨 맞고 있다는 사실을 깨닫게 하고, 무엇이 진짜 위험인지 분별하게 하고, 일상의 평범한 사고가 회사를 통째로 날리는 재앙이 되지 않도록 미리 설계하게 하는 것입니다.

제가 30년 동안 매일 싸우며 배운 것을, 가능한 한 쉽게, 여기에 풀어놓았습니다. 완벽한 보안은 없습니다. 그러나 당신을 다음 사람보다 어려운 표적으로 만들 수는 있습니다. 침해의 확률을 낮추고, 일어났을 때 빠르게 알아채고, 피해를 가두고, 회복할 수는 있습니다. 그것이 현실적인 보안이 약속할 수 있는 전부이며, 동시에 그것으로 충분합니다.

부디 이 책이, 당신이 막는 사람이 되는 데 도움이 되기를 바랍니다.

저는 늘 당신 편에 있겠습니다.