STIGhubSTIGhub
STIGsRMF ControlsCompare
STIGhub— A free STIG search and compliance tool·STIGs updated 3 days ago
Powered by Pylon·Privacy·Terms·© 2026 Beacon Cloud Solutions, Inc.
← Back to MongoDB Enterprise Advanced 8.x Security Technical Implementation Guide

V-279349

CAT I (High)

MongoDB must, for password-based authentication, store passwords using an approved salted key derivation function, preferably using a keyed hash.

Rule ID

SV-279349r1179508_rule

STIG

MongoDB Enterprise Advanced 8.x Security Technical Implementation Guide

Version

V1R1

CCIs

CCI-004062

Discussion

The DOD standard for authentication is DOD-approved PKI certificates. Authentication based on user ID and password may be used only when it is not possible to employ a PKI certificate, and requires authorizing official (AO) approval. In such cases, database passwords stored in clear text, using reversible encryption or using unsalted hashes, would be vulnerable to unauthorized disclosure. Database passwords must always be in the form of one-way, salted hashes when stored internally or externally to the DBMS.

Check Content

MongoDB supports the Salted Challenge Response Authentication Mechanism (SCRAM) as the default authentication mechanism for MongoDB.

Run the following script for database in the MongoDB system:

/// Connect to admin database
db = db.getSiblingDB('admin');

// Get all users without SCRAM-SHA-256
const allUsers = db.system.users.find().toArray();
const usersToUpgrade = allUsers.filter(user => 
  !user.credentials || !user.credentials["SCRAM-SHA-256"]
);

print(`Found ${usersToUpgrade.length} users without SCRAM-SHA-256 authentication`);

if (usersToUpgrade.length === 0) {
  print("All users already using SCRAM-SHA-256. No action needed.");
  quit();
}

// Display users that need upgrading
print("\nUsers needing upgrade to SCRAM-SHA-256:");
usersToUpgrade.forEach(user => {
  print(`- User: ${user.user}, Database: ${user.db}`);
});

If any user found in a database using password authentication does not have "Using SCRAM-SHA-256: YES", this is a finding.

Fix Text

For each user that does not have SCRAM-SHA-256, run the following command:

use admin
db.runCommand({'updateUser':'<their username>',pwd: passwordPrompt() , mechanisms:['SCRAM-SHA-256']})