Skip to content

Commit 3ee407b

Browse files
committed
v3.2.17.1
added some better checking and deadlock preventing checks around socks traffic
1 parent c23998a commit 3ee407b

File tree

4 files changed

+207
-149
lines changed

4 files changed

+207
-149
lines changed

CHANGELOG.MD

+7
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,13 @@ All notable changes to this project will be documented in this file.
44
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
55
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
66

7+
## [3.2.17.1] - 2024-02-08
8+
9+
### Changed
10+
11+
- Adjusted the SOCKS handling functions to use non-blocking sends when dealing with channels to help prevent deadlock
12+
- Adjusted the SOCKS channels to have increased capacity
13+
714
## [3.2.17] - 2024-02-06
815

916
### Changed

VERSION

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
3.2.17
1+
3.2.17.1

mythic-docker/src/rabbitmq/util_agent_message_push_c2.go

+10-4
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ type interceptProxyToAgentMessage struct {
9898
CallbackID int
9999
}
100100

101-
var interceptProxyToAgentMessageChan = make(chan interceptProxyToAgentMessage, 200)
101+
var interceptProxyToAgentMessageChan = make(chan interceptProxyToAgentMessage, 2000)
102102

103103
// interceptProxyDataToAgentForPushC2 checks if Proxy messages can be sent to a PushC2 agent first
104104
func interceptProxyDataToAgentForPushC2() {
@@ -155,14 +155,20 @@ func interceptProxyDataToAgentForPushC2() {
155155
// we don't have a PushC2 client available, so save it like normal
156156
switch msg.ProxyType {
157157
case CALLBACK_PORT_TYPE_INTERACTIVE:
158-
msg.InteractiveMessagesToAgent <- msg.InteractiveMessage
158+
select {
159+
case msg.InteractiveMessagesToAgent <- msg.InteractiveMessage:
160+
default:
161+
}
159162
//.LogInfo("saved to msg")
160163
case CALLBACK_PORT_TYPE_SOCKS:
161164
fallthrough
162165
case CALLBACK_PORT_TYPE_RPORTFWD:
163-
msg.MessagesToAgent <- msg.Message
166+
select {
167+
case msg.MessagesToAgent <- msg.Message:
168+
default:
169+
logging.LogError(nil, "dropping message because channel is full", "type", msg.ProxyType)
170+
}
164171
}
165-
166172
}
167173
}
168174
}

0 commit comments

Comments
 (0)