“예외 처리는 권한이 있는 사람이 했다고 생각했어요.”
윤세한은 그렇게 말했다.
그가 자신의 이름으로 남은 2025년 8월 25일 9시 36분 조건 검토 기록을 설명하는 자리였다. 3월 4일, 경찰 면담과 별도로 사실확인을 위한 서면이 오갔다. 나는 그가 직접 내게 전달하기로 허락한 부분만 읽었다.
윤세한은 당시 시스템 개선과 검토 조건 테스트를 맡던 직원이었다. 그날 명의상 계정이 접속한 사실은 인정했다. 그러나 자신이 직접 그 시간에 검토 화면을 열었는지는 정확히 기억하지 못했다.
“누군가 내 계정을 쓴 거라면 제가 잘못 관리한 거죠.”
그는 기록에 그렇게 적었다. “하지만 어떤 경고를 낮출지 결정하라고 지시한 적은 없습니다.”
나는 책임을 피하는 말인지 사실을 말하는 것인지 판단할 수 없었다. 그래서 그의 말을 그대로 기록하고 다른 증거를 찾았다.
온새문서지원의 자료에 따르면 2025년 8월의 예외 처리 절차에는 두 층이 있었다. 임시적으로 화면을 진행할 수 있도록 하는 운영 권한과, 실제 책임 귀속을 인정하는 업무 승인 권한이었다. 둘은 달랐다. 그런데 구형 화면에는 두 단계 모두 '진행 가능'이라고 표시되는 경우가 있었다.
“어떤 사람은 진행 가능을 승인이라고 읽었겠네요.”
“그럴 수 있어.” 선영이 답했다. “하지만 그 사람이 뭘 봤는지는 확인해야 해.”
“서명 없는 예외 승인 사진이 그 혼동을 이용한 거라면요?”
“그때부터 사진을 보낸 이유를 따질 수 있겠지.”
점심 무렵 나는 온새문서지원의 과거 운영 안내서를 읽었다. 각 페이지 아래에는 작은 글씨로 ‘임시 통과는 승인 효력이 없음’이라고 적혀 있었다. 그 문장은 늘 같은 위치에 있었고, 일부 안내 화면에서는 접혀 보이지 않았다. 다들 사용법을 익혔다고 생각했을 것이다.
나는 설명서를 인쇄해 책상 위에 붙였다. ‘진행 가능’이라는 큰 초록 글씨가 눈에 들어오고, 그 아래에서 ‘업무 승인 별도’라는 작은 검은 글씨는 한참 뒤에야 보였다. 위험한 설계였다. 그렇다고 사용자에게 모든 책임이 없다는 뜻도 아니었다. 다만 사람의 착각을 쉽게 만드는 화면이 실제로 존재했다는 사실은 분명했다.
오후 한 시, 윤세한이 짧은 질의서를 보냈다. 그는 개인 계정 사용 정책이 몇 번 바뀌었다고 했다. 업무가 몰리면 공용 단말을 쓴 사람이 동료의 로그인 세션을 종료하지 않고 다음 작업을 이어가는 일도 있었다는 것이다.
“그때도 그랬습니까?” 내가 되물었다.
“정확히는 기억하지 못합니다. 그래서 가능성이라고 적었습니다.”
나는 그 답변을 정리했다. 윤세한이 이런 습관을 인정했다고 해서 그날 누가 조작했는지가 밝혀지는 것은 아니다. 그러나 회사가 개인 사용 기록을 신뢰할 수 있도록 계정을 관리했는지는 별개의 조사 대상이었다.
그는 마지막에 이렇게 썼다. ‘제가 직접 눌렀든 누르지 않았든, 명의가 남을 수 있는 방식으로 사용한 것은 잘못이라고 생각합니다.’
그 문장을 읽고 나는 오래 생각했다. 자신의 관리 잘못을 인정하는 것과 자신이 하지 않은 행위를 했다고 인정하는 것은 다르다. 그 둘을 구분하도록 요구하는 것이 상대에게 편한 변명을 주는 일일까. 아니었다. 죄를 밝히려면 죄의 크기를 정확히 재야 한다.
나는 선영에게 질의서의 해당 부분만 전달했다. 그는 경찰에 원본을 따로 제출하겠다고 했고, 나는 그의 말이 수사기관의 정식 자료와 다르지 않도록 확인했다.
저녁에 백이준이 연락해왔다. 회사는 경고문을 왜 참고 문구로 바꿀 수 있게 했는지에 관한 유지보수 계약의 일부를 확보했다고 했다. 계약에는 전산 업무 장애 때 예외적으로 처리를 계속할 수 있다는 조항이 있었지만, 책임 귀속을 확정하지 않은 채 비용을 이관해도 된다는 뜻은 아니었다.
“회사 쪽에서 그 조항을 과도하게 해석했을 수도 있겠네요.”
“그 부분은 조사해달라고 요청했습니다.” 그가 말했다.
나는 그에게 누가 실제로 조항을 승인했는지 물었다. 그는 계약상 승인자와 그날 시스템 실행자는 다를 수 있다고 답했다. 그 대답이 변명인지 정확한 구분인지는 계약 원본을 보면 알 수 있을 것이다.
오후에 업체가 제출한 작업 이력 중 한 줄이 눈에 띄었다. 9시 43분 공용 실행 이전, 9시 40분에 예외 처리 조건이 호출됐다. 오류 표시를 우회하는 기능은 수동 권한이 아니라 사전에 정의된 정책으로도 활성화될 수 있었다.
“누가 그 정책을 만들었습니까?”
“업체가 설치할 때의 기본 규칙인지, 회사 요청으로 수정된 건지 아직 확인 중이야.”
나는 의자에서 몸을 일으켰다. 예외 처리가 누군가의 마지막 클릭으로 실행됐더라도 그 클릭이 가능하도록 만들어진 환경은 더 오래전에 준비됐을 수 있었다.
그때 최명환에게서 공식 회신이 왔다. 그는 2025년 8월 25일 당일 지시한 특정 업무가 무엇인지 수사팀에 자료로 설명하겠다고 했다. 단순한 부인만 적힌 문서는 아니었다. 몇 개의 지시 메일 제목과 발송 시각을 포함하고 있었다.
“저 사람이 협조하면 의심을 거둬야 합니까?” 내가 물었다.
“의심은 증거에 맞춰 바꾸는 거야.” 선영이 말했다. “협조했다고 무조건 믿어서도 안 되고, 협조했다는 이유로 수상하게 봐서도 안 돼.”
나는 회신을 읽으며 그가 실제로 제출한 내용과 아직 제출되지 않은 자료를 따로 나눴다. 어느 쪽도 그를 무죄라고 확정하지 않았고 유죄라고 확정하지도 않았다.
오후 다섯 시, 박혜림에게서 간단한 소식이 왔다. 한 회사가 그녀의 수정된 경력 확인서를 받았고, 서류 심사를 다시 하겠다고 알려왔다. 그녀는 이번에는 서진혁이나 오선영에게 전화하지 않고 자신이 직접 답장했다고 했다.
“이건 제 일이라서 제가 할게요.”
“네. 필요한 자료가 있으면 말씀하세요.”
그녀는 웃었다. “이제 뭘 확인해야 하는지 조금은 알 것 같아요.”
나는 그 말을 들으며 책상 위의 ‘대리 승인’ 사진을 보았다. 2025년 누군가는 그 말이 무슨 뜻인지 모른 채 진행 버튼을 눌렀을 수도 있다. 그러나 우리가 그 의미를 지금 확인할 수 있다면 같은 피해가 다른 사람에게 옮겨가는 일을 막을 수 있었다.
저녁 늦게 선영이 다시 전화했다. 2025년 8월 25일 9시 40분의 예외 조건 호출은 회사 내 한 대의 공용 단말에서 실행된 작업으로 추정된다는 소식이었다. 동시에 원격지원 세션은 9시 42분에 종료됐다. 9시 43분의 공용 실행은 세션 종료 후에도 내부 단말에서 가능했다.
“그럼 원격지원 직원이 그때 직접 클릭하지 않아도 됐다는 거네요.”
“맞아. 하지만 같은 사람이 자리를 옮겨 클릭했을 가능성까지 사라지는 건 아니지.”
나는 표를 하나 더 지웠다. ‘원격지원 종료=승인 불가능’이라는 내가 어젯밤 세웠던 추정이었다. 상대가 던진 사진 속 작은 글씨 때문에 내가 또 하나의 함정에 빠질 뻔했다.
그때 이메일이 도착했다. 익명 발신자가 말했다.
‘서 조사관님은 이제 누가 눌렀는지보다 누가 누를 수 있게 했는지를 보시겠군요.’
나는 오랫동안 화면을 바라봤다. 발신자는 내가 어디까지 알아냈는지 아는 것처럼 말했지만, 이는 지금까지 나눈 공개된 질문을 다시 풀어 쓴 것일 수도 있었다.
그러나 아래 문장은 달랐다.
‘다음에는 그 사람이 직접 서명하도록 만들겠습니다.’
누구의 서명인가.
나는 가장 먼저 선영에게 내용을 전달했다. 사건을 누가 소설처럼 만들든, 우리가 할 일은 실제 사람을 지키는 것이었다. 기록은 아직 끝나지 않았다.
제128화 댓글 0
댓글·공감·신고는 로그인 후 이용할 수 있습니다. 이전 익명 댓글은 그대로 표시됩니다.
댓글을 불러오는 중입니다.