취약점 PoC, 공개해야 하나 말아야 하나
- 파일 전송 솔루션 윙FTP서버에서 10점짜리 취약점 발견됨
- 이 취약점 익스플로잇 하면 원격에서 서버 통째로 장악 가능
- 잠잠했다가 PoC 공개된 이후부터 익스플로잇 시도 극성
파일 전송 기술인 윙FTP서버(Wing FTP Server)에서 초고위험도 취약점이 발견됐다. CVE-2025-47812로, CVSS 기준 10점 만점에 10점을 받았다. 익스플로잇에 성공할 경우 공격자는 루트 및 시스템 권한을 가지고 원격에서 임의 코드를 실행시킬 수 있게 된다.
마이터(MITRE)는 이 취약점과 관련된 권고문을 통해 “널 바이트를 제대로 처리하지 못하는 문제로 인해 야기되는 현상”이며, “FTP 서버 7.4.4 이전 버전에서 발견되고 있다”고 알렸다. “사용자와 관리자 웹 인터페이스에서 특정 바이트가 잘못 처리되면서 임의 루아 코드 삽입을 허용하게 됩니다. 서버 전체를 공격자가 장악하는 것도 가능하게 됩니다. 무명 FTP 계정들로도 실행 가능한 공격입니다.”
이런 현상이 발생하는 이유는 세션모듈(SessionModule)이라는 루아 스크립트 때문이다. 이 스크립트가 로딩 및 실행되는 과정에서 제대로 된 인증 절차를 거치지 않는다. 따라서 공격자가 세션 파일을 조작해도 인증 절차 없이 로딩 및 실행되고, 어떻게 조작했느냐에 따라 코드 실행 공격으로까지 이어질 수 있게 되는 것이다. 그러면서 서버 내 파일 목록을 가져가는 등 여러 가지 악성 행위를 할 수 있게 된다.
“그런데다가 이 세션모듈을 실행시킬 때 윙FTP서버 측에서는 가장 높은 권한을 부여합니다. 리눅스에서는 루트 권한을, 윈도에서는 시스템 권한을 주지요. 윙FTP서버라는 기술 자체가 높은 권한으로 실행되게끔 설계되어 있고, 샌드박싱이나 제일링과 같은 권한 관련 기능들도 따로 가지지 않습니다. 이런 특징들이 결합돼 큰 문제가 발생하는 겁니다.” 마이터의 설명이다.
역시나, PoC 공개 후에 더 극성
보안 연구원들이 이 취약점에 대해 발표한 건 6월 30일의 일이다. 그 전에도 알려져 있었으나, 기술 세부 내용이 공개되지는 않았었다. 윙FTP서버에 대한 익스플로잇 시도가 급증한 건 6월 30일, 즉 기술 세부 내용 공개 직후부터다. 거의 모든 취약점들이 기술 세부 내용 공개 이후 익스플로잇 시도 급증이라는 홍역을 겪는다. 그렇기 때문에 취약점을 공개할 때 어느 정도 수위를 유지할 것인지가 중요하다.
이 취약점은 여러 가지 면에서 공격자들의 구미를 당길 수밖에 없었다. 파일 전송 기술인 FTP 서버에서 발견된 것이고, 인증 과정과 관련된 것이라 높은 권한이 공격자에게 부여된다는 것이 그 이유다. 많은 정보에 높은 권한을 가지고 접근할 수 있다는 뜻이 된다. 이 공격을 성공시킬 때 공격자에게 필요한 건 기본적인 사용자 접근 권한 뿐이기도 한데, 이는 준비물이 거의 필요치 않다는 뜻이다. 공격자들이 좋아할 만한 또 다른 요소가 된다.
윙FTP서버는 안전하고 유연한 파일 전송 솔루션으로 알려져 있으며, FTP, FTPS, SFTP, HTTPS/S 등 다양한 프로토콜들을 지원한다. 또한 윈도, 리눅스, 맥OS 등 여러 환경들에서 작동하며, 웹에도 친화적이다. 사용하기도 쉽다. 따라서 꽤 많은 팬층을 거느리고 있는데, 이 역시 공격자들이 선호하는 것이다.
보안 업체 헌트레스(Huntress)는 7월 1일부터 CVE-225-47812가 활발히 익스플로잇 되기 시작했다고 알리며 다시 한 번 취약점 세부 내용을 7월 10일 발표했다. 처음(6월 30일) 세부 내용을 세상에 공개한 건 또 다른 보안 업체 아크틱울프(Arctic Wolf)였다. 당시 아크틱울프 측은 개념 증명용 코드(PoC)도 같이 발표했는데, 이것이 결과적으로 해커들을 더 부추긴 것으로 보인다.
윙FTP서버 사용자들이라면 7.4.4 및 그 이후 버전으로 업데이트 해야 안전하다.
PoC, 공개할 수도 없고 안 할 수도 없고
개념 증명용 익스플로잇 코드는 취약점을 패치하고, 공격 시나리오를 예상해 방어 체계를 마련하는 데 있어 중요한 역할을 담당한다. 이 코드가 있어야 보안 담당자들은 실제 공격이 어떤 식으로 들어올지 최대한 실질적으로 예상할 수 있게 된다. 개념 증명용 코드가 없어도 대비를 할 수는 있으나 ‘핀포인트’를 짚는 게 어려워진다. 모든 취약점을 방어하는 데 개념 증명 코드가 필요한 건 아니나, 개념 증명 코드가 있을 때 큰 도움이 되는 경우들이 존재한다.
하지만 개념 증명용 코드는 실제 해커들이 공격에 사용하는 공격 코드와 흡사하다. 종이 한 장 차이 정도 날 뿐이다. 실제 공격이 이뤄지는 데 꼭 필요한 부분들을 빼놓고, 대략적인 골격만 남겨두긴 하지만, 일단 골격이 마련되어 있으니 살을 덧붙이는 건 해커들에게 있어 어려운 일이 아니다. 결국 개념 증명용 코드가 공개된다는 건 실제 해킹 공격 기법에 대한 중대한 힌트를 제공한다는 거나 다름 없다.
이 때문에 개념 증명 코드 공개를 보안 전문가들은 최대한 뒤로 늦춘다. 취약점 패치가 충분히 적용될 시간을 준 후에야 이를 공개하는데, 통상 90일 정도다. 하지만 모든 보안 전문가나 업체들이 이를 지키는 건 아니다. 게다가 90일 이후 취약점 대부분이 패치되는 것도 아니다. 이 때문에 개념 증명용 코드 공개일을 훨씬 더 연기해야 한다는 주장도 나오고 있지만 아직까지 보편적으로 받아들여지지는 않고 있다.
이와 관련, 취약점 정보를 널리 알리지 않고 국가에서 구매해 관리해야 한다는 주장도 오래 전부터 나왔는데, 아직은 일부의 의견일 뿐이다.
사용자들의 실제 패치 주기를 앞당기는 게 현재로서는 가장 바람직한 것으로 간주되고 있다. 하지만 패치를 귀찮아 하는 사용자들을 움직일 방법을 아직 보안 업계는 찾지 못하고 있다.