Skip to main content

Business information leak - Azure

Description

A series of flaws in Azures service feature created a loophole. This vulnerability could allow users to access other customers information in the platform.

Impact

  • Lead to compromise the Kubernetes clusters, thus providing attackers with full control over other Azure customers' containers.
  • The vulnerability could have allowed users to access other customers information in the service.
  • Allow any user to download, delete or manipulate a massive collection of commercial databases.

Recommendation

  • Change users login credentials.
  • Rotate privileged credentials on a frequent basis.

Threat

External attacker with access and permissions over the database and service architecture.

Expected Remediation Time

⌚ 120 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: N
  • User interaction: N
  • Scope: U
  • Confidentiality: L
  • Integrity: L
  • Availability: N

Temporal

  • Exploit code madurity: X
  • Remediation level: X
  • Report confidence: X

Result

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

Code Examples

Compliant code

The application is correctly configured to access the databases without showing credentials on the source code

const uploadFile = (fileName) => {
const fileContent = fs.readFileSync(fileName);
//Function to establish connection to the db without storing credentials on the code
const connection = establishAzureConnection();
// Code to handle the upload of files
};

Non compliant code

Configuration and credentials directly stored in the source code

var sql = require("mssql");
var dbConfig = {
server: "zavier-test.database.windows.net",
database: "AdventureWorks",
user: "<your username>",
password: "<your password>",
port: 1433,
// Since we're on Windows Azure, we need to set the following options
options: {
encrypt: true
}
};

const uploadFile = (fileName) => {
const fileContent = fs.readFileSync(fileName);
var conn = new sql.Connection(dbConfig);
// Code to handle the upload of files
};

Requirements