Skip to main content

Sensitive information in source code - Credentials

Description

The repository stores sensitive information such as users, passwords, emails, API credentials, among others.

Impact

Obtain sensitive information to compromise other resources or services

Recommendation

  • Remove the hardcoded sensitive information and purge git logs
  • Change login credentials that were compromised.
  • Load sensitive data from secure sources such as key vault, encrypted configuration files or environment variables.

Threat

External attacker with access to source code.

Expected Remediation Time

⌚ 90 minutes.

Score

Default score using CVSS 3.1. It may change depending on the context of the vulnerability.

Base

  • Attack vector: N
  • Attack complexity: L
  • Privileges required: L
  • User interaction: N
  • Scope: U
  • Confidentiality: L
  • Integrity: N
  • Availability: N

Temporal

  • Exploit code madurity: P
  • Remediation level: U
  • Report confidence: C

Result

  • Vector string: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N/E:P/RL:U/RC:C
  • Score:
    • Base: 4.3
    • Temporal: 4.1
  • Severity:
    • Base: Medium
    • Temporal: Medium

Code Examples

Compliant code

All credentials are stored as encrypted secrets

const key = Buffer.from(keyString.substring(0, 8), "utf8");

function getInformation(userInput){
const info = fetch("url", key);
//Return information
}

Non compliant code

The API key is stored in plain text in the source code

const API_KEY = "KEY_inplaneText";

function getInformation(userInput){
const info = fetch("url", API_KEY);
//Return information
}

Requirements