mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

Valery Kharseko
yesterday 5a2a992ee6143d605f358a9f6379e7916e346def
Fix java/insecure-randomness CodeQL alerts by using SecureRandom (#758)
3 files modified
29 ■■■■■ changed files
opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/AuthRate.java 11 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/extensions/SaltedSHA1PasswordStorageScheme.java 9 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/extensions/SaltedSHA512PasswordStorageScheme.java 9 ●●●●● patch | view | raw | blame | history
opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/AuthRate.java
@@ -13,6 +13,7 @@
 *
 * Copyright 2010 Sun Microsystems, Inc.
 * Portions Copyright 2011-2016 ForgeRock AS.
 * Portions Copyrighted 2026 3A Systems, LLC.
 */
package com.forgerock.opendj.ldap.tools;
@@ -25,11 +26,11 @@
import static com.forgerock.opendj.cli.CommonArguments.*;
import java.io.PrintStream;
import java.security.SecureRandom;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.util.Random;
import com.codahale.metrics.RatioGauge;
import com.forgerock.opendj.cli.MultiColumnPrinter;
@@ -108,10 +109,10 @@
            private Object[] data;
            private final char[] invalidPassword = "invalid-password".toCharArray();
            private final ThreadLocal<Random> rng = new ThreadLocal<Random>() {
            private final ThreadLocal<SecureRandom> rng = new ThreadLocal<SecureRandom>() {
                @Override
                protected Random initialValue() {
                    return new Random();
                protected SecureRandom initialValue() {
                    return new SecureRandom();
                }
            };
@@ -183,7 +184,7 @@
                    useInvalidPassword = true;
                    break;
                default:
                    final Random r = rng.get();
                    final SecureRandom r = rng.get();
                    final int p = r.nextInt(100);
                    useInvalidPassword = p < invalidCredPercent;
                    break;
opendj-server-legacy/src/main/java/org/opends/server/extensions/SaltedSHA1PasswordStorageScheme.java
@@ -13,12 +13,13 @@
 *
 * Copyright 2006-2010 Sun Microsystems, Inc.
 * Portions Copyright 2010-2016 ForgeRock AS.
 * Portions Copyrighted 2026 3A Systems, LLC.
 */
package org.opends.server.extensions;
import java.security.MessageDigest;
import java.security.SecureRandom;
import java.util.Arrays;
import java.util.Random;
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.opendj.ldap.Base64;
@@ -69,7 +70,7 @@
  private Object digestLock;
  /** The secure random number generator to use to generate the salt values. */
  private Random random;
  private SecureRandom random;
  /**
   * Creates a new instance of this password storage scheme.  Note that no
@@ -99,7 +100,7 @@
    }
    digestLock = new Object();
    random     = new Random();
    random     = new SecureRandom();
  }
  @Override
@@ -422,7 +423,7 @@
         throws DirectoryException
  {
    byte[] saltBytes = new byte[NUM_SALT_BYTES];
    new Random().nextBytes(saltBytes);
    new SecureRandom().nextBytes(saltBytes);
    byte[] passwordPlusSalt = new byte[passwordBytes.length + NUM_SALT_BYTES];
    System.arraycopy(passwordBytes, 0, passwordPlusSalt, 0,
opendj-server-legacy/src/main/java/org/opends/server/extensions/SaltedSHA512PasswordStorageScheme.java
@@ -13,12 +13,13 @@
 *
 * Copyright 2006-2008 Sun Microsystems, Inc.
 * Portions Copyright 2010-2016 ForgeRock AS.
 * Portions Copyrighted 2026 3A Systems, LLC.
 */
package org.opends.server.extensions;
import java.security.MessageDigest;
import java.security.SecureRandom;
import java.util.Arrays;
import java.util.Random;
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.opendj.ldap.Base64;
@@ -69,7 +70,7 @@
  private Object digestLock;
  /** The secure random number generator to use to generate the salt values. */
  private Random random;
  private SecureRandom random;
  /**
   * Creates a new instance of this password storage scheme.  Note that no
@@ -101,7 +102,7 @@
    }
    digestLock = new Object();
    random     = new Random();
    random     = new SecureRandom();
  }
  @Override
@@ -426,7 +427,7 @@
         throws DirectoryException
  {
    byte[] saltBytes = new byte[NUM_SALT_BYTES];
    new Random().nextBytes(saltBytes);
    new SecureRandom().nextBytes(saltBytes);
    byte[] passwordPlusSalt = new byte[passwordBytes.length + NUM_SALT_BYTES];
    System.arraycopy(passwordBytes, 0, passwordPlusSalt, 0,