1. 개요

- FBI, CISA는 Androxgh0st 악성코드와 관련된 보안권고 발표 [1]

알려진 여러 취약점을 악용해 봇넷을 구성하여 Androxgh0st 유포

.env 파일에서 민감 정보를 추출해 유명 애플리케이션의 자격 증명 탈취 목적을 지닌 파이선 스크립트 멀웨어

> AWS, Microsoft Office 365, SendGrid, and Twilio
> .env: 환경 변수가 저장된 파일로, API key, port, DB 등 민감한 정보를 환경변수에 담아 관리 [2][3]

 

2. 주요 내용

2.1 Androxgh0st [4]

- 22.12 보안 업체 Lacework 최초 발견한 파이썬을 기반 멀웨어

Laravel 애플리케이션의 .env 파일에서 크리데셜이나 API 키 등 민감 데이터를 찾아내 추출하는 기능을 지님

- CreateUser(사용자 생성), CreateLoginProfile(로그인 프로필 생성), AttachUserPolicy(권한 부여), DeleteAccessKey(키 삭제) 등의 기능

※ Laravel: 오픈 소스 PHP 웹 프레임워크 중 하나

 

2.2 악용 취약점

2.2.1 PHPUnit 취약점 (CVE-2017-9841)

- eval-stdin.php 페이지 내 제대로 된 인증이 존재하지 않아 임의의 PHP 코드를 실행할 수 있는 취약점 [5][6]

- 취약점을 악용해 POST 요청으로 Androxgh0st를 다운로드하며, 추가 악성파일 다운 및 DB 접근

 

2.2.2 Laravel 프레임워크 취약점 (CVE-2018-15133)

신뢰할 수 없는 X-XSRF-TOKEN 값을 역직렬화하여 원격 코드 실행이 가능한 취약점 [7][8]

- 취약점을 악용해 .env 파일이 외부에 노출된 서비스에 GET 요청을 통해 애플리케이션 키 획득

Androxgh0st를 애플리케이션 키로 암호화하여 웹 사이트에 업로드

 

2.2.3 Apache 웹 서버 취약점 (CVE-2021-41773)

경로 순회 문자(../)의 미흡한 필터링으로인해 발생하는 경로 탐색 및 원격 코드 실행 취약점 [9][10]

- 취약점을 악용해 Apache 웹 서버의 자격증명을 획득하여 민감 데이터 접근 또는 추가 악성 행위 수행

 

3. 대응방안

- 관련 취약점이 해결된 버전으로 업데이트 수행
- 불필요한 서비스의 노출 유무 확인
- 불분명한 파일 및 자격 증명 파일 존재 여부 검토
- 취약점 스캔시 androxgh0st 등 시그니처가 존재하므로 관련 시그니처 탐지 정책 적용

FBI, CISA 권장사항 ① 시스템 최신 상태 유지
② 운영 체제, 소프트웨어, 펌웨어 정기적 업데이트
> 아파치 서버가 2.4.49 또는 2.4.50 버전을 실행하고 있지 않은지 확인
③ 모든 URI에 대한 기본 구성이 모든 요청을 거부하도록 되어 있는지 확인
> 명시적으로 필요한 경우 제외
④ 라이브 Laravel 애플리케이션이 '디버그' 또는 테스트 모드에 있지 않은지 확인
⑤ .env 파일에서 클라우드 자격 증명 제거 및 해지
⑥ 저장된 클라우드 자격 증명을 정기적으로 검토
> 무단 액세스 또는 사용이 있는지 확인
⑦ 서버의 파일 시스템, 특히 중요한 디렉터리에서 불분명한 PHP 파일이 있는지 확인
⑧ GitHub나 pastebin 등의 파일 호스팅 사이트에 대한 cURL 명령으로 GET 요청 확인
> 특히 .php 파일에 대한 접근을 확인

 

4. 참고

[1] https://www.cisa.gov/news-events/cybersecurity-advisories/aa24-016a

[2] https://velog.io/@hoho_0815/env-%ED%8C%8C%EC%9D%BC%EC%97%90-%EB%8C%80%ED%95%98%EC%97%AC
[3] https://tooo1.tistory.com/582
[4] https://www.lacework.com/blog/androxghost-the-python-malware-exploiting-your-aws-keys/
[5] https://nvd.nist.gov/vuln/detail/CVE-2017-9841
[6] https://github.com/vulhub/vulhub/tree/master/phpunit/CVE-2017-9841
[7] https://nvd.nist.gov/vuln/detail/cve-2018-15133
[8] https://github.com/kozmic/laravel-poc-CVE-2018-15133
[9] https://nvd.nist.gov/vuln/detail/CVE-2021-41773
[10] https://github.com/lorddemon/CVE-2021-41773-PoC
[11] https://www.boannews.com/media/view.asp?idx=125876&page=2&kind=1
[12] https://www.dailysecu.com/news/articleView.html?idxno=152936
[13] https://www.techtube.co.kr/news/articleView.html?idxno=4216

1. PHPUnit이란?

- PHP 프로그래밍 언어를 위한 유닛 테스트 프레임워크
- SUnit과 함께 기원한 유닛 테스트 프레임워크를 위한 XUnit 아키텍처의 인스턴스이며 JUnit과 함께 대중화
- PHPUnit은 Sebastian Bergmann이 개발하였으며 개발 자체는 깃허브에서 호스팅되고 있음

 

2. CVE-2017-9841

[캡쳐 1] https://nvd.nist.gov/vuln/detail/CVE-2017-9841 번역

- 해당 취약점은 /vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php에 대한 적절한 인증과정이 없어 발생되는 취약점

 

3. 취약점 분석

- 4.8.28 이전의 버전 및 5.6.3 이전의 5.x PHPUnit에 공격이 가능하다.
- eval-stdin.php에 해당 코드에 의해 취약점이 발생한 것으로 판단된다. php://input 함수를 이용해 원시 데이터를 읽은 후 eval 함수로 해당 명령을 실행하기 때문이다.

[캡쳐 2] 취약점 유발 코드
[캡처 3] 취약점 테스트

- 공격자들은 [캡쳐 3]의 php 코드를 통하여 먼저 취약점이 존재하는지 테스트 후 [캡쳐 4] 방식 등으로 공격을 진행.

[캡쳐 4] RawData

4. 대응방안

1. 최신 버전의 패치를 적용.

[캡쳐 5] 취약점이 패치된 버전의 소스코드

2. 보안 장비에 해당 패턴을 등록하여 탐지 및 차단
( ex) /vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php 경로로 요청을 탐지 및 차단 할 수 있도록 룰 설정)
3. .htaccess 파일을 /vendor 폴더에 위치 시킨 후 관련 설정을 등록.
* .htacccess 파일이란 "hypertext access"의 약자로 디렉토리에 대한 접근 허용 여부 등 설정 옵션을 제공한다.

<참고>

 

bWAPP PHP Code Injection

- 해당 페이지는 message를 클릭하면 test가 출력된다. - URL 확인 시 message 파라미터의 값을 출력하는 형식이며, 이를 통해 GET 메소드를 이용한 방식이란 것을 알 수 있다. - message 파라미터의 값을 다

ggonmerr.tistory.com

+ Recent posts