Wazuh 서버는 원격 코드 실행에 취약함
안전하지 않은 역직렬화 취약점으로 인해 Wazuh 서버에서 원격 코드 실행이 허용됩니다.
API 액세스 권한이 있는 사람(클러스터의 손상된 대시보드 또는 Wazuh 서버) 또는 특정 구성에서는 손상된 에이전트에 의해 취약점이 트리거될 수 있습니다.
DistributedAPI 매개변수는 JSON으로 직렬화되고 as_wazuh_object(framework/wazuh/core/cluster/common.py)를 사용하여 역직렬화됩니다. 공격자가 DAPI 요청/응답에 정리되지 않은 사전을 삽입하는 경우 처리되지 않은 예외(__unhandled_exc__)를 위조하여 임의의 Python 코드를 평가할 수 있습니다.
서버 API를 사용하면 트리거하기가 매우 쉽습니다. 예를 들어 run_as 엔드포인트(api/api/controllers/security_controller.py에서 run_as_login으로 구현됨)를 사용하면 auth_context 인수는 공격자에 의해 완전히 제어되며 처리를 위해 마스터 서버로 전달됩니다. 워커 서버에 악의적인 'run_as' 요청을 보내면 마스터 서버에서 코드를 실행할 수 있다.
특정 구성에서는 버그를 손상된 에이전트로 악용하는 것도 가능합니다.
손상된 에이전트는 악성 JSON 개체(직렬화된 처리되지 않은 예외 포함)를 사용하여 'getconfig' 요청에 응답할 수 있습니다. /agents/{agent_id}/config/{comComponent}/{configuration}(api.controllers.agent_controller.get_agent_config)에 대한 서버 API 요청으로 인해 getconfig 요청이 발생했고 에이전트가 서버 API 요청을 수신한 서버가 아닌 다른 서버에서 관리되는 경우 원래 서버 API 요청을 수신한 서버에서 안전하지 않은 역직렬화가 발생합니다.
사용자 서버 A 서버 B 에이전트
| | | |
| -get-config-> | | |
| | --get-config-dapi-> | |
| | | --getconf-> |
| | | <-페이로드-- |
| X <----페이로드------ | |
| | | |
안전하지 않은 역직렬화 함수(as_wazuh_object)에 접근할 수 있는 방법이 더 있을 가능성이 높으며, 그 중 일부는 다른 컨텍스트에서 액세스할 수도 있습니다(자격 증명이 없거나 손상된 에이전트에 의해 시작됨). 도달한 입력을 삭제하려고 시도하는 대신 근본 원인을 수정하는 것이 좋습니다. as_wazuh_object에서 임의의 코드를 실행하는 방법은 여러 가지가 있습니다. __callable__을 사용하거나 잠재적으로 Exception, wresults 또는 Wazuh에서 호출 가능한 가젯을 남용하는 등의 방법이 있습니다.
서버 API를 사용하여 트리거하려면(기본 자격 증명 가정):
``배쉬
컬 -X POST -k -u "wazuh-wui:MyS3cr37P450r.*-" -H "Content-Type: application/json" --data '{"unhandled_exc":{"class": "exit", "args": []}}' https://:55000/security/user/authenticate/run_as
그러면 마스터 서버가 종료됩니다.
### 영향
이는 Wazuh 서버에서의 원격 코드 실행으로, 최신 버전(현재 v4.9.0)에 영향을 미칩니다.
필수 조치
Apply mitigations per vendor instructions, follow applicable BOD 22-01 guidance for cloud services, or discontinue use of the product if mitigations are unavailable.
왜 이 VPI인가 (설명가능 · 실험적)
VPI 산정 기준
| 영향도 | 99.00 |
| 악용 신호(KEV 등재) | ×1.50 |
| VPI | 100.00 |
VPI 공식 vpi-v1 기준