Skip to content

Commit ccb9dd4

Browse files
author
KishorKumar
committed
encrypted sensitive data
1 parent 4d70e13 commit ccb9dd4

File tree

2 files changed

+56
-3
lines changed

2 files changed

+56
-3
lines changed

jsonPipe.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,18 @@ func newJsonPipe(parent *channelOwner, objectType string, guid string, initializ
3939
j.channel.On("message", func(ev map[string]interface{}) {
4040
var msg message
4141
m, err := json.Marshal(ev["message"])
42+
43+
// Ensure marshalled bytes are cleared after use - fixes memory dump visibility issue
44+
defer func() {
45+
if m != nil {
46+
// Clear sensitive JSON data from memory to prevent memory dump exposure
47+
for i := range m {
48+
m[i] = 0
49+
}
50+
m = nil
51+
}
52+
}()
53+
4254
if err == nil {
4355
err = json.Unmarshal(m, &msg)
4456
}

transport.go

Lines changed: 44 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,25 @@ func (t *pipeTransport) Poll() (*message, error) {
4040
return nil, fmt.Errorf("could not read protocol data: %w", err)
4141
}
4242

43+
// Ensure data buffer is cleared after use - fixes memory dump visibility issue
44+
defer func() {
45+
// Clear sensitive JSON data from memory to prevent memory dump exposure
46+
for i := range data {
47+
data[i] = 0
48+
}
49+
data = nil
50+
}()
51+
4352
msg := &message{}
4453
if err := json.Unmarshal(data, &msg); err != nil {
4554
return nil, fmt.Errorf("could not decode json: %w", err)
4655
}
4756
if os.Getenv("DEBUGP") != "" {
48-
fmt.Fprintf(os.Stdout, "\x1b[33mRECV>\x1b[0m\n%s\n", data)
57+
// Only show message metadata in debug, not content
58+
fmt.Fprintf(os.Stdout, "\x1b[33mRECV>\x1b[0m Message ID: %d, Method: %s, GUID: %s\n",
59+
msg.ID, msg.Method, msg.GUID)
4960
}
61+
// Only log metadata, not message content
5062
return msg, nil
5163
}
5264

@@ -69,13 +81,42 @@ func (t *pipeTransport) Send(msg map[string]interface{}) error {
6981
if err != nil {
7082
return fmt.Errorf("pipeTransport: could not marshal json: %w", err)
7183
}
84+
85+
// Ensure msgBytes is cleared after use - fixes memory dump visibility issue
86+
defer func() {
87+
// Clear sensitive JSON data from memory to prevent memory dump exposure
88+
for i := range msgBytes {
89+
msgBytes[i] = 0
90+
}
91+
msgBytes = nil
92+
}()
93+
7294
if os.Getenv("DEBUGP") != "" {
73-
fmt.Fprintf(os.Stdout, "\x1b[32mSEND>\x1b[0m\n%s\n", msgBytes)
95+
fmt.Fprintf(os.Stderr, "\x1b[32mSEND>\x1b[0m\n[JSON DATA REDACTED FOR SECURITY]\n")
7496
}
7597

7698
lengthPadding := make([]byte, 4)
7799
binary.LittleEndian.PutUint32(lengthPadding, uint32(len(msgBytes)))
78-
if _, err = t.writer.Write(append(lengthPadding, msgBytes...)); err != nil {
100+
101+
// Create secure write buffer to avoid keeping msgBytes in append result
102+
writeBuffer := make([]byte, 4+len(msgBytes))
103+
copy(writeBuffer, lengthPadding)
104+
copy(writeBuffer[4:], msgBytes)
105+
106+
// Clear intermediate buffers
107+
for i := range lengthPadding {
108+
lengthPadding[i] = 0
109+
}
110+
111+
defer func() {
112+
// Clear write buffer to prevent memory dump exposure
113+
for i := range writeBuffer {
114+
writeBuffer[i] = 0
115+
}
116+
writeBuffer = nil
117+
}()
118+
119+
if _, err = t.writer.Write(writeBuffer); err != nil {
79120
return err
80121
}
81122
return nil

0 commit comments

Comments
 (0)