Преглед изворни кода

AMBARI-6234. Security issue - private key password show in logs (dlysnichenko)

Lisnichenko Dmitro пре 11 година
родитељ
комит
7888bbf21a

+ 9 - 2
ambari-server/src/main/java/org/apache/ambari/server/utils/ShellCommandUtil.java

@@ -32,7 +32,7 @@ public class ShellCommandUtil {
   private static final Log LOG = LogFactory.getLog(ShellCommandUtil.class);
   private static final Object WindowsProcessLaunchLock = new Object();
   private static final String PASS_TOKEN = "pass:";
-
+  private static final String KEY_TOKEN = "-key ";
   /*
   public static String LogAndReturnOpenSslExitCode(String command, int exitCode) {
     logOpenSslExitCode(command, exitCode);
@@ -49,7 +49,14 @@ public class ShellCommandUtil {
   }
 
   public static String hideOpenSslPassword(String command){
-    int start = command.indexOf(PASS_TOKEN)+PASS_TOKEN.length();
+    int start;
+    if(command.contains(PASS_TOKEN)){
+      start = command.indexOf(PASS_TOKEN)+PASS_TOKEN.length();
+    } else if (command.contains(KEY_TOKEN)){
+      start = command.indexOf(KEY_TOKEN)+KEY_TOKEN.length();
+    } else {
+      return command;
+    }
     CharSequence cs = command.subSequence(start, command.indexOf(" ", start));
     return command.replace(cs, "****");
   }

+ 7 - 3
ambari-server/src/test/java/org/apache/ambari/server/utils/TestShellCommandUtil.java

@@ -133,10 +133,14 @@ public class TestShellCommandUtil extends TestCase {
   
   @Test
   public void testHideOpenSslPassword(){
-    String command = "openssl ca -config ca.config -in agent_hostname1.csr -out "+
+    String command_pass = "openssl ca -config ca.config -in agent_hostname1.csr -out "+
             "agent_hostname1.crt -batch -passin pass:1234 -keyfile ca.key -cert ca.crt";
-    
-    assertFalse(ShellCommandUtil.hideOpenSslPassword(command).contains("1234"));
+    String command_key = "openssl ca -create_serial -out /var/lib/ambari-server/keys/ca.crt -days 365 -keyfile /var/lib/ambari-server/keys/ca.key " +
+        "-key 1234 -selfsign -extensions jdk7_ca " +
+        "-config /var/lib/ambari-server/keys/ca.config -batch " +
+        "-infiles /var/lib/ambari-server/keys/ca.csr";
+    assertFalse(ShellCommandUtil.hideOpenSslPassword(command_pass).contains("1234"));
+    assertFalse(ShellCommandUtil.hideOpenSslPassword(command_key).contains("1234"));
   }
   
 }