AD-ACC-008: Passwords in description or info attributes¶
medium Accounts MITRE ATT&CK T1552 Reads: LDAP
The description or info attribute of enabled accounts appears to contain a password, readable by the scanning user and anyone with the same rights.
Why it matters¶
Help desks and admins write temporary passwords into the Description or Notes field of an account ("temp pwd: Welcome2026") because it is convenient. Those attributes are not secret: ad-doctor read them as an ordinary domain user, so every account with the same rights can read them too.
Dumping all user descriptions is one of the first things an attacker does after getting
any foothold (for example NetExec's get-desc-users module). A password found there
often still works, or shows the pattern used for every new account.
How ad-doctor detects it¶
From the LDAP snapshot: every enabled account whose description and info values,
joined together, match a pattern of a password keyword followed by : or = and at
least three non-space characters. The keywords are pass, password, passwd, pwd
and the Turkish, German, Spanish and French words for password (parola, şifre,
sifre, kennwort, contraseña, mot de passe), case-insensitive.
The matched text is not copied into the report or the snapshot, only the fact that
it matched. Each object is the account's sAMAccountName, for example notes_user.
Attributes and probes read
descriptioninfo
Severity¶
Always medium. The match is a text pattern, not a confirmed credential, and the password may already have been changed.
False positives and limits¶
- Text that names a password without containing one, such as
Password: see vaultorpwd=never expires. Rewrite it, or record it in an accepted-risk file. - Passwords written without a
:or=(pw Welcome1) are not found.
Fix¶
-
Read the matching text yourself (read-only):
-
Change the password of every reported account first: assume the text has been read.
-
Remove the text (or replace it with something that is not a secret):
-
Fix the habit: hand out initial passwords out of band, with User must change password at next logon set, instead of writing them into the directory.
Verify¶
To accept the risk instead, add an entry to the file passed with --accept (see accepted risks):
[[accept]]
check = "AD-ACC-008"
objects = ["..."] # optional; without it the whole check is accepted
reason = "..."
expires = 2027-03-31
Related checks¶
References¶
Specifications
Research
MITRE ATT&CK
Available since 0.1.0.