Bug 1346120 (CVE-2016-4984) - CVE-2016-4984 openldap-servers: /usr/libexec/openldap/generate-server-cert.sh create world readable password file
Summary: CVE-2016-4984 openldap-servers: /usr/libexec/openldap/generate-server-cert.sh...
Keywords:
Status: CLOSED WONTFIX
Alias: CVE-2016-4984
Product: Security Response
Classification: Other
Component: vulnerability
Version: unspecified
Hardware: All
OS: Linux
low
low
Target Milestone: ---
Assignee: Red Hat Product Security
QA Contact:
URL:
Whiteboard: impact=low,public=20160613,reported=2...
Depends On: 1346121
Blocks: 1346019 1349160
TreeView+ depends on / blocked
 
Reported: 2016-06-14 03:38 UTC by Kurt Seifried
Modified: 2019-06-08 21:16 UTC (History)
7 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2016-10-13 08:45:44 UTC


Attachments (Terms of Use)

Description Kurt Seifried 2016-06-14 03:38:37 UTC
The openldap-servers rpm creates the password file using the following rpm postinstall called script:

# generate sample TLS certificate for server (will not replace)
/usr/libexec/openldap/generate-server-cert.sh -o &>/dev/null || :

the script in turn creates the file unsafely and changes the permissions after creating it:

certutil -d "$CERTDB_DIR" -f "$PASSWORD_FILE" -z "$CERT_RANDOM" \
        -S -x -n "$CERT_NAME" \
        -s "CN=$HOSTNAME_FQDN" \
        -t TC,, \password
        -k $CERT_KEY_TYPE -g $CERT_KEY_SIZE \
        -v $CERT_VALID_MONTHS \
        -8 "$ALT_NAMES" \
        &>/dev/null

rm -f $CERT_RANDOM

# tune permissions

if [ "$(id -u)" -eq 0 ]; then
        chgrp ldap "$PASSWORD_FILE"
        chmod g+r "$PASSWORD_FILE"
else
        printf "WARNING: The server requires read permissions on the password file in order to\n" >&2
        printf "         load it's private key from the certificate database.\n" >&2
fi

this can lead to the contents of the file being exposed between the time the file is created and the chmod command runs. I would suggest setting umask 077 first. 

Additionally this secret value needs to be unique per instance or install but this value is created at install-time and not during the first run. All container and image instances created would share the same password as this password is set at rpm install time, and each instance should recieve a unique password. 

This bug is being file because Product Security considers "first run problems" to be bugs with the source package and with the container or image only in the aggregate. This view is in collaboration with upstream Fedora. See: https://fedorahosted.org/fpc/ticket/506

The recommended resolution for services is to follow the "First-time Service Setup" pattern (see: https://fedoraproject.org/wiki/Packaging:Initial_Service_Setup ). Other packages may should use a runtime check and generation or similar procedure.

Comment 1 Kurt Seifried 2016-06-14 03:38:48 UTC
Acknowledgments:

Name: Kurt Seifried (Red Hat)

Comment 2 Kurt Seifried 2016-06-14 03:39:20 UTC
Created openldap tracking bugs for this issue:

Affects: fedora-all [bug 1346121]

Comment 3 Kurt Seifried 2016-06-25 03:09:44 UTC
Just a note, the first run issue can also be handled through orchestration (e.g. OpenStack, CloudForms, OpenShift Enterprise and so on). But the certificate creation MUST be removed from the rpm install scripts.


Note You need to log in before you can comment on or make changes to this bug.