<div dir="ltr">Since the target volume can often be specified during installation, it seems that we would need to specify the volume. However that is going to require the ability to enumerate the volumes via OVAL, and an existing way to do that isn&#39;t jumping out at me.<div>

<br></div><div>(Incidentally, the diskutil_state documentation has a minor error, starting with &quot;The package_state element...&quot; - I was looking to see if the volumes could be enumerated via a diskutil_object and noticed that)</div>
<div><br></div><div>I wonder how reliable this test will be for accurately detecting installed software given that the database typically(?) is not updated when a package is uninstalled. If the software came with an uninstaller and that was used then it hopefully remove the data, but if the user just moves a .app package to the trash the data reported by pkgutil remains. Of course on any platform there&#39;s a possibility of false positives when an application is removed by means that don&#39;t remove the artifacts used to detect the installation (e.g. deleting a Windows app without running the uninstaller, leaving behind the registry data used to detect it). This false positive can often be avoided by methods like doublechecking that the application files are actually present where the installation info says it was installed. This is rarely done though, most likely because the author assumes that the user uninstalled the software the recommended way (that fully cleaned up after itself), and a false positive for not uninstalling it the right way is a fair punishment. Here it seems like it may be more problematic because just deleting the .app is what Apple recommends for non-App Store apps, and that doesn&#39;t fully clean up after itself, making false positives much more likely. I guess that means we&#39;ll need to take the extra step to verify that the files are present, which means we&#39;ll need to get the --files info back from this test so we know where to look. It seems like the location element would be sufficient, but if that isn&#39;t always populated (and in my brief testing that appears to be the case), then it appears --files may be the way to go.</div>

<div class="gmail_extra"><br></div><div class="gmail_extra"><div style="color:rgb(136,136,136);font-family:arial,sans-serif;font-size:13.200000762939453px">Shane Shaffer</div><div style="color:rgb(136,136,136);font-family:arial,sans-serif;font-size:13.200000762939453px">
G2, Inc.</div><div style="color:rgb(136,136,136);font-family:arial,sans-serif;font-size:13.200000762939453px"><a href="mailto:shane.shaffer@g2-inc.com" target="_blank" style="color:rgb(28,81,168)">shane.shaffer@g2-inc.com</a>  </div>
<div style="color:rgb(136,136,136);font-family:arial,sans-serif;font-size:13.200000762939453px"><br></div><br><div class="gmail_quote">On Thu, Jul 11, 2013 at 9:56 AM, Jacobsen, Jasen W. <span dir="ltr">&lt;<a href="mailto:jasenj1@mitre.org" target="_blank">jasenj1@mitre.org</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">



<div style="word-wrap:break-word">
<div style="font-size:medium;font-family:Calibri">
<p class="" style="margin:0in 0in 0.0001pt;font-size:12pt;font-family:&#39;Times New Roman&#39;,serif">
<span style="font-size:10.5pt;font-family:Calibri,sans-serif">The Mac OS Installer program writes receipt files to a database after installing software. This receipt information includes version, install time, install volume, install location, and any
 groups the installed package may be a part of. This receipt information is precisely the type of data OVAL is frequently used to examine. This sort of information is already collected in other component schemas using the dpkginfo, rmpinfo, and other tests.<u></u><u></u></span></p>

</div>
<div style="font-size:medium;font-family:Calibri">
<p class="" style="margin:0in 0in 0.0001pt;font-size:12pt;font-family:&#39;Times New Roman&#39;,serif">
<span style="font-size:10.5pt;font-family:Calibri,sans-serif"> </span></p>
</div>
<div style="font-size:medium;font-family:Calibri">
<p class="" style="margin:0in 0in 0.0001pt;font-size:12pt;font-family:&#39;Times New Roman&#39;,serif">
<span style="font-size:10.5pt;font-family:Calibri,sans-serif">The Apple provided way to get at this information is the &quot;pkgutil&quot; command line tool. It is proposed to create an OVAL test and supporting items based on the<u></u><u></u></span></p>

</div>
<div style="font-size:medium;font-family:Calibri">
<p class="" style="margin:0in 0in 0.0001pt;font-size:12pt;font-family:&#39;Times New Roman&#39;,serif">
<span style="font-size:10.5pt;font-family:Calibri,sans-serif">&quot;pkgutil --pkg-info&quot; command output.<u></u><u></u></span></p>
</div>
<div style="font-size:medium;font-family:Calibri">
<p class="" style="margin:0in 0in 0.0001pt;font-size:12pt;font-family:&#39;Times New Roman&#39;,serif">
<span style="font-size:10.5pt;font-family:Calibri,sans-serif"> </span></p>
</div>
<div style="font-size:medium;font-family:Calibri">
<p class="" style="margin:0in 0in 0.0001pt;font-size:12pt;font-family:&#39;Times New Roman&#39;,serif">
<span style="font-size:10.5pt;font-family:Calibri,sans-serif">A detailed paper describing this test can be found at <a href="https://github.com/jasenj1/Sandbox/blob/master/resources/x-macos-pkginfo/Mac%20OS%20X%20pkginfo%20Test.docx" style="color:purple" target="_blank">https://github.com/OVALProject/Sandbox/blob/master/resources/x-macos-pkginfo/Mac%20OS%20X%20pkginfo%20Test.docx</a><u></u><u></u></span></p>

</div>
<div style="font-size:medium;font-family:Calibri">
<p class="" style="margin:0in 0in 0.0001pt;font-size:12pt;font-family:&#39;Times New Roman&#39;,serif">
<span style="font-size:10.5pt;font-family:Calibri,sans-serif"> </span></p>
</div>
<div style="font-size:medium;font-family:Calibri">
<p class="" style="margin:0in 0in 0.0001pt;font-size:12pt;font-family:&#39;Times New Roman&#39;,serif">
<span style="font-size:10.5pt;font-family:Calibri,sans-serif">The proposed schema can be viewed at <a href="https://github.com/jasenj1/Sandbox/blob/master/x-macos-pkginfo.xsd" style="color:purple" target="_blank">https://github.com/OVALProject/Sandbox/blob/master/x-macos-pkginfo.xsd</a><u></u><u></u></span></p>

</div>
<div style="font-size:medium;font-family:Calibri">
<p class="" style="margin:0in 0in 0.0001pt;font-size:12pt;font-family:&#39;Times New Roman&#39;,serif">
<span style="font-size:10.5pt;font-family:Calibri,sans-serif"> </span></p>
</div>
<div style="font-size:medium;font-family:Calibri">
<p class="" style="margin:0in 0in 0.0001pt;font-size:12pt;font-family:&#39;Times New Roman&#39;,serif">
<span style="font-size:10.5pt;font-family:Calibri,sans-serif">The Linux rpminfo test is very similar to what is being proposed and provides a good model. <a href="http://oval.mitre.org/language/version5.10.1/ovaldefinition/documentation/linux-definitions-schema.html#rpminfo_test" style="color:purple" target="_blank">http://oval.mitre.org/language/version5.10.1/ovaldefinition/documentation/linux-definitions-schema.html#rpminfo_test</a><u></u><u></u></span></p>

</div>
<div style="font-size:medium;font-family:Calibri">
<p class="" style="margin:0in 0in 0.0001pt;font-size:12pt;font-family:&#39;Times New Roman&#39;,serif">
<span style="font-size:10.5pt;font-family:Calibri,sans-serif"> </span></p>
</div>
<div style="font-size:medium;font-family:Calibri">
<p class="" style="margin:0in 0in 0.0001pt;font-size:12pt;font-family:&#39;Times New Roman&#39;,serif">
<span style="font-size:10.5pt;font-family:Calibri,sans-serif">The structure of the proposed test is as follows:<u></u><u></u></span></p>
</div>
<div style="font-size:medium;font-family:Calibri">
<p class="" style="margin:0in 0in 0.0001pt;font-size:12pt;font-family:&#39;Times New Roman&#39;,serif">
<span style="font-size:10.5pt;font-family:Calibri,sans-serif"> </span></p>
</div>
<div style="font-size:medium;font-family:Calibri">
<p class="" style="margin:0in 0in 0.0001pt;font-size:12pt;font-family:&#39;Times New Roman&#39;,serif">
<span style="font-size:10.5pt;font-family:Calibri,sans-serif">pkginfo_object<u></u><u></u></span></p>
</div>
<div style="font-size:medium;font-family:Calibri">
<p class="" style="margin:0in 0in 0.0001pt;font-size:12pt;font-family:&#39;Times New Roman&#39;,serif">
<span><span style="font-size:10.5pt;font-family:Calibri,sans-serif">             </span></span><span style="font-size:10.5pt;font-family:Calibri,sans-serif">package_id – The ID of the package to examine            <u></u><u></u></span></p>

</div>
<div style="font-size:medium;font-family:Calibri">
<p class="" style="margin:0in 0in 0.0001pt;font-size:12pt;font-family:&#39;Times New Roman&#39;,serif">
<span><span style="font-size:10.5pt;font-family:Calibri,sans-serif">             </span></span><span style="font-size:10.5pt;font-family:Calibri,sans-serif">(volume? - pkgutil allows a different volume to be specified. It&#39;s
 unclear if this would be needed or useful.)<u></u><u></u></span></p>
</div>
<div style="font-size:medium;font-family:Calibri">
<p class="" style="margin:0in 0in 0.0001pt;font-size:12pt;font-family:&#39;Times New Roman&#39;,serif">
<span style="font-size:10.5pt;font-family:Calibri,sans-serif"> </span></p>
</div>
<div style="font-size:medium;font-family:Calibri">
<p class="" style="margin:0in 0in 0.0001pt;font-size:12pt;font-family:&#39;Times New Roman&#39;,serif">
<span style="font-size:10.5pt;font-family:Calibri,sans-serif">pkginfo_state &amp; pkginfo_item<u></u><u></u></span></p>
</div>
<div style="font-size:medium;font-family:Calibri">
<p class="" style="margin:0in 0in 0.0001pt;font-size:12pt;font-family:&#39;Times New Roman&#39;,serif">
<span><span style="font-size:10.5pt;font-family:Calibri,sans-serif">             </span></span><span style="font-size:10.5pt;font-family:Calibri,sans-serif">package_id – The ID of the package examined<u></u><u></u></span></p>

</div>
<div style="font-size:medium;font-family:Calibri">
<p class="" style="margin:0in 0in 0.0001pt;font-size:12pt;font-family:&#39;Times New Roman&#39;,serif">
<span><span style="font-size:10.5pt;font-family:Calibri,sans-serif">             </span></span><span style="font-size:10.5pt;font-family:Calibri,sans-serif">version – The version of the package<u></u><u></u></span></p>
</div>
<div style="font-size:medium;font-family:Calibri">
<p class="" style="margin:0in 0in 0.0001pt;font-size:12pt;font-family:&#39;Times New Roman&#39;,serif">
<span><span style="font-size:10.5pt;font-family:Calibri,sans-serif">             </span></span><span style="font-size:10.5pt;font-family:Calibri,sans-serif">install_time – When the package was installed. Given in seconds since
 the UNIX epoch.<u></u><u></u></span></p>
</div>
<div style="font-size:medium;font-family:Calibri">
<p class="" style="margin:0in 0in 0.0001pt;font-size:12pt;font-family:&#39;Times New Roman&#39;,serif">
<span><span style="font-size:10.5pt;font-family:Calibri,sans-serif">             </span></span><span style="font-size:10.5pt;font-family:Calibri,sans-serif">volume – The volume the package is installed on.<u></u><u></u></span></p>

</div>
<div style="font-size:medium;font-family:Calibri">
<p class="" style="margin:0in 0in 0.0001pt;font-size:12pt;font-family:&#39;Times New Roman&#39;,serif">
<span><span style="font-size:10.5pt;font-family:Calibri,sans-serif">             </span></span><span style="font-size:10.5pt;font-family:Calibri,sans-serif">location – The path where the package was installed, if specified
 at time of install.<u></u><u></u></span></p>
</div>
<div style="font-size:medium;font-family:Calibri">
<p class="" style="margin:0in 0in 0.0001pt;font-size:12pt;font-family:&#39;Times New Roman&#39;,serif">
<span><span style="font-size:10.5pt;font-family:Calibri,sans-serif">             </span></span><span style="font-size:10.5pt;font-family:Calibri,sans-serif">group – The group(s) the package is a part of. Element repeats for
 multiple groups.<u></u><u></u></span></p>
</div>
<div style="font-size:medium;font-family:Calibri">
<p class="" style="margin:0in 0in 0.0001pt;font-size:12pt;font-family:&#39;Times New Roman&#39;,serif">
<span><span style="font-size:10.5pt;font-family:Calibri,sans-serif">             </span></span><span style="font-size:10.5pt;font-family:Calibri,sans-serif">(filepath?– file(s) associated with the package. See question below
 for discussion of this.)<u></u><u></u></span></p>
</div>
<div style="font-size:medium;font-family:Calibri">
<p class="" style="margin:0in 0in 0.0001pt;font-size:12pt;font-family:&#39;Times New Roman&#39;,serif">
<span style="font-size:10.5pt;font-family:Calibri,sans-serif"> </span></p>
</div>
<div style="font-size:medium;font-family:Calibri">
<p class="" style="margin:0in 0in 0.0001pt;font-size:12pt;font-family:&#39;Times New Roman&#39;,serif">
<span style="font-size:10.5pt;font-family:Calibri,sans-serif">Questions:<u></u><u></u></span></p>
</div>
<div>
<p class="" style="font-size:12pt;margin:0in 0in 0.0001pt;font-family:&#39;Times New Roman&#39;,serif">
<span style="font-size:10.5pt;font-family:Calibri,sans-serif"><br>
</span></p>
<p class="" style="margin:0in 0in 0.0001pt"><font face="Calibri,sans-serif" size="3">Exactly what portions of the information provided by --pkg-info are needed for OVAL? e.g. Volume, location, group, filepath?</font></p>

<p class="" style="font-size:12pt;margin:0in 0in 0.0001pt;font-family:&#39;Times New Roman&#39;,serif">
<span style="font-size:10.5pt;font-family:Calibri,sans-serif"> </span></p>
</div>
<div style="font-size:medium;font-family:Calibri">
<p class="" style="margin:0in 0in 0.0001pt;font-size:12pt;font-family:&#39;Times New Roman&#39;,serif">
<span style="font-size:10.5pt;font-family:Calibri,sans-serif">Is there a public API to get the information provided by pkgutil? Or is calling the command the only way to get it?<u></u><u></u></span></p>
</div>
<div style="font-size:medium;font-family:Calibri">
<p class="" style="margin:0in 0in 0.0001pt;font-size:12pt;font-family:&#39;Times New Roman&#39;,serif">
<span style="font-size:10.5pt;font-family:Calibri,sans-serif"> </span></p>
</div>
<div style="font-size:medium;font-family:Calibri">
<p class="" style="margin:0in 0in 0.0001pt;font-size:12pt;font-family:&#39;Times New Roman&#39;,serif">
<span style="font-size:10.5pt;font-family:Calibri,sans-serif">The rpminfo test has a &quot;filepaths&quot; behavior that will collect all of the files associated with a package. pkgutil supports the same function using the &quot;-- files&quot; command. Should this be added
 to the pkginfo test?</span></p>
</div>
</div>

<br>_______________________________________________<br>
SCAP-On-Apple mailing list<br>
<a href="mailto:SCAP-On-Apple@lists.macosforge.org">SCAP-On-Apple@lists.macosforge.org</a><br>
<a href="https://lists.macosforge.org/mailman/listinfo/scap-on-apple" target="_blank">https://lists.macosforge.org/mailman/listinfo/scap-on-apple</a><br>
<br></blockquote></div><br></div></div>