Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Possible Null Pointer Dereference in TimeStampRequest.java #1895

Open
Sawraz-OpenRef opened this issue Nov 5, 2024 · 0 comments
Open

Possible Null Pointer Dereference in TimeStampRequest.java #1895

Sawraz-OpenRef opened this issue Nov 5, 2024 · 0 comments

Comments

@Sawraz-OpenRef
Copy link

What happened?

In file: TimeStampRequest.java, there is a potential case of null pointer dereference. In method validate(), there is a call to convert(), which returns null if parameter orig is null.

private Set convert(Set orig)
{
    if (orig == null)
    {
        return orig; // Returns null if input is null
    }

    Set con = new HashSet(orig.size());
    // Rest of the code ...
}

public void validate(
    Set    algorithms,
    Set    policies,
    Set    extensions)
    throws TSPException
{
    algorithms = convert(algorithms);
    policies = convert(policies);
    extensions = convert(extensions);

    if (!algorithms.contains(this.getMessageImprintAlgOID()))
    {
        throw new TSPValidationException("request contains unknown algorithm", PKIFailureInfo.badAlg);
    }
    
    // Rest of the code...
}

In the validate() method, this null return value is not checked before use:

if (!algorithms.contains(this.getMessageImprintAlgOID()))
{
    throw new TSPValidationException("request contains unknown algorithm", PKIFailureInfo.badAlg);
}

So, when algorithms.contains() is called, a NullPointerException will be thrown. This creates a reliability issue and could potentially be used to bypass validation checks.

So, a possible fix can be, to add a proper null-check before use, as it's already done for policies and extensions:

if (algorithms!=null && !algorithms.contains(this.getMessageImprintAlgOID()))
{
    throw new TSPValidationException("request contains unknown algorithm", PKIFailureInfo.badAlg);
}

Sponsorship and Support:

This work is done by the security researchers from OpenRefactory and is supported by the Open Source Security Foundation (OpenSSF): Project Alpha-Omega. Alpha-Omega is a project partnering with open source software project maintainers to systematically find new, as-yet-undiscovered vulnerabilities in open source code - and get them fixed - to improve global software supply chain security.

The bug is found by running the iCR tool by OpenRefactory, Inc. and then manually triaging the results.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant