Secret leaks often occur when a sensitive piece of authentication data is stored with the source code of an application. Considering the source code is intended to be deployed across multiple assets, including source code repositories or application hosting servers, the secrets might get exposed to an unintended audience.

Why is this an issue?

In most cases, trust boundaries are violated when a secret is exposed in a source code repository or an uncontrolled deployment environment. Unintended people who don’t need to know the secret might get access to it. They might then be able to use it to gain unwanted access to associated services or resources.

The trust issue can be more or less severe depending on the people’s role and entitlement.

What is the potential impact?

Splunk HTTP Event Collector (HEC) tokens allow applications to submit events to a Splunk server for logging. A disclosed HEC token could allow an attacker to submit fake events to Splunk.

Splunk API tokens allow applications to interact with a Splunk instance. Each token represents a user and carries all of that user’s rights. A disclosed token could allow an attacker to perform any action on the Splunk instance that the associated user could perform, from querying event data to administering the Splunk instance or cluster.

Below are some real-world scenarios that illustrate some impacts of an attacker exploiting a disclosed token.

Breach of trust in non-repudiation and disruption of the audit trail

When such a secret is compromised, malicious actors might have the possibility to send malicious event objects, causing discrepancies in the audit trail. This can make it difficult to trace and verify the sequence of events, impacting the ability to investigate and identify unauthorized or fraudulent activity.

All in all, this can lead to problems in proving the validity of transactions or actions performed, potentially leading to disputes and legal complications.

Compromise of sensitive data

If the affected service is used to store or process personally identifiable information or other sensitive data, attackers knowing an authentication secret could be able to access it. Depending on the type of data that is compromised, it could lead to privacy violations, identity theft, financial loss, or other negative outcomes.

In most cases, a company suffering a sensitive data compromise will face a reputational loss when the security issue is publicly disclosed.

Application’s security downgrade

A downgrade can happen when the disclosed secret is used to protect security-sensitive assets or features of the application. Depending on the affected asset or feature, the practical impact can range from a sensitive information leak to a complete takeover of the application, its hosting server or another linked component.

For example, an application that would disclose a secret used to sign user authentication tokens would be at risk of user identity impersonation. An attacker accessing the leaked secret could sign session tokens for arbitrary users and take over their privileges and entitlements.

How to fix it

Revoke the secret

Revoke any leaked secrets and remove them from the application source code.

Before revoking the secret, ensure that no other applications or processes are using it. Other usages of the secret will also be impacted when the secret is revoked.

Use a secret vault

A secret vault should be used to generate and store the new secret. This will ensure the secret’s security and prevent any further unexpected disclosure.

Depending on the development platform and the leaked secret type, multiple solutions are currently available.

Code examples

Noncompliant code example

props.set("splunk.hec.token", "6bef6b7f-ca30-4b83-a80a-0d4747ed8a58") // Noncompliant

Compliant solution

props.set("splunk.hec.token", System.getenv("SPLUNK_HEC_TOKEN"))

Resources

Standards