Skip to content

Commit 6d18939

Browse files
authored
Remove user sensitive data from self-diagnostics (#3976)
1 parent 148b861 commit 6d18939

File tree

1 file changed

+31
-2
lines changed
  • agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/init

1 file changed

+31
-2
lines changed

agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/init/FirstEntryPoint.java

+31-2
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,11 @@
3333
import java.lang.management.RuntimeMXBean;
3434
import java.nio.charset.StandardCharsets;
3535
import java.nio.file.Path;
36+
import java.util.AbstractMap.SimpleEntry;
37+
import java.util.Locale;
38+
import java.util.Map;
3639
import java.util.Properties;
40+
import java.util.stream.Collectors;
3741
import javax.annotation.Nullable;
3842
import org.slf4j.Logger;
3943
import org.slf4j.LoggerFactory;
@@ -122,7 +126,7 @@ public void init(EarlyInitAgentConfig earlyConfig) {
122126
startupLogger.trace("OS: " + System.getProperty("os.name"));
123127
startupLogger.trace("Classpath: " + System.getProperty("java.class.path"));
124128
startupLogger.trace("Netty versions: " + NettyVersions.extract());
125-
startupLogger.trace("Env: " + System.getenv());
129+
startupLogger.trace("Env: " + findEnvVariables());
126130
startupLogger.trace("System properties: " + findSystemProperties());
127131
}
128132

@@ -138,6 +142,30 @@ public void init(EarlyInitAgentConfig earlyConfig) {
138142
}
139143
}
140144

145+
private static Map<String, String> findEnvVariables() {
146+
Map<String, String> env = System.getenv();
147+
return env.entrySet().stream()
148+
.map(
149+
entry -> {
150+
String key = entry.getKey();
151+
String value = entry.getValue().toString();
152+
String valueToDisplay = maskValueOfSensitiveKey(key, value);
153+
return new SimpleEntry<>(key, valueToDisplay);
154+
})
155+
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
156+
}
157+
158+
private static String maskValueOfSensitiveKey(String key, String value) {
159+
return isSensitive(key) ? "***" : value;
160+
}
161+
162+
private static boolean isSensitive(String key) {
163+
String keyInLowerCase = key.toLowerCase(Locale.ROOT);
164+
return keyInLowerCase.contains("password")
165+
|| keyInLowerCase.contains("pwd")
166+
|| keyInLowerCase.contains("secret");
167+
}
168+
141169
private static void checkTlsConnectionsToVirtualServersEnabled() {
142170
String tlsConnectionsToVirtualServersProp = "jsse.enableSNIExtension";
143171
String propValue = System.getProperty(tlsConnectionsToVirtualServersProp);
@@ -156,7 +184,8 @@ private static String findSystemProperties() {
156184
if (!firstProperty) {
157185
propsBuilder.append(", ");
158186
}
159-
propsBuilder.append("(" + key + "=" + value + ")");
187+
String valueToDisplay = maskValueOfSensitiveKey(key.toString(), value.toString());
188+
propsBuilder.append("(" + key + "=" + valueToDisplay + ")");
160189
});
161190
return propsBuilder.toString();
162191
}

0 commit comments

Comments
 (0)