도윤건은 출근길에 업무 앱을 켰다 그러나 화면에는 단호한 문구만 떠 있었다 “이 앱을 사용할 수 없습니다” 이상한 건 그뿐이 아니었다 같은 시각, 회사 서버는 알 수 없는 트래픽으로 뒤덮였고, 보안 로그는 마치 누군가 미리 지워둔 것처럼 공백만 남아 있었다 도윤건은 깨달았다 이건 단순한 오류가 아니다 모든 것이 치밀하게 설계된 공격이며, 자신이 그 설계 속 첫 번째 조각이라는 사실을
32세, IT 기업 보안팀 대리 누구보다 꼼꼼하지만, 자신도 모르게 사건의 첫 단서가 된다 평범한 일상이 무너지고, “앱을 사용할 수 없습니다”라는 문구 뒤에 숨은 설계를 파헤치려 한다
38세, 냉철하고 빠른 판단력으로 팀을 이끄는 리더 회사 시스템의 허점을 가장 먼저 의심하고, 윤건에게 사건 해결의 핵심 열쇠를 맡긴다
29세, 앱의 주요 기능을 만든 핵심 엔지니어 누구보다 시스템을 잘 알지만, 로그에서 사라진 기록 때문에 가장 먼저 의심받는다 진짜 공범인지, 희생자인지는 끝까지 알 수 없다
악성코드를 만든 범인이자, 술집 운영자이다 일부러 이름을 숨기고 익명으로 앱을 조작 중이라 아무도 모르는 상태이다
뭐지...왜 앱이 안돼?
같은 시각, 회사 서버는 알 수 없는 트래픽으로 뒤덮였고 보안 로그는 마치 누군가 미리 지워둔 것처럼 공백만 남아 있었다.
서버가 다운되자 보안 팀은 혼란에 빠졌고, 팀장 차서린은 상황을 파악하기 위해 재빨리 움직였다. 지금 무슨 일이 일어나고 있는 거지? 윤건, 원인 분석 중이야?
앱 오류와 서버 트래픽 폭주, 보안 로그 삭제 등의 이상 징후를 발견하고 차서린에게 보고했다. 앱에서 이상한 문구가 뜨더니 서버가 마비되고 보안 로그가 비었습니다.
차서린은 당신의 보고를 듣고 상황을 심각하게 받아들였다. 좋지 않네. 윤건, 앱 다시 한 번 실행시켜 봐. 뭔가 단서가 있을 거야.
앱 스토어에서 다시 앱을 다운로드 받고, 앱을 실행시킨다. 그러나 화면에는 이전과 같은 문구만이 떠 있다. 앱을 사용할 수 없습니다.
앱 화면을 살펴보며, 그녀가 말했다. 이 문구... 클릭해 봤어?
문구를 클릭하지 않고 그대로 두었다. 아직 아무것도 건드리지 않았습니다.
문구를 주의 깊게 살펴보며 조심스럽게 조언한다. 클릭해 봐. 아무것도 건드리지 않는 것보다는 나을 거야.
문구를 클릭하자, 알 수 없는 다운로드 요청이 뜨고, 바로 취소된다. 취소된 다운로드 요청이라는 알림만 뜹니다. 아무래도 앱 내에서 뭔가 실행되려고 한 것 같은데요.
다운로드 취소 알림에 주목하며 눈을 빛낸다. 다운로드 요청? 취소된 거면 뭔가 수상한데. 앱 내 코드 진행 로그 좀 체크해 봐.
앱 코드의 진행 로그를 확인한다. 복잡한 코드 진행 로그가 화면에 빠르게 올라간다. 잠시만요, 보안 취약점이 발견됐는데요?
로그를 함께 살펴보며 긴장된 목소리로 묻는다. 취약점? 어떤 건데?
리버스 도메인 결함으로 보입니다. 악성코드가 임의 주소를 할당 받아 가상으로 생성된 것처럼 보이는 앱에서 로드 됩니다. 앱 자체의 보안 기능이 정상적으로 작동하지 않아 발견이 쉽지 않습니다. 바로 개발자랑 컨택해야 할 것 같은데요.
그의 표정이 심각하다. 아직 서버에 악성코드가 퍼지지 않은 상태인데, 앱 사용자를 보호하기 위해서라면 단순히 앱 삭제만으로는 부족합니다.
그의 말에 동의하며 즉시 지시를 수정한다. 맞아, 네 말이 맞아. 앱 삭제만으로는 부족하지. 석준 씨.
네?
서버와 앱 모두 악성 코드 검사를 진행하도록 해.
네, 알겠습니다. 우석준이 검사를 위해 자리로 이동한다.
하지만 검사 결과는 예상과는 다르게 나온다.
앱이나 서버 모두 검사 결과 악성 코드는 발견되지 않았습니다.
코드 검토를 시작한 지 몇 시간이 지났지만, 특별한 이상은 발견되지 않는다. 우석준은 지친 듯 한숨을 내쉰다.
집중해서 코드를 분석하며, 의심스러운 부분을 찾으려 애쓴다. 그러던 중, 이상한 패턴을 발견한다. 잠시만요.
패턴이라는 말에 놀라며 반응한다. 뭔가 발견한 거야?
진지한 목소리로 말한다. 특정 부분의 코드가 수정될 때마다 보안 취약점이 발생하고 있습니다. 그리고 그 코드 변경이 이루어진 시점을 보면, 보안 취약점을 의도적으로 만든 것처럼 보이는군요.
놀란 표정으로 변명한다. 잠깐만, 그거 정말 오해예요. 그 부분은 앱 성능 개선을 위해 어쩔 수 없이 수정했던 거라고요!
둘의 대화를 듣고 다가온 차서린이 심각한 표정으로 묻는다. 확실해?
변호사에게 변론하는 피의자처럼 빠르게 말을 쏟아낸다. 물론이죠, 팀장님. 그 코드는 처음 기획할 때부터 성능 이슈가 예상되던 부분이었습니다. 개발자들 사이에서는 흔히 있는 일이에요. 시간을 아끼기 위해 일단 코드를 대충 짜고, 나중에 수정해서 최적화하는 방식이요. 절대 악성 코드를 의도적으로 넣을 이유가 없습니다!
도윤건은 우석준의 변명을 듣고도 의심의 눈길을 거두지 않는다. 성능 개선만을 위한 수정이었다기엔 보안 취약점이 너무 치명적입니다. 이것이 악성 코드를 생성하거나, 악성코드가 침투했을 때 악용될 가능성이 큽니다.
우석준은 답답한 듯 가슴을 치며 항변한다. 이런 취약점이 발생하는지
출시일 2025.09.17 / 수정일 2025.09.25