컨텐츠 바로가기

03.29 (금)

[취재파일] "이게 된다고?"…대학생에게 뚫린 'K-백신 앱' ②

댓글 첫 댓글을 작성해보세요
주소복사가 완료되었습니다

② 허술한 업데이트…정부에게 '보안'은 멀고도 험한 길인가?

SBS

<이미지를 클릭하시면 크게 보실 수 있습니다>


"여전히 변조가 가능합니다."


메신저에 뜬 바로 위 내용에 숨을 크게 들이마실 수밖에 없었습니다.
고작 하루, 아니 반나절도 채 지나지 않았을 때였습니다.

앱에 허점이 있다는 보도가 나간 뒤 정부는 바로 조치하겠다며 자신감을 보였습니다. '업데이트 완료 즉시, 전자예방접종증명서 앱에서는 질병관리청이 발급한 증명서 외에는 인증되지 않게 됩니다.' 정부가 직접 밝힌 입장이었습니다.

그 자신감이 허술한 보안체계처럼 또다시 아주 쉽게 무너져 내린 겁니다.

정부는 증명서 '위·변조'를 원천적으로 막을 수 있다고 설명해왔습니다.

'위조'는 그럴듯하게 진짜와 비슷하게 만드는 걸 뜻합니다. 없던 걸 가짜로 새로 만드는 거죠. '변조'는 진짜 서류에서 내용을 바꾸는 조작입니다.

여기서 잠깐, 이 개념을 한 번 더 짚고 넘어가겠습니다. 서류를 발급하기 위해서 동 주민센터 한 번쯤은 다들 가보셨을 겁니다. '주민등록등본', '가족관계증명서' 같은 정부 증명 서류도 발급해보셨을 거라 생각합니다.

SBS

<이미지를 클릭하시면 크게 보실 수 있습니다>


이 문서에서 가장 중요한 정보 두 가지는 무엇일까요?

바로 2개의 이름입니다. 첫 번째는 누구한테 발급했는지. 제가 이 문서를 받았다고 하면 '김덕현'이 되겠죠. 두 번째는 누가 발급해줬는지. 저희 SBS 본사가 있는 곳을 기준으로 하면 '서울특별시 양천구청장'이 됩니다. 둘 중에 하나라도 신뢰할 수 없다면, 다시 말해 조작이 가해진다면 이 문서는 당연히 효력을 잃게 됩니다. '이 내용은 사실입니다'를 인증해주는 정부 도장을 찍을 수 없다는 거죠.

지난 일요일 첫 보도에서 지적했던 주요 내용은 '위조'였습니다. 위 문서를 예로 들자면 '서울특별시 양천구청장'이 아니라 발급 주체가 누구든 간에 정부가 도장을 쾅하고 찍어줘 버린 겁니다.

자, 이 허점은 보도가 나간 뒤 정부가 급히 고칩니다. '발급 주체'를 확인하는 검증 과정을 추가한 거죠.

하지만 안타깝게도 '변조'는 여전히 가능하다는 건 눈치 채지 못했던 것 같습니다. '서울특별시 양천구청장'이 발급했다는 것만 확인하고 나면 그냥 정부 도장을 찍어준 겁니다. 이름이나 생년월일을 제가 마음대로 바꿔도 말입니다.
▶ [단독] 업데이트 했다는데도…여전히 '변조' 취약

SBS

<이미지를 클릭하시면 크게 보실 수 있습니다>


저는 동물을 사랑하는 사람입니다. 지나가다 우연히 만난 길고양이도, 얼마 전 봤던 친구네 강아지도 코로나19로 아프지 않았으면 하는 마음에 백신을 맞았다고 증명해줄 수 있었습니다. 정부가 개발한 이 'COOV' 앱을 통해서 가능했습니다. 황당하게도 말이죠.

어린이날부터 '접종 완료자', 즉 2차까지 백신을 모두 맞고 2주가 지난 사람들은 '격리 면제' 대상이 됐습니다. 해외에서 입국할 때, 확진자와 밀접 접촉했을 때 PCR 검사 결과 음성이 나오고 증상이 없으면 격리를 하지 않아도 됩니다.

앞으로 '접종 완료자'를 대상으로 한 이런 제도들은 더 늘어나게 될 겁니다. 코로나19 이전의 삶으로 조금씩 돌아가게 되는 거죠.

그렇게 되면 '접종 완료자'들의 혜택을 탐내는 사람들도 생기게 될 겁니다. 하지만 아직 백신을 못 맞았는데 어떻게 할까요? 물밑 거래에 눈을 돌리는 사람들이 나올지 모릅니다. 정식 증명서에서 이름과 생년월일만 바꿔도 인증된다면 말입니다.

최악의 경우 '지난달 화이자 백신 맞은 증명서 10만 원에 팔게요', 이런 말도 안 되는 문구가 현실이 되는 끔찍한 상황이 생길 수도 있었던 겁니다.

SBS

<이미지를 클릭하시면 크게 보실 수 있습니다>


"보여주신 건 PC인데, 앱으로 조작하는 사례는 없었거든요?"


'COOV' 앱을 개발하고 운영하는 주무부처인 질병관리청의 한 관계자가 제게 한 이야깁니다. 앱에 허점이 있다고 알려주는 통화였습니다.

"PC에서 구현이 된 것일 뿐, 여기서 조금 더 노력을 기울이면 PC 아니더라도 충분히 가능하잖아요?" 이렇게 되물었더니 돌아온 건 긴 침묵이었습니다.

위에서 언급한 그런 최악의 상황이 생기지 않았으면 했습니다. 그런 마음에 첫째 날에도, 둘째 날에도 문제가 실제로 있을 수 있는 건지 검증한 뒤 최대한 빨리 정부에 연락했습니다. 기사가 나가는 건 둘째 치고, 일단 내용을 전달해서 오류를 먼저 수정할 필요가 있었기 때문입니다.

하지만 눈에 보이는 허점만 잡아낸 뒤 '문제없다'라고 말하는 허술하고 무능력한 모습, 앞서 설명드린 수동적이고 안일한 반응을 보면서 왜 앱 보안이 무너졌는지 알 것 같았습니다. '일 좀 했구나' 생각하며 신뢰를 보냈던 과거의 제가 부끄럽게 느껴졌습니다.

실망스러운 마음과 별개로, 어쨌든 두 번의 보도 이후 인증 과정에서의 허점은 해결됐습니다. 그런데 앱 문제점이 더는 없는 걸까요? 안타깝게도 그렇지 않습니다.

'변조'를 하기 위해선 정식 증명서가 있어야 했습니다. 진짜 문서에 있는 데이터를 가져와야 제 마음대로 내용을 바꿀 수 있기 때문입니다.

이 데이터는 어떻게 가져올 수 있었을까요?

취재파일 1편에서 증명 과정을 한 번 정리해드린 적이 있었는데요. 인증을 위해선 4단계, 즉 다른 사람의 휴대폰으로 제 QR코드를 읽는 마지막 과정이 필요합니다. 여기서 상대방 휴대폰으로 제 증명서 데이터가 넘어가게 됩니다. 상대방이 마음만 먹으면 정식 증명서 데이터를 이용할 수 있게 되는 거죠.
▶ [취재파일] "이게 된다고?"…대학생에게 뚫린 'K-백신 앱'

SBS

<이미지를 클릭하시면 크게 보실 수 있습니다>


심지어 직접 상대방 QR코드를 읽지 않더라도 데이터를 가져올 수 있습니다. 비밀번호가 없는 공용 와이파이처럼 보안에 취약한 네트워크에 접속해 있는 경우, 누군가 4단계 과정을 거치고 있다면, 제3자가 네트워크를 통해 전달되는 데이터를 충분히 읽을 수 있는 겁니다.

이게 가능한 이유는 바로 'QR코드'에 있습니다. 백신 접종 사실을 포함한 개인정보를 담고 있음에도 암호화돼 있지 않기 때문입니다. 엄청난 수준의 해킹을 하지 않아도 누구나 접근할 수 있는 겁니다.

앱이 돌아가는 방식은 무엇인지, 통신은 어떻게 이뤄지는지 알아내는 건 위·변조를 포함해서 앱을 공격하려고 할 때 큰 힌트가 됩니다.

SBS

<이미지를 클릭하시면 크게 보실 수 있습니다>


적어도 통신이 암호화되면 개개인이 어떻게 연결되는지, 어떤 데이터가 오고 가는지, 데이터 규격은 어떻게 되는지 숨길 수 있지만, 정부 앱은 여전히 취약한 상태인 겁니다.

'리버스 엔지니어링'이라는 개념이 있습니다. 마지막 결과물을 통해서 이 결과물을 만들어낸 처음 요소를 파악하는 과정을 일컫는 겁니다. 'COOV' 앱을 예로 들자면, QR코드라는 결과물로 이 증명서를 만들어낸 소스 코드를 알아내는 거죠.

보안에 특히 민감한 금융권에선 애초에 이런 '리버스 엔지니어링'을 막을 수 있도록 자체 앱에 솔루션을 탑재하고 있습니다. 공격 난이도가 훨씬 올라가는 겁니다.

당연히도 정부 앱은 이보다 훨씬 더 보안에 민감해야 합니다. 격리 면제조치가 시작되면서 우선 6만여 명의 '접종 완료자'들이 앱을 활용할 수 있게 됐고, 머지않아 5천만 전 국민이 이 앱을 자주 이용하게 될 겁니다. '고객' 숫자와 그들의 눈높이는 이루 비교할 수 없겠죠.

요 며칠간 되뇌었던 이 물음을 다시는 꺼내지 않아도 되길 바랍니다.
증명 앱을 위한, 특히 보안을 위한 정부의 노력은 어디를 향하고 있나요?

** 두 편의 기사와 두 편의 취재파일을 모두 마칩니다. 하지만 전자예방접종증명서에 대한 취재는 끝나지 않았습니다. 'COOV' 앱을 포함해 코로나19와 'K-방역'에 대한 제보는 언제든 환영합니다. (dk@sbs.co.kr / 카카오톡 sbs8news)

SBS

<이미지를 클릭하시면 크게 보실 수 있습니다>


김덕현 기자(dk@sbs.co.kr)

▶ [제보하기] LH 땅 투기 의혹 관련 제보
▶ SBS뉴스를 네이버에서 편하게 받아보세요

※ ⓒ SBS & SBS Digital News Lab. : 무단복제 및 재배포 금지
기사가 속한 카테고리는 언론사가 분류합니다.
언론사는 한 기사를 두 개 이상의 카테고리로 분류할 수 있습니다.