보안이 항상 늦는 이유: 경제학, Zero-Days, and Attacker Math
Source: Dev.to
우리는 모두 헤드라인을 보아 왔습니다: 또 다른 대규모 데이터 유출, 또 다른 치명적인 시스템 침해, 또 다른 “우리는 보안을 진지하게 생각합니다”라는 선언. 이것은 냉소적이면서도 중요한 질문을 제기합니다: 왜 보안은 항상 마지막에 도착하는 걸까요? 우리는 사이버 보안에 수십억을 투자하지만, 항상 반응만 하게 됩니다—집이 도난당한 뒤에야 자물쇠를 사는 것이죠. 이는 단순히 상상력이나 기술의 부족 때문이 아니라, 소프트웨어 개발의 경제학, 복잡성의 불변 법칙, 그리고 공격과 방어의 비대칭 수학에 의해 좌우됩니다.
Source: …
보안은 제품을 출하하지 않는다
비즈니스 경제학은 모든 소프트웨어 프로젝트를 시장 출시 시간과의 경쟁으로 몰아넣는다. 기업은 문제를 해결하고, 수익을 창출하며, 사용자를 끌어들이는 기능—즉 가치를 제공하는 데 집중한다. 이와 같은 고위험 경쟁에서 보안은 종종 기능이 아니라 마찰로 인식된다.
- 데모 매력 부족 – 투자자들은 “오늘 해킹당하지 않았다”는 것이 주요 판매 포인트인 제품에 큰 관심을 보이지 않는다.
- 복잡성 증가 – 강력한 인증, 암호화, 입력 검증은 개발 노력을 늘리고 사용자 경험을 저하시킬 수 있다.
- 비용‑편익 오류 – 보안 감사를 위해 5만 달러를 쓰는 것은 손실처럼 느껴지지만, 같은 금액을 마케팅에 쓰면 투자가 된다.
- 시장 보상 – 가장 안전하게 출하한 기업이 아니라, 가장 먼저 출하한 기업이 승리한다.
속도가 알려지지 않은 취약점을 만든다
속도가 주요 지표가 될 때, 지름길은 불가피해지며, 이는 보안에 특화된 기술 부채 형태를 초래합니다.
의존성 문제
개발자는 서드파티 라이브러리와 오픈소스 패키지(e.g., npm, pip)에 크게 의존합니다. 애플리케이션은 그 체인에서 가장 약한 고리만큼만 안전합니다—Log4j 사건을 기억하시나요?
구성 드리프트
출시를 서두르다 보면 “충분히 괜찮은” 구성이 영구화됩니다. 사용 편의성을 위해 설계된 기본 설정이 보안보다 우선시되어 프로덕션에 남아 공격자에게 문을 열어줍니다.
복잡성 역설
빠른 개발은 시스템 복잡성을 증가시킵니다. 구성 요소와 상호작용이 늘어남에 따라 가능한 공격 경로의 수가 기하급수적으로 늘어납니다. 서두르게 작성된 코드 한 줄마다 공격자에게 잠재적인 초대장이 됩니다.
방어자 vs. 공격자는 공정한 게임이 아니다
사이버 보안은 근본적으로 비대칭적이며, 수학적으로 방어자에게 유리하지 않습니다.
방어자의 딜레마
방어자는 제한된 자원으로 종종 알 수 없고 무한에 가까운 위협 집합으로부터 보호해야 합니다.
공격자의 이점
공격자는 유리한 경제성을 누립니다: 자동화 도구를 사용해 인터넷을 스캔하는 단독 적은 거의 비용이 들지 않는 반면, 시스템을 방어하려면 수십만 달러에 달하는 고액 연봉을 받는 침투 테스트 팀이 필요할 수 있습니다.
보안은 항상 늦게 도입됩니다. 방어자는 완벽한 방벽을 구축하려고 하는 반면, 공격자는 사다리 하나만 있으면 충분하기 때문입니다.
왜 “설계 단계에서 보안”이 현실에서는 어려운가
보안을 왼쪽으로 이동—소프트웨어 개발 수명주기(SDLC)의 설계 단계에 통합하는 것—은 이론적으로는 타당하지만 실제로 구현하기는 매우 어렵습니다.
- 기능에서 위협 모델로 – 설계자는 사용자 행동뿐 아니라 공격자 행동도 예측해야 합니다.
- 속도에서 정밀 검토로 – 코드 리뷰와 아키텍처 분석은 속도를 중시하는 생태계에 필수적인 지연을 초래합니다.
- 지식 격차 – 보안 코딩은 컴퓨터 과학 프로그램이나 부트캠프에서 보편적으로 가르치지 않는 전문 기술입니다.
시장은 “빠른 전달”을 보상하고, “설계 단계에서 보안”은 보상하지 않습니다.
왜 보안은 항상 실패 뒤에 오는가
보안 지출의 대부분은 반응형이며, 실패 사건에 의해 촉발됩니다.
제로데이 취약점—공격자에게는 알려졌지만 방어자에게는 알려지지 않은—은 패치가 나오기 전부터 존재합니다. 바이러스가 확인된 뒤에야 “백신”을 만들 수 있습니다. 이는 비극적인 순환을 만들죠:
- 새로운 기술(IoT, 클라우드, AI)이 빠르게 구축·출시되며 보안은 우선순위에서 밀립니다.
- 그 기술이 널리 채택됩니다.
- 중대한 공격이 성공해 핵심 결함이 드러납니다.
- 그때서야 보안이 문제를 “수정”하기 위한 자금, 관심, 명령을 받게 됩니다.
이 패턴은 개인 엔지니어의 실패가 아니라, 즉각적인 가치를 장기적인 안정성보다 우선시하는 시스템적 우선순위를 반영합니다.
Final Thought
보안이 늦은 이유는 엔지니어가 부주의해서가 아니라, 현실이 가정보다 더 빨리 움직이기 때문이다.