[인터뷰] "패치는 끝이 아니라 시작…만들고 잊은 서버가 가장 위험하다"

입력 2026-10-23 10:25:45
구글 검색 선호 출처로 추가
로봇
mWiz 이 기사 포인트

PHP2셸 사태, 서버 현장에서 본 옥영훈 매일신문 플랫폼팀장

옥영훈 매일신문 플랫폼팀장이 사무실에서 서버 상태를 점검하고 있다. 옥 팀장은 PHP2셸 사태와 관련해
옥영훈 매일신문 플랫폼팀장이 사무실에서 서버 상태를 점검하고 있다. 옥 팀장은 PHP2셸 사태와 관련해 "패치는 끝이 아니라 시작"이라며 패치 이후에도 침해 흔적 점검을 반드시 해야 한다고 강조했다. 박효상 기자.

전 세계 웹사이트의 70% 이상이 쓰는 프로그래밍 언어 PHP에서 로그인 없이 서버를 장악할 수 있는 치명적 취약점 'PHP2셸'이 드러나면서 국내외가 해킹 비상에 걸렸다. 유럽 각국 정부는 공식 사이트를 내렸고, 우리 정부는 22일 민간 분야 사이버위기 경보를 '주의'로 끌어올렸다. 패치 공개 직후 밤새 서버 앞을 지킨 옥영훈 매일신문 플랫폼팀장을 만나 이번 사태의 실체와 대응법을 물었다.

― PHP가 뭔지 모르는 독자도 많다. 쉽게 설명해 달라.

"홈페이지를 식당에 비유하면 손님이 보는 메뉴판과 인테리어가 화면이고, PHP는 주방이다. 손님이 '게시글 보여줘', '결제해줘' 하고 주문하면 주방에서 데이터베이스라는 냉장고를 열어 재료를 꺼내고 요리를 만들어 내보낸다. 관공서, 학교, 언론사, 쇼핑몰, 동네 동호회 게시판까지 우리가 매일 드나드는 사이트 상당수가 이 주방 위에서 돌아간다."

― 이번 취약점은 얼마나 심각한가.

"현장에서 느끼기엔 최근 몇 년 사이 가장 심각한 수준이다. 보통 해킹은 관리자 비밀번호를 훔치거나 홈페이지 프로그램의 허점을 파고드는데, 이번엔 아이디도 비밀번호도 필요 없다. 조작된 요청 한 번으로 서버에서 원하는 명령을 실행할 수 있다. 식당으로 치면 손님인 척 주문서 한 장 넣었는데 주방 열쇠를 통째로 넘겨받는 셈이다. 위험도 점수가 10점 만점에 9.2점이 나온 이유다."

― 홈페이지를 잘 만들었으면 괜찮은 것 아닌가.

"그게 이번 사태의 핵심이다. 홈페이지 프로그램을 아무리 꼼꼼하게 짰어도 그 밑에 깔린 PHP 자체에 구멍이 있으니 운영자 입장에선 피할 방법이 없다. 집 문단속을 아무리 잘해도 건물 기초에 금이 가 있으면 소용없는 것과 같다."

― 원리를 조금 더 설명해 달라.

"두 가지 결함 모두 서버가 메모리를 다루는 과정에서 생겼다. 하나는 메모리가 부족해 처리가 중간에 끊겼을 때 미완성 데이터를 정상 데이터처럼 받아들이는 문제고, 다른 하나는 이미 치운 메모리 공간을 다음 요청에서 다시 쓰는 문제다. 정리했다고 생각한 서랍을 누군가 다시 열어 자기 물건을 넣어두는 것이라고 보면 된다. 공격자는 그 틈에 악성 코드를 심는다."

기사의 이해를 돕기 위한 AI 생성 이미지.
기사의 이해를 돕기 위한 AI 생성 이미지.

― 10년 넘게 아무도 몰랐다는데, 이번엔 AI가 찾아냈다.

"이번 사태가 상징적인 이유다. 결함이 숨어 있던 구조가 워낙 복잡해 사람이 수작업으로 찾기는 사실상 불가능에 가까웠다고 한다. 그런데 AI가 코드를 깊이 파고들면서 드러났다. 문제는 AI는 방어하는 쪽만 쓰는 도구가 아니라는 점이다. 실제로 이번에 돌고 있는 공격 도구 중에도 AI로 만든 것이 있는 것으로 알려졌다. 예전엔 패치가 나오고 공격 코드가 만들어지기까지 며칠은 걸렸는데, 이제는 그 시간이 몇 시간, 몇십 분으로 줄었다."

― 패치 공개 과정에서 정보가 미리 새기도 했다.

"원래 이런 치명적 취약점은 개발진과 관련 기관이 날짜를 맞춰 한꺼번에 공개한다. 그래야 공격자가 끼어들 틈이 줄어든다. 그런데 이번엔 공개 전에 정보가 온라인에 흘러나왔고, 한 배포업체가 공식 시각보다 6시간 이상 먼저 패치를 내놨다. 공격자들은 패치 전후 코드를 비교해 구멍 위치를 역추적한다. 결과적으로 공격자에게 6시간짜리 예습 시간을 준 꼴이 됐다."

― 패치가 공개된 21일 밤, 현장 분위기는 어땠나.

"한국시간으로 밤 11시쯤 패치 공개 공지가 떴다. 그 전부터 취약점 소식이 돌고 있어서 팀원들과 비상 대기 중이었는데, 공지를 보자마자 바로 작업에 들어갔다. 가장 먼저 한 일은 우리가 운영하는 서버 가운데 PHP가 돌아가는 곳이 어디인지, 버전은 몇인지 다시 확인하는 것이었다. 외부에서 접속할 수 있는 서버부터 순서를 정해 업데이트하고, 하나씩 웹 서비스를 재시작한 뒤 새 버전이 실제로 올라왔는지 확인했다. 패치를 마친 뒤에는 최근 접속 기록과 업로드 폴더를 훑으며 이상한 흔적이 없는지 살폈다. 그렇게 새벽까지 이어졌다. 국내 기업 보안팀 상당수가 그날 밤 비상 근무에 들어간 것으로 안다. 이번만큼은 '내일 아침에 하자'가 통하지 않는 상황이었다."

― 현장에서 가장 흔한 실수는 뭔가.

"업데이트만 하고 웹 서비스를 재시작하지 않는 것이다. 새 버전을 설치해도 재시작을 안 하면 메모리에는 예전 버전이 그대로 돌아간다. 패치를 안 한 것과 다를 게 없다. 그리고 두 번째가 '우리 회사 PHP 서버 목록'을 믿는 것이다. 문서상 목록과 실제로 돌고 있는 서버가 다른 경우가 많다."

― 목록에 없는 서버가 그렇게 많나.

"생각보다 많다. 몇 년 전 이벤트용으로 만들고 잊어버린 사이트, 외주 업체가 만들어 놓고 관리가 끊긴 쇼핑몰, 테스트용으로 띄워놓은 서버, 장비에 딸려 들어온 관리자 화면 같은 것들이다. 공격자는 회사가 관리하는 서버보다 회사가 잊어버린 서버를 노린다. 이번 기회에 실제로 돌아가는 서버를 기준으로 전수 조사를 해야 한다."

― 구버전을 쓰는 곳은 어떻게 해야 하나.

"공식 패치는 PHP 8.2 이상에만 나왔다. 8.1 이하는 이미 지원이 끝난 버전이라 공식 업데이트가 없다. 최소한의 수정 코드가 공개되긴 했지만 직접 빌드할 수 있는 전문 인력용이다. 결국 상위 버전으로 이사하는 게 답이다. 우리나라는 그누보드 같은 게시판이나 오래된 쇼핑몰 솔루션 때문에 PHP 5, 7 버전에 머물러 있는 사이트가 특히 많아 걱정이다. 버전을 올리면 기존 프로그램이 안 돌아갈 수 있어 미뤄왔던 곳들인데, 이번엔 더 미룰 수 없다."

― 당장 업데이트가 불가능하면.

"임시로 설정을 바꿔 공격 경로를 일부 막는 방법이 안내돼 있다. 메모리 관련 설정을 조정하거나 파일 업로드 진행률 기능을 끄는 식이다. 웹방화벽에서 요청 크기를 제한하거나 업로드가 필요 없는 서비스는 업로드 요청 자체를 막는 것도 방법이다. 다만 이건 응급처치일 뿐 치료가 아니다. 그것도 어렵다면 외부 접속을 잠시 끊는 게 낫다. 미국과 유럽 기관들이 '업데이트 못 하면 사이트를 내려라'고 한 게 과장이 아니다."

― 패치를 끝낸 곳은 이제 안심해도 되나.

"아니다. 패치는 앞으로 들어올 도둑을 막는 것이지, 이미 들어와 있는 도둑을 내보내 주지 않는다. 공식 발표 며칠 전부터 공격 시도가 포착됐다는 보고도 있다. 최근 새로 생기거나 수정된 PHP 파일이 없는지, 특히 파일 업로드 폴더에 낯선 파일이 없는지 반드시 확인해야 한다. 접속 기록도 패치 이전까지 거슬러 올라가 살펴봐야 한다."

― 침해가 의심되면 어떻게 하나.

"가장 먼저 하고 싶은 게 서버를 끄는 건데, 그러면 안 된다. 재시작하면 메모리에 남아 있던 공격 흔적이 사라진다. 외부 접속만 먼저 끊고, 한국인터넷진흥원(KISA) 보호나라에 신고한 뒤 로그와 실행 중인 프로그램, 네트워크 연결 정보 같은 증거를 확보해야 한다. 그다음에 업데이트, 웹셸 제거, 비밀번호 교체 순으로 가면 된다."

― 보안 인력이 없는 소상공인이나 중소기업은.

"호스팅 업체를 쓰고 있다면 업체에 전화 한 통 하는 게 가장 빠르다. '우리 사이트 PHP 업데이트 됐느냐'고 물어보면 된다. 외주로 만든 사이트라면 제작 업체에 연락해야 한다. 내 홈페이지가 무슨 언어로 만들어졌는지 몰라도 괜찮다. 확인할 사람에게 확인만 하면 된다. 정부도 중소기업 지원 방안을 검토 중이라고 하니 관련 공지를 챙겨보길 권한다."

― 이번 사태가 서버 관리 방식에 남긴 교훈은.

"두 가지다. 하나는 속도다. 과기정통부 장관도 '점검하고 며칠 안에 패치하는' 기존 방식으로는 못 막는다고 했는데, 현장에서도 똑같이 느낀다. 패치 공개와 동시에 공격이 시작되는 시대가 됐다. 다른 하나는 '내가 무엇을 운영하는지 아는 것'이다. 모르는 서버는 지킬 수 없다. 평소에 서버 목록과 버전을 최신 상태로 관리하는 게 가장 기본이면서 가장 강력한 보안이다."

― 마지막으로 독자들에게 한마디.

"전 세계가 공짜로 쓰는 PHP를 사실 소수의 개발자와 자원봉사자들이 지켜왔다. 이번 사태는 그 구조가 얼마나 위태로운지 보여줬다. 당장은 각자 자기 서버부터 챙기는 게 급하지만, 길게 보면 우리가 매일 기대는 디지털 인프라를 누가, 어떻게 지킬지 함께 고민해야 할 때다."