logo

Database

Java Insecure Trust Manager Accepts All

Description

Detects insecure implementations of TrustManager classes that accept all SSL/TLS certificates without proper verification. This vulnerability bypasses certificate validation, allowing attackers to perform man-in-the-middle attacks by using invalid or malicious certificates.

Weakness:

350 - Insecure digital certificates - Chain of trust

Category: Access Subversion

Detection Strategy

    • Look for classes that implement TrustManager interfaces

    • Check if these classes override certificate verification methods

    • Flag implementations where trust verification methods are overridden to accept all certificates

    • Specifically examine methods related to server certificate verification and issuer verification

    • Report a vulnerability if the implementation does not perform proper certificate validation checks

Vulnerable code example

import javax.net.ssl.X509TrustManager;
import java.security.cert.X509Certificate;
import java.security.cert.CertificateException;

public class InsecureTrustManager implements X509TrustManager {
    
    @Override
    public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {...

✅ Secure code example

import javax.net.ssl.TrustManagerFactory;
import javax.net.ssl.X509TrustManager;
import java.security.KeyStore;
import java.security.cert.X509Certificate;
import java.security.cert.CertificateException;

public class SecureTrustManager implements X509TrustManager {
    private final X509TrustManager defaultTrustManager;...