코로나로 인해 사용자 증가.. “VPN”이 해킹되다
펄스시큐어는 다양한 네트워크 보안 솔루션을 제공하는 전문 업체입니다. 그 중 Pulse Connect Secure 소프트웨어는 SSL VPN을 제공합니다. 현재 신종 코로나 바이러스로 인해 많은 기업에서 재택 근무를 시행하고 있는데요. 때문에 원격에서 사내망에 접속해 업무를 할 수 있는 VPN은 새롭게 주목받고 있습니다. 심지어 일부 VPN 제공 업체에서는 평균 일간 사용자가 165% 가량이 증가했다고 합니다. [1]
그런데 지난 8월 말 한 트위터에(@cyber_advising) CVE-2020-8218 : Pulse Secure SSL-VPN post-auth RCE 라는 제목의 글이 올라왔습니다. [2] 이미 이전에도 국내에서 해당 제품의 취약점이 제보된 바 있습니다. [3]
그렇다면 어떤 식으로 접근해 해킹했는지, 해당 공격의 영향도가 어느 정도인지에 대해 알아보도록 하겠습니다.
요약 정리
- 신종 코로나 바이러스로 인해 많은 기업에서 재택 근무를 시행함으로써 VPN의 중요성이 대두되고 있음
- 펄스시큐어 사에서 제공하는 VPN 서비스에서 취약점이 발견됨
해커는 어떻게 해킹할 수 있었을까요?
해커는 관리자 권한으로 인증된 사용자만 접근할 수 있는 관리자 페이지 내에서 임의의 명령어를 주입해 실행할 수 있는 Command Injection 취약점을 발견했다고 합니다.[4] Command Injection은 소프트웨어의 메모리 영향을 받지 않는 취약점이기 때문에 공격 성공률이 높고 다른 취약점에 비해 공격 비용이 비싸지 않아 매우 좋은 취약점입니다.
그러나 해당 취약점의 경우 관리자 페이지 내에서 발생하는 취약점이기 때문에 관리자 권한으로 인증이 수행돼야 한다는 전제를 만족해야 한다고 합니다. 그렇다고 취약점이 저평가되는 것은 아닙니다. 만약 관리자가 악의적인 코드가 삽입된 링크를 의심없이 클릭한다면 관리자 페이지에 접근할 수 있어 원격에서 명령어가 실행될 수 있기 때문에 충분히 위험할 수 있습니다.
그렇다면 어떻게 취약점에 도달할 수 있었을까요?
관리자 페이지 기능 중 downloadlicense.cgi 파일은 다음과 같이 Perl 스크립트로 작성되었습니다.
my $cmd;
if (DSLicense::isVLSImage() || DSLicense::isLicsFromPcls() || DSLicense::isEnabled($DSLicense::FT_mssp_core)) {
$cmd = $ENV{'DSINSTALL'} . "/bin/dslicdownload -i -e /tmp/.download_err -o /dev/NULL -a $authCode";
// ...
}
// ...
my $ret = system($cmd);
위의 코드를 확인해보면 파라미터로 전달되는 authcode를 $cmd 변수에 삽입해 system 함수로 전달하면서 Command Injection이 발생하는 것을 확인할 수 있었습니다.
취약점에 도달하기 위한 단계는 다음과 같습니다.
-
관리자 권한을 가진 공격자가 악의적인 코드가 삽입된 URL로 접근합니다.
https://x.x.x.x/dana-admin/license/downloadlicenses.cgi?cmd=download&txtVLSAuthCode=whatever -n '($x="ls /",system$x); #' -e /data/runtime/tmp/tt/setcookie.thtml.ttc
-
URL 파라미터에 존재하는 tctVLSAuthCode를 $cmd 변수에 추가합니다.
-
/dana-na/auth/setcookie.cgi 내부에서 $cmd를 실행합니다.
위와 같은 단계를 거치면 다음과 같이 명령어 실행 결과를 확인할 수 있습니다.
요약 정리
-
관리자 페이지 내에서 공격 비용이 비싸지 않은 Command Injection 취약점이 발견됨
-
취약점에 도달하기 위해서는 관리자 권한이 필요하지만, 관리자가 공격 코드가 삽입된 링크를 클릭하게끔 유도할 수 있음
-
임의의 명령어를 실행하고 결과를 획득할 수 있음
공격의 영향력은 어느 정도인가요?
앞서 언급했다시피 재택 근무가 시행됨에 따라 펄스시큐어 사의 VPN 사용자 역시 늘어났을 것으로 예상됩니다. 해당 VPN 서비스를 사용하는 모든 기업은 단 한번의 클릭으로 서버에 백도어가 설치될 수 있습니다. 또한 업데이트 파일을 백도어로 변경해 기업에서 VPN을 업데이트 할 시 정상적인 클라이언트를 위장한 백도어가 설치될 수 있습니다. VPN은 프라이버시를 보호하기 위해 사용할 수 있는 서비스이며, 이를 침해할 수 있는 것은 VPN의 존재 이유를 상쇄시키는 것이 될 수 있습니다.
다만 관리자로부터 특정 행위를 유도해야하기 때문에 공격이 성공할 확률은 크지 않습니다. 그러나 사용자가 증가함에 따라 관리자의 실수로 인해 해킹이 성공한다면 피해 규모는 매우 커질 수 있습니다.
공개한 취약점은 9.1R7 이하의 버전에서 발생하며, 9.1R8 버전에서 패치가 되었다고 합니다. 이는 패치된 취약점 정보만을 공개했고, 아직 패치되지 않은 취약점들 또한 존재해 자세한 내용은 패치 후 혹은 패치 후 90일 이후에 공개할 예정이라고 합니다.
결론
최근 신종 코로나 바이러스로 인해 재택 근무가 시행됨에 따라 모든 VPN 서비스는 사용자가 증가했을 것으로 보입니다. 이로 인해 해커들의 공격 시도 또한 늘어났을 것입니다. 이를 개선하기 위해 자체적으로 보안 진단 등으로 소프트웨어 보안에 노력을 기울이고 있지만, 아직 취약점이 지속해서 제보되고 있어 긴장의 끈을 놓을 수 없어 보입니다. 사용자가 증가함에 따라 해당 서비스는 성능보다는 보안을 우선시해야 하는 대상으로 보여집니다.