Verwendung hartcodierter Zugangsdaten
Beschreibung
Verwendung hartcodierter Zugangsdaten tritt auf, wenn ein Produkt hartcodierte Zugangsdaten wie Passwörter, kryptographische Schlüssel oder API-Tokens enthält, die direkt in Quellcode, Konfigurationsdateien oder kompilierte Binärdateien eingebettet sind. Diese Zugangsdaten können für eingehende Authentifizierung (ermöglichen externen Parteien, sich bei der Software zu authentifizieren) oder ausgehende Authentifizierung (die Software authentifiziert sich bei externen Diensten) verwendet werden. Hartcodierte Zugangsdaten stellen ein erhebliches Sicherheitsrisiko dar, da sie nicht einfach geändert werden können, oft durch Reverse Engineering oder Quellcodezugang entdeckbar sind und typischerweise über alle Installationen der Software hinweg geteilt werden.
Risiko
Hartcodierte Zugangsdaten gehören konsequent zu den gefährlichsten Software-Schwachstellen. CVE-2025-2538 im Esri Portal for ArcGIS (CVSS 9.8 Kritisch) ermöglicht unauthentifizierten Angreifern, über hartcodierte Zugangsdaten administrativen Zugang zu erlangen und betrifft Regierungs-, Versorgungs- und Transportsektoren. CVE-2025-36087 im IBM Security Verify Access legt hartcodierte Zugangsdaten in den Versionen 10.0.0-10.0.9 und 11.0.0 offen. Über 40% der Datenpannen beinhalten schwache oder offengelegte Zugangsdaten. Das Mirai-Botnet nutzte IoT-Geräte mit werkseitig voreingestellten hartcodierten Zugangsdaten aus, um massive DDoS-Angriffe zu starten. Entwickler committen häufig Code mit eingebetteten Zugangsdaten in öffentliche Repositories.
Lösung
Betten Sie niemals Zugangsdaten in Quellcode ein. Verwenden Sie Umgebungsvariablen, Konfigurationsdateien mit eingeschränkten Berechtigungen oder Secrets-Management-Lösungen (HashiCorp Vault, AWS Secrets Manager, Azure Key Vault). Implementieren Sie Mechanismen zur Rotation von Zugangsdaten. Verwenden Sie einzigartige Zugangsdaten pro Installation. Für IoT-Geräte, erfordern Sie eine Änderung der Zugangsdaten bei der ersten Verwendung. Scannen Sie Code-Repositories auf versehentlich committete Zugangsdaten. Verwenden Sie Pre-Commit-Hooks, um Zugangsdaten-Commits zu verhindern. Implementieren Sie Laufzeit-Zugangsdaten-Injection. Für API-Schlüssel verwenden Sie kurzlebige Tokens mit automatischer Rotation.
Häufige Auswirkungen
| Auswirkung | Details |
|---|---|
| Authentifizierung | Bereich: Vollständiger Bypass Hartcodierte Zugangsdaten bieten jedem, der sie entdeckt, sofortigen Authentifizierungs-Bypass. |
| Zugangskontrolle | Bereich: Unautorisierter Zugang Angreifer erlangen Zugang zu Systemen, Daten und Funktionalität, die durch die hartcodierten Zugangsdaten geschützt sind. |
| Vertraulichkeit | Bereich: Massenkompromittierung Dieselben Zugangsdaten über alle Installationen bedeuten, dass eine Entdeckung alle Deployments kompromittiert. |
Beispielcode + Lösungscode
Verwundbarer Code
// VERWUNDBAR: Hartcodiertes Datenbankpasswort
public class DatabaseConnection {
private static final String DB_HOST = "db.example.com";
private static final String DB_USER = "admin";
private static final String DB_PASSWORD = "SuperSecret123!"; // Hartcodiert!
public Connection getConnection() throws SQLException {
return DriverManager.getConnection(
"jdbc:mysql://" + DB_HOST + "/mydb",
DB_USER,
DB_PASSWORD
);
}
}
# VERWUNDBAR: Zugangsdaten im Quellcode
import requests
API_KEY = "AIzaSyD-abc123xyz789" # Hartcodierter Google API-Schlüssel!
SECRET_KEY = "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" # AWS-Secret!
def connect_to_api():
headers = {"Authorization": f"Bearer {API_KEY}"}
return requests.get("https://api.example.com/data", headers=headers)
Lösungscode
// SICHER: Zugangsdaten aus Umgebung oder Secrets-Manager
import com.amazonaws.services.secretsmanager.AWSSecretsManager;
public class SecureDatabaseConnection {
private final AWSSecretsManager secretsManager;
public SecureDatabaseConnection(AWSSecretsManager secretsManager) {
this.secretsManager = secretsManager;
}
public Connection getConnection() throws Exception {
// Zugangsdaten aus Secrets-Manager holen
GetSecretValueResult secret = secretsManager.getSecretValue(
new GetSecretValueRequest().withSecretId("prod/db/credentials")
);
JSONObject creds = new JSONObject(secret.getSecretString());
String host = creds.getString("host");
String user = creds.getString("username");
String password = creds.getString("password");
return DriverManager.getConnection(
"jdbc:mysql://" + host + "/mydb",
user,
password
);
}
}
# SICHER: Zugangsdaten aus Umgebung und Secrets-Manager
import os
import boto3
def get_secret(secret_name):
"""Secret aus AWS Secrets Manager abrufen."""
client = boto3.client('secretsmanager')
response = client.get_secret_value(SecretId=secret_name)
return json.loads(response['SecretString'])
def connect_to_api():
# API-Schlüssel aus Umgebung oder Secrets-Manager holen
api_key = os.environ.get('API_KEY')
if not api_key:
secrets = get_secret('prod/api/credentials')
api_key = secrets['api_key']
headers = {"Authorization": f"Bearer {api_key}"}
return requests.get("https://api.example.com/data", headers=headers)
Ausgenutzt in der Praxis
Esri Portal for ArcGIS (Esri, 2025)
CVE-2025-2538 (CVSS 9.8 Kritisch) im Esri Portal for ArcGIS 11.4 und darunter enthält hartcodierte Zugangsdaten, die unauthentifizierten Remote-Angreifern ermöglichen, administrativen Zugang zu GIS-Systemen zu erlangen, die in Regierung, Versorgung, Transport und Umweltmanagement verwendet werden.
IBM Security Verify Access (IBM, 2025)
CVE-2025-36087 im IBM Security Verify Access Versionen 10.0.0-10.0.9 und 11.0.0 legt hartcodierte Zugangsdaten offen und betrifft Finanz-, Gesundheits-, Regierungs- und kritische Infrastruktursektoren, die auf robuste Zugangskontrollen angewiesen sind.
Mirai Botnet IoT-Angriffe (Mehrere, 2016-Heute)
Das Mirai-Botnet nutzte IoT-Geräte mit hartcodierten Werkszugangsdaten aus und kompromittierte Millionen von Geräten für massive DDoS-Angriffe, die große Internetdienste einschließlich Dyn DNS lahmlegten.
Tools zum Testen/Ausnutzen
- TruffleHog - Scan nach Secrets in Git-Repositories.
- GitLeaks - Erkennung hartcodierter Secrets im Code.
- Detect-Secrets - Pre-Commit-Hook zur Zugangsdatenerkennung.
CVE-Beispiele
- CVE-2025-2538 - Esri Portal for ArcGIS hartcodierte Zugangsdaten.
- CVE-2025-36087 - IBM Security Verify Access hartcodierte Zugangsdaten.
- CVE-2024-0865 - Schneider Electric hartcodierte Zugangsdaten.
Referenzen
- MITRE. "CWE-798: Use of Hard-coded Credentials." https://cwe.mitre.org/data/definitions/798.html
- OWASP. "Use of hard-coded password." https://owasp.org/www-community/vulnerabilities/Use_of_hard-coded_password