<section title="14.2. Application Allow listing"><subsection title="Objective"><paragraph
    title="14.2.1."


><![CDATA[<p>Only approved applications are used on agency controlled systems.</p>]]></paragraph>
 </subsection>
<subsection title="Context"> <block title="Scope"><paragraph
    title="14.2.2."


><![CDATA[<p>This section covers information on the use of technical controls to restrict the specific applications that can be accessed by a user or group of users.</p>]]></paragraph>
</block>
</subsection>
<subsection title="References"><paragraph
    title="14.2.3."


><![CDATA[<p>Further information on software restriction policies as implemented by Microsoft can be found at:</p><table class="table-main">
<tbody>
<tr>
<td><strong>Reference&nbsp;</strong></td>
<td><strong>Title</strong></td>
<td style="text-align: center;"><strong>Publisher</strong></td>
<td><strong>Source</strong></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><strong>Using Software Restriction Policies to Protect Against Unauthorized Software</strong></td>
<td style="text-align: center;">Microsoft</td>
<td><a rel="noopener noreferrer" href="https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-xp/bb457006(v=technet.10)?redirectedfrom=MSDN" target="_blank">https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-xp/bb457006(v=technet.10)?redirectedfrom=MSDN</a></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><strong>APPLOCKER</strong></td>
<td style="text-align: center;">Microsoft</td>
<td><a rel="noopener noreferrer" href="https://docs.microsoft.com/en-nz/windows/security/threat-protection/applocker/applocker-overview" target="_blank">https://docs.microsoft.com/en-nz/windows/security/threat-protection/applocker/applocker-overview</a>&nbsp;<a rel="noopener noreferrer" href="http://www.asd.gov.au/publications/protect/Application_Whitelisting.pdf" target="_blank"></a></td>
</tr>
<tr>
<td><strong>SP&nbsp;800-167</strong></td>
<td><strong>NIST Special Publication 800-167 - Guide to Application Whitelisting</strong></td>
<td style="text-align: center;">NIST</td>
<td><a rel="noopener noreferrer" href="https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-167.pdf" target="_blank">https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-167.pdf [PDF, 622 KB]</a></td>
</tr>
</tbody>
</table>]]></paragraph>
 </subsection>
<subsection title="Rationale &amp; Controls"> <block title="Application allow listing"><paragraph
    title="14.2.4.R.01."

    tags="Technical,Application allow listing,Software Security"


><![CDATA[<p>Application access control can be an effective mechanism to prevent the successful compromise of an agency system resulting from the exploitation of a vulnerability in an application or the execution of malicious code.</p>]]></paragraph>
<paragraph
    title="14.2.4.R.02."

    tags="Technical,Application allow listing,Software Security"


><![CDATA[<p>Defining a list of trusted executables, an allow list, is a practical and secure method of securing a system rather than relying on a list of bad executables, a deny list, to be prevented from running.</p>]]></paragraph>
<paragraph
    title="14.2.4.R.03."

    tags="Technical,Application allow listing,Software Security"


><![CDATA[<p>Application allow listing is considered only one part of a defence-in-depth strategy in order to prevent a successful attack, or to help mitigate consequences arising from an attack.</p>]]></paragraph>
<paragraph
    title="14.2.4.C.01."

    tags="Technical,Application allow listing,Software Security"


    classification="All Classifications"
    compliance="Should"
    cid="1234"
><![CDATA[<p>Agencies SHOULD implement application allow listing as part of the SOE for workstations, servers and any other network device.</p>]]></paragraph>
</block>
<block title="System user permissions"><paragraph
    title="14.2.5.R.01."

    tags="Technical,Application allow listing,Software Security,System Access"


><![CDATA[<p>An average system user requires access to only a few applications, or groups of applications, in order to conduct their work. Restricting the system user’s permissions to execute code to this limited set of applications reduces the attack surface of the system.</p>]]></paragraph>
<paragraph
    title="14.2.5.C.01."

    tags="Technical,Application allow listing,Software Security,System Access"


    classification="All Classifications"
    compliance="Must"
    cid="1242"
><![CDATA[<p>Agencies MUST ensure that a system user cannot disable the application allow listing mechanism.</p>]]></paragraph>
<paragraph
    title="14.2.5.C.02."

    tags="Technical,Application allow listing,Software Security,System Access"


    classification="All Classifications"
    compliance="Should"
    cid="1246"
><![CDATA[<p>Agencies SHOULD prevent a system user from running arbitrary executables.</p>]]></paragraph>
<paragraph
    title="14.2.5.C.03."

    tags="Technical,Application allow listing,Software Security,System Access"


    classification="All Classifications"
    compliance="Should"
    cid="896"
><![CDATA[<p>Agencies SHOULD restrict a system user’s rights in order to permit them to only execute a specific set of predefined executables as required for them to complete their duties.</p>]]></paragraph>
<paragraph
    title="14.2.5.C.04."

    tags="Technical,Application allow listing,Software Security,System Access"


    classification="All Classifications"
    compliance="Should"
    cid="898"
><![CDATA[<p>Agencies SHOULD ensure that application allow listing does not replace the antivirus and anti-malware software within a system.</p>]]></paragraph>
</block>
<block title="System administrator permissions"><paragraph
    title="14.2.6.R.01."

    tags="Technical,Application allow listing,Software Security"


><![CDATA[<p>Since the consequences of running malicious code as a privileged user are much more severe than an unprivileged user, an application allow list implementation should be strictly enforced for system administrators.</p>]]></paragraph>
<paragraph
    title="14.2.6.C.01."

    tags="Technical,Application allow listing,Software Security"


    classification="All Classifications"
    compliance="Should"
    cid="907"
><![CDATA[<p>Agencies SHOULD ensure that system administrators are not automatically exempt from application allow list policy.</p>]]></paragraph>
</block>
<block title="Application allow listing configuration"><paragraph
    title="14.2.7.R.01."

    tags="Technical,Application allow listing,Software Security"


><![CDATA[<p>A decision to execute a routine, application, or other programme should be made based on a validated cryptographic hash as it is more secure than a decision based on the executable’s signature, path or parent folder.</p>]]></paragraph>
<paragraph
    title="14.2.7.R.02."

    tags="Technical,Application allow listing,Software Security"


><![CDATA[<p>In order for application allow listing to be effective an agency MUST initially gather information on necessary executables and applications in order to ensure that the implementation is fully effective.</p>]]></paragraph>
<paragraph
    title="14.2.7.R.03."

    tags="Technical,Application allow listing,Software Security"


><![CDATA[<p>Different application allow listing controls, such as restricting execution based on cryptographic hash, filename, pathname or folder, have various advantages and disadvantages.  Agencies need to be aware of this when implementing application allow listing.</p>]]></paragraph>
<paragraph
    title="14.2.7.R.04."

    tags="Technical,Application allow listing,Software Security"


><![CDATA[<p>Application allow listing based on parent folder or executable path is futile if access control list permissions allow a system user to write to the folders or overwrite permitted executables.</p>]]></paragraph>
<paragraph
    title="14.2.7.R.05."

    tags="Technical,Application allow listing,Software Security"


><![CDATA[<p>Executables may create multiple processes in the course of execution.  These may be identified through examination of programme specifications, testing in a "sand-boxed" environment before development, and logs of any processes spawned or created.</p>]]></paragraph>
<paragraph
    title="14.2.7.R.06."

    tags="Technical,Application allow listing,Software Security"


><![CDATA[<p>Spawned processes may behave in ways that can compromise system security, change security settings and modify access permissions.  Clearly this can be undesirable behaviour.</p>]]></paragraph>
<paragraph
    title="14.2.7.R.07."

    tags="Technical,Application allow listing,Software Security"


><![CDATA[<p>Adequate logging information can allow system administrators to further refine the application allow listing implementation and detect a pattern of deny decisions for a system user.</p>]]></paragraph>
<paragraph
    title="14.2.7.R.08."

    tags="Technical,Application allow listing,Software Security"


><![CDATA[<p>An example of relevant information that could be included in logs for application allow listing implementations would be decisions to deny execution incorporating information that would present a reviewer with evidence of misuse.</p>]]></paragraph>
<paragraph
    title="14.2.7.C.01."

    tags="Technical,Application allow listing,Software Security"


    classification="All Classifications"
    compliance="Should"
    cid="934"
><![CDATA[<p>Agencies SHOULD ensure that the default policy is to deny the execution of software.</p>]]></paragraph>
<paragraph
    title="14.2.7.C.02."

    tags="Technical,Application allow listing,Software Security"


    classification="All Classifications"
    compliance="Should"
    cid="936"
><![CDATA[<p>Agencies SHOULD ensure that application allow listing is used in addition to a strong access control list model and the use of limited privilege accounts.</p>]]></paragraph>
<paragraph
    title="14.2.7.C.03."

    tags="Technical,Application allow listing,Software Security"


    classification="All Classifications"
    compliance="Should"
    cid="940"
><![CDATA[<p>Agencies SHOULD plan and test application allow listing mechanisms and processes thoroughly prior to implementation.</p>]]></paragraph>
<paragraph
    title="14.2.7.C.04."

    tags="Technical,Application allow listing,Software Security"


    classification="All Classifications"
    compliance="Should"
    cid="942"
><![CDATA[<p>Agencies SHOULD restrict the decision whether to run an executable based on the following, in the order of preference shown:</p><ol>
<li>validates cryptographic hash;</li>
<li>executable absolute path;</li>
<li>digital signature; and</li>
<li>parent folder.</li>
</ol>]]></paragraph>
<paragraph
    title="14.2.7.C.05."

    tags="Technical,Application allow listing,Software Security"


    classification="All Classifications"
    compliance="Should"
    cid="945"
><![CDATA[<p>Agencies SHOULD restrict the process creation permissions of any executables which are permitted to run by the application allow listing controls.</p>]]></paragraph>
<paragraph
    title="14.2.7.C.06."

    tags="Technical,Application allow listing,Software Security"


    classification="All Classifications"
    compliance="Should"
    cid="5529"
><![CDATA[<p>Agencies SHOULD validate executable behaviour, in particular process creation, permission changes and access control modifications through examination, testing, monitoring and restriction of the permissions.</p>]]></paragraph>
<paragraph
    title="14.2.7.C.07."

    tags="Technical,Application allow listing,Software Security"


    classification="All Classifications"
    compliance="Should"
    cid="947"
><![CDATA[<p>Logs from the application allow listing implementation SHOULD include all relevant information.</p>]]></paragraph>
</block>
</subsection>
</section>
