---
title: Apache NiFi Registry Security Reports
---

<div class="large-space"></div>
</div>
<div class="medium-space"></div>
<div class="row">
    <div class="large-12 columns features">
        <h2>NiFi Registry Security Vulnerability Disclosure</h2>
    </div>
</div>
<div class="row">
    <div class="large-12 columns">
        <p>Apache NiFi Registry welcomes the responsible reporting of security vulnerabilities. The NiFi Registry team believes that working with skilled security researchers across the globe is crucial in identifying
            weaknesses in any technology. If you believe you've found a security issue in our product or service, we encourage you to notify us. We will work with you to resolve the issue
            promptly.</p>
        <h3>Disclosure Policy</h3>
        <ul>
            <li>Let us know as soon as possible upon discovery of a potential security issue, and we'll make every effort to quickly resolve the issue.</li>
            <li>Provide us a reasonable amount of time to resolve the issue before any disclosure to the public or a third-party.</li>
            <li>Make a good faith effort to avoid privacy violations, destruction of data, and interruption or degradation of our service. Only interact with accounts you own or with explicit
                permission of the account holder.
            </li>
        </ul>
        <h3>Exclusions</h3>
        <p>While researching, we'd like to ask you to refrain from:</p>
        <ul>
            <li>Denial of service</li>
            <li>Spamming</li>
            <li>Social engineering (including phishing) of Apache NiFi and NiFi Registry staff or contractors</li>
            <li>Any physical attempts against Apache NiFi or NiFi Registry property or data centers</li>
        </ul>
        <h3>Reporting Methods</h3>
        <p>NiFi Registry receives vulnerability reports through the Apache NiFi team via the following means:</p>
        <ul>
            <li>NiFi Security Mailing List: <a href="mailto:security@nifi.apache.org">security@nifi.apache.org</a>.
            Members of the <a href="people.html">Project Management Committee</a> monitor this private mailing list and respond to disclosures.
            </li>
        </ul>
        <p>Thank you for helping keep Apache NiFi Registry and our users safe!</p>
    </div>
</div>
<div class="medium-space"></div>
<div class="row">
    <div class="large-12 columns features">
        <h2><a id="0.6.0" href="#0.6.0">Fixed in Apache NiFi Registry 0.6.0</a></h2>
    </div>
</div>
<!-- Vulnerabilities -->
<div class="row">
    <div class="large-12 columns features">
        <h2><a id="0.6.0-vulnerabilities" href="#0.6.0-vulnerabilities">Vulnerabilities</a></h2>
    </div>
</div>
<div class="row">
    <div class="large-12 columns">
        <p><a id="CVE-2020-9482" href="#CVE-2020-9482"><strong>CVE-2020-9482</strong></a>: Apache NiFi Registry user log out issue</p>
        <p>Severity: <strong>Moderate</strong></p>
        <p>Versions Affected:</p>
        <ul>
            <li>Apache NiFi Registry 0.1.0 - 0.5.0</li>
        </ul>
        </p>
        <p>Description: If NiFi Registry uses an authentication mechanism other than PKI, when the user clicks Log Out, NiFi Registry invalidates the authentication token on the client side but not on the server side. This permits the user's client-side token to be used for up to 12 hours after logging out to make API requests to NiFi Registry. </p>
        <p>Mitigation: The fix to invalidate the server-side authentication token immediately after the user clicks 'Log Out' was applied in the Apache NiFi Registry 0.6.0 release. </p>
        <p>CVE Link: <a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-9482" target="_blank">Mitre Database: CVE-2020-9482</a></p>
        <p>NiFi Registry Jira: <a href="https://issues.apache.org/jira/browse/NIFIREG-361" target="_blank">NIFIREG-361</a></p>
        <p>NiFi Registry PR: <a href="https://github.com/apache/nifi-registry/pull/259" target="_blank">PR 259</a></p>
        <p>Released: April 7, 2020</p>
    </div>
</div>
<!-- Dependency Vulnerabilities -->
<div class="row">
    <div class="large-12 columns features">
        <h2><a id="0.6.0-dependency-vulnerabilities" href="#0.6.0-dependency-vulnerabilities">Dependency Vulnerabilities</a></h2>
    </div>
</div>
<div class="row" style="background-color: aliceblue">
    <div class="large-12 columns">
        <p><a id="CVE-2019-14540" href="#CVE-2019-14540"><strong>CVE-2019-14540</strong></a>: Apache NiFi Registry's jackson-databind usage</p>
        <p>Severity: <strong>Critical</strong></p>
        <p>Versions Affected:</p>
        <ul>
            <li>Apache NiFi Registry 0.5.0 - 0.5.0</li>
        </ul>
        </p>
        <p>Description: The com.fasterxml.jackson.core:jackson-databind dependency in the nifi-registry-framework was vulnerable. See <a href="https://nvd.nist.gov/vuln/detail/CVE-2019-14540" target="_blank">NIST NVD CVE-2019-14540</a> for more information. </p>
        <p>Mitigation: jackson-databind was upgraded from 2.9.9.1 to 2.10.3 for the Apache NiFi Registry 0.6.0 release. It is unlikely that NiFi Registry's usage of this dependency could be exploited as described by the CVE, however we consider it prudent for users running a prior 0.x release to upgrade to the 0.6.0 release. </p>
        <p>CVE Link: <a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-14540" target="_blank">Mitre Database: CVE-2019-14540</a></p>
        <p>NiFi Registry Jira: <a href="https://issues.apache.org/jira/browse/NIFIREG-376" target="_blank">NIFIREG-376</a></p>
        <p>NiFi Registry PR: <a href="https://github.com/apache/nifi-registry/pull/271" target="_blank">PR 271</a></p>
        <p>Released: April 7, 2020</p>
    </div>
</div>
<div class="row">
    <div class="large-12 columns">
        <p><a id="CVE-2019-10782" href="#CVE-2019-10782"><strong>CVE-2019-10782</strong></a>: Apache NiFi's Registry's checkstyle usage</p>
        <p>Severity: <strong>Moderate</strong></p>
        <p>Versions Affected:</p>
        <ul>
            <li>Apache NiFi Registry 0.1.0 - 0.5.0</li>
        </ul>
        </p>
        <p>Description: The com.puppycrawl.tools:checkstyle dependency was vulnerable. See <a href="https://nvd.nist.gov/vuln/detail/CVE-2019-10782" target="_blank">NIST NVD CVE-2019-10782</a> for more information. </p>
        <p>Mitigation: The checkstyle dependency was upgraded from 8.21 to 8.31 for the Apache NiFi Registry 0.6.0 release. It is unlikely that NiFi Registry's usage of this dependency could be exploited as described by the CVE, however we consider it prudent for users running a prior 0.x release to upgrade to the 0.6.0 release. </p>
        <p>CVE Link: <a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-10782" target="_blank">Mitre Database: CVE-2019-10782</a></p>
        <p>NiFi Registry Jira: <a href="https://issues.apache.org/jira/browse/NIFIREG-364" target="_blank">NIFIREG-364</a></p>
        <p>NiFi Registry PR: <a href="https://github.com/apache/nifi-registry/pull/270" target="_blank">PR 270</a></p>
        <p>Released: April 7, 2020</p>
    </div>
</div>
<div class="row" style="background-color: aliceblue">
    <div class="large-12 columns">
        <p><a id="CVE-2018-10054" href="#CCVE-2018-10054"><strong>CVE-2018-10054</strong></a>: Apache NiFi's Registry h2 database usage</p>
        <p>Severity: <strong>Important</strong></p>
        <p>Versions Affected:</p>
        <ul>
            <li>Apache NiFi Registry 0.5.0 - 0.5.0</li>
        </ul>
        </p>
        <p>Description: The com.h2database:h2 dependency in the nifi-registry-framework module was vulnerable. See <a href="https://nvd.nist.gov/vuln/detail/CVE-2018-10054" target="_blank">NIST NVD CVE-2018-10054</a> for more information. </p>
        <p>Mitigation: The h2 database dependency was upgraded from 1.4.197 to 1.4.199 for the Apache NiFi Registry 0.6.0 release. It is unlikely that NiFi Registry's usage of this dependency could be exploited as described by the CVE, however we consider it prudent for users running a prior 0.x release to upgrade to the 0.6.0 release. </p>
        <p>CVE Link: <a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-10054" target="_blank">Mitre Database: CVE-2018-10054</a></p>
        <p>NiFi Registry Jira: <a href="https://issues.apache.org/jira/browse/NIFIREG-372" target="_blank">NIFIREG-372</a></p>
        <p>NiFi Registry PR: <a href="https://github.com/apache/nifi-registry/pull/267" target="_blank">PR 267</a></p>
        <p>Released: April 7, 2020</p>
    </div>
</div>
<div class="medium-space"></div>
<div class="row">
    <div class="large-12 columns features">
        <h2>Severity Levels</h2>
    </div>
</div>
<div class="row">
    <p class="description">The following lists the severity levels and criteria followed. It closely aligns to and borrows from Apache HTTP Server Project <a
            href="https://httpd.apache.org/security/impact_levels.html">guidance.</a></p>
    <div class="large-12 columns">
        <table>
            <tr>
                <td>Critical</td>
                <td>A vulnerability rated with a critical impact is one which could be potentially exploited by a remote attacker to get NiFi Registry to execute arbitrary code either as the user the server is
                    running as or root. These are the sorts of vulnerabilities that could be exploited automatically by worms.
                </td>
            </tr>
            <tr>
                <td>Important</td>
                <td>A vulnerability rated as Important impact is one which could result in the compromise of data or availability of the server. For Apache NiFi Registry this includes issues that allow an easy
                    remote denial of service or access to files that should be otherwise prevented by limits or authentication.
                </td>
            </tr>
            <tr>
                <td>Moderate</td>
                <td>A vulnerability is likely to be rated as Moderate if there is significant mitigation to make the issue less of an impact. This might be done because the flaw does not affect likely
                    configurations, or it is a configuration that isn't widely used, or where a remote user must be authenticated in order to exploit the issue.
                </td>
            </tr>
            <tr>
                <td>Low</td>
                <td>All other security flaws are classed as a Low impact. This rating is used for issues that are believed to be extremely hard to exploit, or where an exploit gives minimal
                    consequences.
                </td>
            </tr>
        </table>
    </div>
</div>
