Führe statische Analyse (SAST) auf der Codebasis aus und suche im Datenfluss nach dem unsicheren Muster.
Use of getlogin() in Multithreaded Application
Using the getlogin() function in a multithreaded application can lead to unreliable or incorrect username results, creating security and logic flaws.
What is CWE-558?
Real-world CVEs caused by CWE-558
Bisher sind in MITREs Katalog keine öffentlichen CVE-Referenzen mit dieser CWE verknüpft.
Angreiferpfad Schritt für Schritt
- 1
Identifiziere einen Codepfad, der nicht vertrauenswürdige Eingaben ohne Validierung verarbeitet.
- 2
Erzeuge eine Payload, die das unsichere Verhalten auslöst — Injection, Traversal, Overflow oder Logik-Missbrauch.
- 3
Liefere die Payload über einen normalen Request aus und beobachte die Reaktion der Anwendung.
- 4
Iteriere, bis die Antwort Daten preisgibt, Angreifer-Code ausführt oder Berechtigungen eskaliert.
Vulnerable C
The following code relies on getlogin() to determine whether or not a user is trusted. It is easily subverted.
pwd = getpwnam(getlogin());
if (isTrustedGroup(pwd->pw_gid)) {
allow();
} else {
deny();
} Secure pseudo
// Validate, sanitize, or use a safe API before reaching the sink.
function handleRequest(input) {
const safe = validateAndEscape(input);
return executeWithGuards(safe);
} How to prevent CWE-558
- Architecture and Design Using names for security purposes is not advised. Names are easy to forge and can have overlapping user IDs, potentially causing confusion or impersonation.
- Implementation Use getlogin_r() instead, which is reentrant, meaning that other processes are locked out from changing the username.
How to detect CWE-558
Führe dynamische Application-Security-Tests gegen den Live-Endpoint aus.
Beobachte Runtime-Logs auf ungewöhnliche Exception-Traces, fehlerhafte Eingaben oder Versuche, Autorisierung zu umgehen.
Code Review: Markiere jeden neuen Code, der Eingaben von dieser Oberfläche ohne validierte Framework-Helper verarbeitet.
Don't catalog this weakness. Prove it's reachable.
Plexicus turns CWE catalogs into evidence: every CWE-pattern is matched against your real code graph, reach is proven on a sandbox clone, and verified findings ship as reviewed PRs.
Frequently asked questions
Was ist CWE-558?
Using the getlogin() function in a multithreaded application can lead to unreliable or incorrect username results, creating security and logic flaws.
Wie gravierend ist CWE-558?
MITRE hat für diese Schwachstelle keine Exploit-Wahrscheinlichkeit veröffentlicht. Behandle sie als mittlere Auswirkung, bis dein Threat Model anderes belegt.
Welche Sprachen oder Plattformen sind von CWE-558 betroffen?
MITRE lists the following affected platforms: C, C++.
Wie kann ich CWE-558 verhindern?
Using names for security purposes is not advised. Names are easy to forge and can have overlapping user IDs, potentially causing confusion or impersonation. Use getlogin_r() instead, which is reentrant, meaning that other processes are locked out from changing the username.
Wie erkennt und behebt Plexicus CWE-558?
Die SAST-Engine von Plexicus erkennt die Datenfluss-Signatur von CWE-558 bei jedem Commit. Bei einem Treffer öffnet unser Codex-Remedium-Agent einen Fix-PR mit korrigiertem Code, Tests und einer einzeiligen Zusammenfassung für den Reviewer.
Wo erfahre ich mehr über CWE-558?
MITRE veröffentlicht die kanonische Definition unter https://cwe.mitre.org/data/definitions/558.html. Für ergänzende Hinweise kannst du auch die OWASP- und NIST-Dokumentation heranziehen.
Weaknesses related to CWE-558
Use of a Non-reentrant Function in a Concurrent Context
This vulnerability occurs when a program uses a function that is not safe for reentrancy within a concurrent environment, such as…
Signal Handler Use of a Non-reentrant Function
This vulnerability occurs when a signal handler in your code calls a function that is not safe to re-enter. If that function is…
Further reading
Bereit zu validieren, was zählt.
Plexicus ist Proof-Driven AppSec: validierte Funde, kontextuelles Verständnis und geprüfte Remediation — in Evidenz verankert, mit Ihnen gescoped.