지난해 말 2020년도 수능 성적을 실제 성적표 공개보다 먼저 확인할 수 있는 방법이 공개된 적이 있다. 입시와 관련된 사안이었기에 그 충격은 컸다. 그런데 해킹이라고 볼 만한 사건도 아니었다. 서버에 2020년도 성적을 달라고 당당히 요구했고, 버젓이 전달되었다. 방법은 이미 있었고, 다만 ‘눈 가리고 아웅 하는’ 식으로 화면에서 2020이라는 선택지가 없었을 뿐이었다. 유출 방법을 발견한 학생이 한 일이라고는 기존 선택지 2019를 2020으로 바꾼 것뿐이었다. 메뉴판에 기재되어 있지 않은 신메뉴를 유추해서 주문했더니 서버가 정말 가져다주었다. 아니 유추라고 할 것도 없다 2019가 2020이 된 것뿐이니.
현실이라면 서빙하는 이가 “하하, 서두르시네요”라고 웃으면서 아직은 주문할 수 없다고 말해줬을 것이다. 웹의 서버는 이걸 못했다. 웹사이트를 포함한 모든 전산 시스템은 함수들의 집합이 모인 기계다. 인자값을 정해 호출하면 그에 맞는 답을 되돌려 준다. 웹이라는 시스템 자체도 웹주소라는 인자값을 호출하면 그에 맞는 HTML 페이지를 되돌려 주는 얼개에 불과하다. 다만 웹 자체가 하나의 기계가 된 시대이기에, 사람이 읽기 위한 HTML이라는 문서 위에 자바스크립트와 CSS라는 언어로 짜인 소프트웨어가 얹혀 배달된다. 이 세 가지 언어의 삼위일체가 웹페이지를 구성하는데, 이렇게 한번 열린 웹페이지는 다시 사용자와의 상호작용을 통해 여러 함수 호출을 재개한다.
사이트 로그온은 공인인증서까지 동원하며 번잡하게 되어 있어도 웹페이지를 전달하는 것까지만 분별하고, 그 웹페이지에서 별도로 벌어지는 함수 호출은 신경 쓰지 않거나 체크를 누락해 무사통과시키는 일이 종종 발생한다. 오로지 눈에 보이는 화면에 그 선택지가 없음에 안도하지만, 메뉴판에 없는 메뉴를 주문해 보려는 손님은 언제나 등장하게 마련이다.
그래도 시스템을 손댄 것이므로 악의적인 해킹이 아니냐고 되물을 수 있다. 하지만 워드 문서를 내려받아 수정하듯, 정당한 호출로 내 웹브라우저에 완전히 전달된 웹페이지를 고쳤다고 해킹이라 하긴 힘들다. 웹브라우저에서는 F12키 입력 한 번으로 마치 워드 프로세서를 열 듯 ‘개발자 도구’를 열 수 있다. 개발자 도구라고 하면 대단해 보이지만 이 명령의 원래 이름은 ‘Inspect’, 그러니까 열람이다. 내가 받은 문서를 열람하고 수정하는 것은 내 자유. 그저 호기심 많은 손님 탓을 할 수는 없다.
비슷한 사건은 계속 반복되고 있다. 코로나19 때문에 시행되고 있는 온라인 개학에서도 이 개발자 도구를 열어 약간만 조작하면 수업을 들은 것으로 하는 방법이 공유된 것. 이 정도야 애교다. 지난 4월 말 18만 명이 신청한 청년구직지원금 사이트에서는 무려 다른 신청인의 개인정보를 모두 호출할 수 있었다. 타인의 성명과 주민등록번호, 전화번호는 물론 그 부모의 신분증, 이혼 여부, 가족관계증명서까지도 다 보여줬다. 메뉴판에 없는 걸 정말 가져다줬다면 그 책임은 서버에게 있다.
이번에도 사후약방문식으로 고용노동부가 각종 대응반과 조사반을 구성한다고 했는데, 여전히 시스템 전반을 윗사람의 입장에서 바라보는 듯 당사자성이 안 보인다. 또 시스템 개발은 늘 외주와 하청으로 분리되니, 서둘러 일하게 된 서버에 업주의 책임감 역시 있을 리 없는 일이다.
<김국현 IT 칼럼니스트·에디토이 대표>