From 24eb7d007cd7cdcab245ba57ec5ffa47290aa574 Mon Sep 17 00:00:00 2001 From: Xre0uS Date: Sat, 5 Jul 2025 02:41:08 +0800 Subject: [PATCH] Add validation for packer size in ProcessCommandTasks --- Extenders/agent_beacon/src_beacon/beacon/Commander.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Extenders/agent_beacon/src_beacon/beacon/Commander.cpp b/Extenders/agent_beacon/src_beacon/beacon/Commander.cpp index a82e8da0..94d9a603 100644 --- a/Extenders/agent_beacon/src_beacon/beacon/Commander.cpp +++ b/Extenders/agent_beacon/src_beacon/beacon/Commander.cpp @@ -15,6 +15,14 @@ void Commander::ProcessCommandTasks(BYTE* recv, ULONG recvSize, Packer* outPacke *inPacker = Packer( recv, recvSize ); ULONG packerSize = inPacker->Unpack32(); + + // Check if the packer size is valid + if (packerSize > recvSize - 4) + { + MemFreeLocal((LPVOID*)&inPacker, sizeof(Packer)); + return; + } + while ( packerSize + 4 > inPacker->datasize()) { ULONG CommandId = inPacker->Unpack32();