
F5 BIG-IP APM(기업 네트워크 접근을 통제하는 장비)을 침해한 악성코드가 PHP 웹 셸을 디스크가 아닌 메모리에 삽입해 일반적인 파일 검사를 우회하는 사실이 Sophos의 분석을 통해 확인됐습니다. 이 악성코드는 CVE-2025-53521(CVSS 9.8점, 인증 없이 원격 코드 실행 가능)을 악용하며, F5는 2026년 3월 이 취약점이 실제 공격에 사용됐다고 공식 확인했습니다. 공격자는 Apache 웹 서버 프로그램 자체를 변조해, PHP가 특정 스크립트를 메모리에 불러올 때 웹 셸을 끼워 넣기 때문에 디스크 파일을 검사해도 이상이 없어 보입니다. 패치는 2025년 10월에 이미 공개됐으나, 패치 이전에 침해된 장비는 업그레이드 후에도 악성코드가 남아 있을 수 있어 반드시 별도의 무결성 점검이 필요합니다. 공격 주체는 아직 특정되지 않았으며, 장비 업그레이드 이미지까지 감염시켜 다른 시스템으로 전파되도록 설계된 것으로 분석됐습니다.
F5 BIG-IP APM 장비를 대상으로 한 악성코드(F5 추적명 c05d5254 / ESET 명명 PoisonedRefresh)가 Apache 실행 파일(/usr/sbin/httpd)을 변조한 뒤, PHP 모듈이 메모리에 로드될 때 세 개의 APM webtop 스크립트에 웹 셸을 삽입한다. 웹 셸은 디스크에 최종 형태로 저장되지 않아 파일 기반 탐지를 우회한다.
인증 없이 원격 코드 실행이 가능한 CVE-2025-53521(CVSS 9.8)을 통한 침해가 확인됐으며, 영국 NCSC는 BIG-IP APM이 대형 조직에서 광범위하게 사용되는 구성 요소라고 밝혔다. 악성코드는 장비 업그레이드 이미지에도 감염돼 업그레이드 후에도 생존하도록 설계됐다.
BIG-IP APM 접근 정책이 가상 서버에 설정된 경우 CVE-2025-53521 취약점이 존재한다. 공격자는 이를 이용해 초기 침투 후 Apache 실행 파일과 설치 이미지를 변조하고 SELinux를 비활성화한다.
F5가 2025년 10월 공개한 각 버전별 수정 릴리즈를 적용한다. 패치 여부와 무관하게 sys-eicheck 무결성 검사 수행, qkview 수집 후 F5 지원 케이스 오픈, 메모리와 디스크 내용 비교 점검이 필요하다. 조사가 어려우면 장비를 격리 후 신규 재구축을 권고한다.
디스크 파일이 변경되지 않아도 감염됐을 수 있다. 이미 패치를 적용했더라도 감염 여부를 반드시 별도로 조사해야 하며, 아일랜드 NCSC는 악용 시작 시점을 알 수 없고 취약점 공개 이전부터 공격이 있었을 가능성도 있다고 경고했다.
본문
F5 BIG-IP APM(Access Policy Manager) 장비 침해 사건과 연관된 악성코드가 PHP 웹 셸을 디스크 파일이 아닌 메모리에 숨긴다는 사실을 Sophos가 9월 7일 발표한 분석 보고서에서 밝혔다.
Apache가 해당 장비에 포함된 세 개의 PHP 스크립트 중 하나를 로드하면, 악성코드는 메모리에 올라간 복사본에 웹 셸을 추가한다. 따라서 디스크의 파일을 검사하면 이상이 없는 것처럼 보인다. 이 세 스크립트는 F5가 지난 3월 고객에게 공지하면서, 해당 파일들의 변경만으로는 침해 여부를 판단할 수 없다고 언급한 바로 그 파일들이다.
웹 셸은 보통 공격자가 웹 서버의 폴더에 심어 두는 작은 스크립트로, 일반적인 웹 요청을 통해 명령을 실행하는 데 사용된다. 디스크에 저장되기 때문에 방어자들은 파일을 스캔하거나 정상 복사본과 비교하는 방식으로 탐지해왔다.
그러나 이번 경우에는 그 방법이 통하지 않는다. 연구자들의 표현을 빌리자면, 웹 셸은 "최종 형태로 디스크에 존재할 필요가 없다."
세 스크립트는 BIG-IP APM webtop의 일부인 apm_css.php3, full_wt.php3, webtop_popup_css.php3이다. F5는 지난 3월 c05d5254로 추적하는 악성코드의 침해 지표(IoC) 목록에 이 세 파일을 포함시키면서, 해당 파일의 존재 자체만으로는 보안 문제를 나타내지 않는다고 밝혔다.
F5는 또한 웹 셸이 디스크에 기록된 사례를 확인했지만, 웹 셸이 "메모리에서만 동작하는 것으로 관찰됐다"고 밝혔다. 이는 파일 목록에 포함된 파일들이 수정되지 않았을 수 있다는 것을 의미한다. Sophos의 분석은 두 가지 설명이 어떻게 동시에 성립할 수 있는지를 설명한다.
Sophos는 단일 샘플을 분석했으며, 피해자 정보나 샘플 입수 경위는 보고서에 포함하지 않았다.
F5는 c05d5254 활동이 CVE-2025-53521 취약점의 영향을 받은 장비와 연관돼 있다고 밝혔다고 Sophos는 전했다. F5는 이 취약점을 2025년 10월 15일에 서비스 거부(DoS) 문제로 처음 공개했다.
2026년 3월 27일, F5는 새로운 정보를 바탕으로 이 취약점을 원격 코드 실행(RCE)으로 재분류하고, 실제 악용이 확인됐다고 밝혔다. 공격자는 로그인 없이 이를 사용할 수 있으며, F5는 CVSS 3.1 기준 9.8점, CVSS 4.0 기준 9.3점으로 평가했다.
CISA는 같은 날 이 취약점을 악용 확인 취약점(KEV) 목록에 추가하고, 미국 연방 민간 기관에 3월 30일까지 조치를 완료하도록 지시했다.
이 취약점은 BIG-IP APM 접근 정책이 가상 서버에 설정된 경우에 적용된다. 영국 국가사이버보안센터(NCSC)는 BIG-IP APM을 특히 대형 조직에서 흔히 사용되는 구성 요소라고 밝혔다. F5 보안 권고문에는 영향을 받는 버전과 수정된 버전이 기재돼 있다.
| 취약한 버전 | 수정 버전 |
|---|---|
| 17.5.0 - 17.5.1 | 17.5.1.3 |
| 17.1.0 - 17.1.2 | 17.1.3 |
| 16.1.0 - 16.1.6 | 16.1.6.1 |
| 15.1.0 - 15.1.10 | 15.1.10.8 |
이 취약점을 수정하는 패치는 거의 1년 전에 공개됐다. 아일랜드 국가사이버보안센터(NCSC)는 3월 31일 권고문을 통해 10월에 배포된 패치가 여전히 유효하며 악용을 방어할 수 있다고 밝혔다.
웹 셸은 더 긴 공격 체인의 마지막 단계이며, 앞선 단계들은 디스크에 흔적을 남긴다. Sophos에 따르면, umount라는 이름의 샘플에서 발견된 별도의 인스톨러가 Apache 웹 서버 프로그램(/usr/sbin/httpd)의 실제 파일 앞에 악성 코드를 추가하는 방식으로 감염시킨다. 추가된 코드의 크기가 인스톨러 내부에 포함된 페이로드 크기와 일치하며, Sophos는 이것이 인스톨러가 해당 코드를 삽입한다는 강력한 증거라고 밝혔다.
4월에 관련 샘플을 분석하고 이 악성코드를 PoisonedRefresh로 명명한 ESET은, 해당 인스톨러가 루트(root) 권한으로 실행되도록 설계됐으며 SELinux를 비활성화한다고 밝혔다. 또한 BIG-IP 설치 이미지 내의 umount, httpd, rc.local을 함께 감염시키는데, ESET은 이것이 설치 미디어를 통해 다른 시스템으로 악성코드를 전파하기 위한 것으로 추정했다.
악성코드는 Apache 프로그램 내부에 자리 잡기 때문에 Apache 자체 코드보다 먼저 실행된다. Sophos에 따르면, 이 악성코드는 Apache Portable Runtime 함수인 apr_dso_load를 후킹(hooking)하고 Apache가 PHP 모듈(libphp)을 로드할 때까지 아무 동작도 하지 않는다.
PHP가 로드되면, 악성코드는 /proc/self/maps를 읽어 메모리에서 해당 모듈을 찾고, 해당 메모리 페이지를 일시적으로 쓰기 가능 상태로 변경한 뒤, 모듈이 파일을 열고 크기를 측정하고 매핑하는 데 사용하는 함수 호출을 덮어쓴다. 그런 다음 원래 권한으로 복구한다. 이 시점부터 악성코드는 PHP가 세 스크립트 중 하나를 열 때 보는 내용을 제어한다. 파일이 메모리에 매핑될 때, 악성코드는 원본 내용 앞에 웹 셸을 삽입한다.
웹 셸은 요청의 원시 본문(raw body)을 읽어 짧은 마커를 확인하고, 나머지를 복호화한 뒤 실행한다. HTTP 상태 코드 201과 CSS 콘텐츠 타입으로 응답하기 때문에, 이 통신은 스타일시트 요청처럼 보인다.
악성코드는 또한 /run/bigtlog.pipe에 로컬 소켓을 열고, 고정된 토큰을 확인한 뒤 해당 소켓을 /bin/bash에 연결해 네트워크 포트를 열지 않고도 대화형 셸을 제공한다.
Sophos는 샘플에서 해당 소켓에 연결하는 코드나 토큰을 다른 방식으로 사용하는 코드를 찾지 못했기 때문에, 두 가지 진입 경로는 별개의 기능으로 보인다고 밝혔다. 공격자가 웹 셸을 통해 소켓에 접근하는지 여부는 확인되지 않았다.
방어자가 확인해야 할 사항
Sophos는 아래 행동 징후들이 단독으로는 증거가 아니라 조사할 단서이며, 파일·프로세스·메모리 증거와 함께 검토해야 한다고 밝혔다. 아래 목록은 이 징후들과 F5가 3월에 공개한 침해 지표를 종합한 것이다.
- 파일: /run/bigtlog.pipe 또는 /run/bigstart.ltm 존재
- 이진 파일: /usr/bin/umount 또는 /usr/sbin/httpd의 해시·크기·타임스탬프가 정상 복사본과 불일치. F5는 크기와 타임스탬프가 릴리즈 및 엔지니어링 핫픽스마다 다를 수 있다고 안내
- 도구: 두 파일 중 하나가 변경돼 sys-eicheck 실패
- 로그: /var/log/restjavad-audit에 로컬 사용자가 localhost에서 iControl REST API에 접근한 항목
- 로그: /var/log/auditd에 동일한 경로로 SELinux가 비활성화된 항목
- 로그: /var/log/audit에 iControl REST를 통해 bash 명령이 실행된 항목. F5에 따르면 해당 로그 줄에는 파일에 기록된 base64 데이터와 /run/bigstart.ltm 실행 내용이 포함됨
- 트래픽: 장비에서 CSS 콘텐츠 타입을 포함한 HTTP 201 응답
- 호스트 행동: Apache 워커가 /proc/self/maps를 읽거나, libphp 주변 메모리 권한을 변경하거나, /run 아래에 소켓을 바인딩하거나, /bin/bash를 시작하는 동작
- SHA-256: 26bd5b0722d1dbab5db749a063c49bc8638653ac2addfead7a9cb3d6d57bccc9
- 파일(단독으로는 신뢰도 낮음): 세 .php3 스크립트의 변경. F5는 해당 파일의 존재만으로는 문제를 나타내지 않는다고 밝혔으며, Sophos 분석도 파일이 전혀 변경되지 않아도 된다고 설명함
F5의 목록에는 /run/bigstart.ltm 및 sys-eicheck에 영향을 주는 변경 사항 등 Sophos 분석에서 다루지 않은 항목도 포함돼 있다. 두 기관 모두 침해의 전체 경과를 설명하지는 않는다.
이미 패치를 적용한 경우
패치 적용이 패치 이전에 장비가 침해됐는지를 확인해 주지는 않는다.
아일랜드 NCSC는 악용 시작 시점을 알 수 없으며, 취약점과 수정 사항이 2025년 10월에 최초 공개되기 이전에도 일부 악용이 발생했거나 발생할 수 있었다고 밝혔다.
영국 NCSC는 "시스템이 언제 업데이트됐는지와 무관하게" 침해 여부를 조사할 것을 권고했다.
- F5의 기본 제공 sys-eicheck 무결성 검사를 실행한다. F5의 침해 지표에 따르면 /usr/bin/umount 및 /usr/sbin/httpd의 변경으로 인해 이 도구가 실패하므로, 실패 자체가 신호다.
- qkview 보고서를 수집하고 F5에 전송한 뒤 지원 케이스를 개설한다. 아일랜드 NCSC는 F5가 해당 보고서에서 침해 징후를 확인할 수 있으며, 케이스를 개설하면 더 빠르고 충실한 대응이 가능하다고 밝혔다.
- 메모리에 로드된 모듈의 내용과 디스크의 복사본을 비교한다. Sophos는 이를 주요 웹 서버에 대한 침해 대응 플레이북에 추가할 것을 권고했다.
- 전체 조사가 불가능한 경우, 영국 NCSC는 장비를 격리하고 신규로 재구축할 것을 권고하며, 이 경우 서비스 중단이 발생할 수 있다고 밝혔다.
아직 밝혀지지 않은 사항이 세 가지 있다. F5는 악용이 언제 시작됐는지 밝히지 않았다.
공개된 권고문이나 분석 중 어느 것도 장비를 수정 버전으로 업그레이드하면 이미 설치된 악성코드가 제거되는지 여부를 명확히 밝히지 않았으며, Sophos와 ESET 모두 업그레이드 이미지에서 생존하도록 설계된 구성 요소를 설명하고 있다.
공격 주체도 특정되지 않았다. Sophos는 특정 그룹을 지목할 만한 충분한 증거가 없다고 밝혔으며, ESET 역시 4월 분석 당시 이 문제를 결론짓지 못했다고 밝혔다.
관련 투런 솔루션
이 뉴스의 취약점·위협, 투런 솔루션으로 대응하세요.






