두더지 잡기 식 보안은 결국 패배합니다
1. 이게 뭔가요?
이 글은 소프트웨어 제품 보안을 다룰 때 결함을 기발하게 찾아내는 해커의 정체성에 매달리는 방식과, 시스템이 어떤 악조건에서도 정상적으로 버티도록 만드는 견고함 중심의 방식을 대조합니다. 드러난 보안 구멍을 하나씩 때우는 사후 처방을 두더지 잡기 게임에 빗대며, 이런 땜질식 대응만으로는 결코 안전한 소프트웨어를 만들 수 없다고 지적합니다. 나아가 취약점 신고 포상 제도를 단순한 결함 수집 창구가 아니라 근본 원인을 뿌리 뽑는 장기 전략의 도구로 써야 한다고 제안합니다. 궁극적으로는 시스템이 항상 지켜야 하는 불변 조건을 정하고 이를 설계와 코드에 새겨 넣어 동일한 유형의 결함이 다시는 생기지 않도록 차단하는 방향으로 나아가야 한다고 결론짓습니다.
2. 왜 화제인가요?
보안 업계에서는 오랫동안 남들이 보지 못하는 허점을 찾아내고 빠르게 조치하는 행동을 뛰어난 능력으로 인정해 왔습니다. 처리한 취약점 건수를 늘리고 해결 시간을 줄이는 방식은 회사 경영진에게 보여주기식 성과를 증명하기에도 매우 편리했습니다. 하지만 최근 인공지능 도구가 널리 보급되면서 코드가 폭발적으로 늘어나는 반면, 공격자는 취약점 하나만 찾으면 되므로 방어자가 모든 결함을 일일이 찾아 고치려면 천문학적인 비용이 듭니다. 기발한 허점을 파헤치는 데서 보람을 느끼는 개인적 만족에 머물러서는 쏟아지는 결함을 감당하지 못하고 시스템 전체가 무너질 수밖에 없기에 방어 방식의 근본적인 전환이 시급합니다.
3. 핵심 내용
글쓴이는 보안 제품을 방어하는 사람들을 두 부류로 구분합니다. 첫 번째는 보안을 자신의 정체성으로 삼는 사람들입니다. 이들은 과거 전화망을 조작하던 초기 해킹 기술이나 영화 속 반문화적 해커 이미지에서 뿌리를 찾으며, 남들이 보지 못하는 기발한 허점을 파헤치는 탐정 같은 존재로 자신을 규정합니다. 매년 2만 5천 명 안팎이 참가하는 세계적인 해킹 행사 데프콘처럼 업계 문화와 보상 체계 역시 놀라운 취약점을 찾아낸 사람에게 큰 찬사를 보냅니다. 반면 두 번째 부류는 보안을 견고함으로 바라보는 사람들입니다. 이들은 시스템에 장애가 나거나 공격자가 침입하는 불리한 조건 속에서도 정해진 정상 규칙을 꿋꿋하게 지키는 올바른 시스템을 설계하는 데 집중합니다. 어떤 세계관을 갖느냐는 문제 해결 방식에 큰 영향을 미칩니다. 2004년 환경 정책 연구자인 노드하우스와 셸렌버거가 지적했듯, 과거 환경 운동가들이 환경 보호라는 도덕적 정체성에 갇혀 기술적 대안을 외면했던 것과 비슷합니다. 당시 배척당했던 태양광, 배터리, 전기차 같은 기술 발전이 20년이 지난 오늘날 온실가스를 줄이는 주역이 되었듯이, 보안에서도 탐정 역할에 취해 있으면 시스템을 근본적으로 개선하는 길을 놓치게 됩니다. 두 관점의 차이는 외부 연구자가 취약점을 제보하면 상금을 주는 취약점 포상제(버그 바운티)를 대하는 태도에서 잘 드러납니다. 단순히 결함을 많이 찾아내 건건이 땜질하는 방식은 개발팀의 일정을 방해하는 예측 불가능한 두더지 잡기에 불과합니다. 하지만 이 제도를 보안 전략의 밑거름으로 삼으면 공격자의 침투 방식을 파악하고, 어느 부서의 코드에서 왜 취약점이 생기는지 분석해 장기적인 보안 계획을 세울 수 있습니다. 상금 규칙을 조정해 특정 영역의 취약점을 집중 검증함으로써 보안팀의 정책 가설을 시험하는 양방향 도구로도 활용할 수 있습니다. 인터넷 서비스의 안정성을 관리하는 사이트 신뢰성 엔지니어링(SRE)에서는 서비스 품질 목표를 어기면 신규 기능 출시를 멈추고 시스템 안정화에 자원을 쏟아붓습니다. 이처럼 보안에서도 해결한 사고 건수라는 겉보기 지표에 취하지 말고, 특정 결함 발생 빈도를 점차 줄여 마침내 영으로 수렴시키는 결과 지표를 목표로 삼아야 합니다. 인공지능 시대를 맞아 취약점을 찾는 비용은 전례 없이 저렴해졌지만, 개발자들 역시 인공지능으로 엄청난 양의 코드를 쏟아내고 있습니다. 인공지능으로 코드를 일일이 훑어 취약점을 찾는 방식은 무작위 데이터를 대입하던 과거 시험 기법과 같은 한계에 부딪힙니다. 초기 취약점이 정리된 뒤 방어자가 남은 모든 결함을 찾아내려면 지수 함수처럼 비용이 치솟는 반면, 공격자는 유용한 취약점 몇 개만 건지면 되므로 다항 수준의 적은 비용만 듭니다. 따라서 단순히 인공지능을 이용해 두더지를 더 빨리 잡는 방식으로는 결코 이길 수 없습니다. 대신 인공지능을 활용해 시스템이 어떤 상황에서도 반드시 지켜야 하는 불변 조건을 명확히 정의하고, 안전한 프로그래밍 문법과 자동 검사 체계를 통해 이를 엄격하게 강제해야 합니다. 실패 사례를 바탕으로 더 넓고 강력한 불변 조건을 세워 코드에 새겨 넣을 때 동일한 유형의 결함 전체가 재발하지 않는 진정한 승리를 거둘 수 있습니다.
4. 나에게 어떤 영향이 있나요?
이 글은 보안 실무자와 소프트웨어 개발자가 일하는 방식을 근본적으로 재검토하도록 요구합니다. 외부에서 제보된 보안 결함 뒤를 쫓아다니며 임시 패치 코드를 만드는 소모적인 관행에서 벗어나, 시스템이 반드시 지켜야 할 핵심 규칙을 설계 단계부터 엄격히 반영해야 합니다. 보안 담당자가 불변 조건을 명확히 세워두면 일반 개발자들도 인공지능 코딩 도구를 안심하고 활용하여 생산성을 높일 수 있습니다. 소프트웨어를 사용하는 일반 이용자 입장에서도 기업들이 땜질식 수습을 끝내고 구조적 안전망을 갖추게 되면 해킹이나 데이터 유출 사고를 사전에 차단하여 훨씬 더 신뢰할 수 있는 디지털 서비스를 누리게 됩니다.