
미국 실리콘밸리에 오면 뭔가 다를 것 같나요?
천재적인 엔지니어들이 완벽한 아키텍처 위에서 코딩할 것 같다는 환상을 가진 분들을 종종 봅니다.
솔직히 말해, 여기도 사람 사는 곳이고 '기술 부채'와 '귀차니즘'이 지배하는 건 똑같습니다.
오히려 규모가 크기 때문에, 실수 한번 터지면 그 파편이 상상을 초월하는 범위로 튑니다.
오늘은 최근 보안 업계에서 엔지니어들의 뒷목을 잡게 만든, 어처구니없는 사건 하나를 가져왔습니다.
미국의 거대 감시 인프라 기업인 Flock Safety가 저지른 실수입니다.
이들이 만든 '하드코딩(Hardcoding)' 실수 하나가 미국 전역의 경찰 시스템을 어떻게 발가벗겼는지, 그리고 우리가 여기서 뭘 배워야 새벽 3시 호출(PagerDuty)을 피할 수 있는지 이야기해 보겠습니다.
1. "비밀번호, 그냥 코드에 박아두죠?"
Flock Safety는 미국 전역 5,000개 이상의 경찰서와 6,000개 커뮤니티에 감시 시스템을 제공하는 회사입니다.
번호판 인식(LPR), 순찰차 위치, 드론, 심지어 911 신고 데이터까지 다룹니다.
그런데 이 엄청난 데이터를 다루는 시스템의 관리자급 API 키가 클라이언트 사이드 자바스크립트(JavaScript) 번들 파일에 그대로 노출되어 있었습니다.
그것도 한두 군데가 아니라, 총 53번이나 반복해서 하드코딩되어 있었죠.
해커가 복잡한 침투 테스트를 할 필요도 없었습니다.
그저 브라우저 개발자 도구를 열고 소스 코드를 훑어보기만 하면, 미국 감시 인프라의 '마스터 키'를 주울 수 있었던 겁니다.
2. 기술적 원인: 게으름이 만든 참사
문제가 된 키는 지리정보 시스템인 ArcGIS API 키였습니다.
황당한 건 이 키의 설정 상태입니다.
키의 메타데이터 태그가 appTitle: "Default API Key"였습니다.
이게 무슨 뜻인지 아시나요?
Esri(ArcGIS 개발사) 계정을 처음 만들 때 자동으로 생성해 주는 기본 키를 그대로 갖다 썼다는 겁니다.

보통 상용 서비스를 운영한다면 당연히 지켜야 할 기본 수칙들이 있습니다.
- Referrer 제한 (특정 도메인에서만 호출 가능하게 설정)
- IP 화이트리스트 (허용된 서버 IP만 접근 가능)
- Scope 제한 (필요한 기능만 열어두기)
Flock Safety는 이 중 단 하나도 적용하지 않았습니다.
누구나 이 키만 있으면 50개의 비공개 데이터 레이어(Layer)에 접근할 수 있었습니다.
여기에는 범죄 수배 차량(Hotlist) 정보, 실시간 순찰차 위치, 911 통화 위치 같은 1급 기밀들이 포함되어 있었죠.
3. "One Map"의 저주
Flock Safety의 마케팅 슬로건은 "One map. Smarter Response."입니다.
모든 데이터를 하나의 지도에서 보여주겠다는 멋진 비전이죠.
하지만 엔지니어링 관점에서 '중앙집중화'는 양날의 검입니다.
그들은 이 'One Map'을 구현하기 위해, 5,000개 경찰서의 데이터를 개별 인스턴스로 분리하지 않고, 거대한 단일 공유 레이어에 때려 넣었습니다.
그리고 그 거대한 문을 여는 열쇠를, 보안 설정도 안 된 채 프론트엔드 코드에 던져놓은 셈입니다.
마케팅 팀이 "모든 것이 통합된 완벽한 솔루션"을 팔 때, 백엔드에서는 "권한 분리하기 귀찮으니까 그냥 루트 키 쓰자"는 의사결정이 일어났을 가능성이 큽니다.
이런 구조는 가용성(Availability) 측면에서도 최악입니다.
키 하나가 유출되면(Revoke), 서비스 전체가 셧다운되어야 하니까요.
4. 우리가 배워야 할 것 (생존 수칙)
제가 넷플릭스에서 일하며 가장 신경 쓰는 건 화려한 신기술이 아닙니다.
"내가 자는 동안 시스템이 죽지 않게 하는 것"입니다.
이번 사건을 통해 주니어, 미들급 엔지니어들에게 꼭 해주고 싶은 말이 있습니다.
첫째, 클라이언트는 적의 손에 있습니다.
브라우저로 전송되는 모든 코드는 '공개'된 것입니다. .env 파일에 넣었다고 빌드 과정에서 번들링 되면 아무 소용 없습니다. 민감한 키는 절대 프론트엔드 코드에 두지 마십시오. Proxy 서버를 두거나, BFF(Backend for Frontend) 패턴을 사용하세요.
둘째, 'Default'는 운영 환경용이 아닙니다.
AWS든, GCP든, ArcGIS든, 계정 생성 시 주는 기본 키나 기본 VPC 설정은 'Hello World' 찍어보라고 주는 겁니다. 프로덕션 배포 전에는 반드시 권한을 최소화(Least Privilege)한 전용 키를 발급받으세요.
셋째, 자동화된 스캔 도구를 믿으세요.
사람은 실수합니다. 53번이나 복사해서 붙여넣을 동안 아무도 몰랐다는 건, 시크릿 스캐닝(Secret Scanning) 도구가 CI/CD 파이프라인에 없었다는 뜻입니다. 깃허브(GitHub)에 코드 올릴 때 자동으로 키를 감지해 주는 도구, 지금 당장 도입하세요.

미국 빅테크라고 해서 대단한 마법을 부리는 게 아닙니다.
결국 기본을 지키느냐, "나중에 고치지 뭐" 하고 넘어가느냐의 차이입니다.
여러분의 코드는 어떻습니까?
혹시 "테스트니까 괜찮아"라며 하드코딩해 둔 API 키가, 지금 라이브 서버에서 돌고 있지는 않나요?
오늘 집에 가기 전에, 본인 프로젝트의 설정 파일 한번 훑어보시길 권합니다.
그 작은 확인 하나가, 몇 년 뒤 여러분의 커리어와 평판을 지켜줄 수도 있습니다.


