The following is a description of the elements, types, and attributes that compose the Android specific system characteristic items found in Open Vulnerability and Assessment Language (OVAL). Each item is an extension of the standard item element defined in the Core System Characteristic Schema. Through extension, each item inherits a set of elements and attributes that are shared amongst all OVAL Items. Each item is described in detail and should provide the information necessary to understand what each element and attribute represents. This document is intended for developers and assumes some familiarity with XML. A high level description of the interaction between the different tests and their relationship to the Core System Characteristic Schema is not outlined here. The OVAL Schema is maintained by The MITRE Corporation and developed by the public OVAL Community. For more information, including how to get involved in the project and how to submit change requests, please visit the OVAL website at http://oval.mitre.org. Android System Characteristics 5.10 4/8/2014 08:13:00 AM Copyright (c) 2002-2014, The MITRE Corporation. All rights reserved. The contents of this file are subject to the terms of the OVAL License located at http://oval.mitre.org/oval/about/termsofuse.html. See the OVAL License for the specific language governing permissions and limitations for use of this schema. When distributing copies of the OVAL Schema, this license header must be included. This item stores information about applications installed on the device. Name of the application. Linux userid assigned to the application. (In some cases multiple applications can share a userid.) One element for each group id that the application belongs to. Name of the package. Data directory assigned to the application. Application version. True if the application is enabled. One element for each permission granted to the application. Directory where the application's native libraries (if any) have been installed. Hexadecimal string of the signing certificate corresponding with the key used to sign the application package. Only the actual signing certificate should be included, not CA certificates in the chain (if applicable). Time at which the app was first installed, expressed in milliseconds since January 1, 1970 00:00:00 UTC. Time at which the app was last updated, expressed in milliseconds since January 1, 1970 00:00:00 UTC. From ApplicationInfo.sourceDir, the full path to the location of the publicly available parts of the application package. This holds information about device Bluetooth settings. True if device Bluetooth is currently in discoverable mode. True if device Bluetooth is currently enabled. This item is used to check camera-related information. If true, then a policy is being enforced disabling use of the camera. The policy is only available in Android 4.0 and up (and potentially on older Android devices if specifically added by the device vendor). This item stores information about the certificates installed on the device. Hexadecimal string of each certificate in the OS's trusted certificate store, including both certificates installed by the system and by users. System trusted certificates that were disabled by the user are not included here. This holds information about miscellaneous device settings. True if Android Debug Bridge (USB debugging) is enabled. True if mock locations and location provider status can be injected into Android's Location Manager. True if applications can be installed from "unknown sources". One element per application that holds device administrator access. Contains the application's package name. True if the user prefers the date and time to be automatically fetched from the network. True if the user prefers the time zone to be automatically fetched from the network. True if USB mass storage is enabled on the device, otherwise false. Device encryption information. True if a policy is in place requiring the device storage to be encrypted. (android.app.admin.DevicePolicyManager.getStorageEncryption()) The current status of device encryption. (android.app.admin.DevicePolicyManager.getStorageEncryptionStatus()) Either ENCRYPTION_STATUS_UNSUPPORTED, ENCRYPTION_STATUS_INACTIVE, ENCRYPTION_STATUS_ACTIVATING, or ENCRYPTION_STATUS_ACTIVE as documented in the Android SDK's DevicePolicyManager class. This holds information about location based service status. A boolean value indicating whether the GPS location provider is enabled. A boolean value indicating whether the network location provider is enabled. This holds information about networks configured and their preference. True if airplane mode is enabled. True if NFC is enabled on the device. Specific policy items associated with passwords and the device screen lock. Maximum number of failed user authentications before device wipe. Zero means there is no policy in place. Specifies the length of password history maintained (passwords in the history cannot be reused). Zero means there is no policy in place. The current minimum required password quality required by device policy. Represented as a string corresponding with a valid Android password quality, currently one of: PASSWORD_QUALITY_ALPHABETIC PASSWORD_QUALITY_ALPHANUMERIC PASSWORD_QUALITY_BIOMETRIC_WEAK PASSWORD_QUALITY_COMPLEX PASSWORD_QUALITY_NUMERIC PASSWORD_QUALITY_SOMETHING PASSWORD_QUALITY_UNSPECIFIED Minimum length of characters password must have. This constraint is only imposed if the password quality is one of PASSWORD_QUALITY_NUMERIC, PASSWORD_QUALITY_ALPHABETIC, PASSWORD_QUALITY_ALPHANUMERIC, or PASSWORD_QUALITY_COMPLEX. Minimum number of letters password must have. This constraint is only imposed if the password quality is PASSWORD_QUALITY_COMPLEX. Minimum number of lower case letters password must have. This constraint is only imposed if the password quality is PASSWORD_QUALITY_COMPLEX. Minimum number of non-letter characters password must have. This constraint is only imposed if the password quality is PASSWORD_QUALITY_COMPLEX. Minimum number of numeric characters password must have. This constraint is only imposed if the password quality is PASSWORD_QUALITY_COMPLEX. Minimum number of symbol characters password must have. This constraint is only imposed if the password quality is PASSWORD_QUALITY_COMPLEX. Minimum number of upper case letters password must have. This constraint is only imposed if the password quality is PASSWORD_QUALITY_COMPLEX. Gets the current password expiration timeout policy, in milliseconds. Zero means there is no policy in place. When true, the most recently keyed in password character is shown to the user on the screen (the previously entered characters are masked out). When false, all keyed in password characters are immediately masked out. This setting is manageable by the device user through the device settings. When true, the current device password is compliant with the password policy. (If the policy was recently established, it is possible that a password compliant with the policy may not yet be in place.) The number of times the user has failed at entering a password since the last successful password entry. The current policy for the highest screen lock timeout the user is allowed to specify. 0 indicates no restriction. (The user may still specify lower values in the device settings.) The current policy for lockscreen widgets as retrieved by DevicePolicyManager.getKeyguardDisabledFeatures. May be set to one of KEYGUARD_DISABLE_FEATURES_ALL, KEYGUARD_DISABLED_FEATURES_NONE, KEYGUARD_DISABLE_SECURE_CAMERA, or KEYGUARD_DISABLE_WIDGETS_ALL. Only available in Android 4.2 and up. This item stores information about the Operating System and hardware. The hardware model, as provided by android.os.Build.HARDWARE using the Android SDK. The device manufacturer, as provided by android.os.Build.MANUFACTURER using the Android SDK. The device model identifier, as provided by android.os.Build.MODEL using the Android SDK. The product name, as provided by android.os.Build.PRODUCT using the Android SDK. The name of the instruction set of native code, as provided by android.os.Build.CPU_ABI using the Android SDK. The name of the second instruction set of native code, as provided by android.os.Build.CPU_ABI2 using the Android SDK. Build fingerprint, as provided by android.os.Build.FINGERPRINT using the Android SDK. Operating system version code, as provided by android.os.Build.VERSION.CODENAME using the Android SDK. Operating system build number, as provided by android.os.Build.VERSION.INCREMENTAL using the Android SDK. Operating system release name, as provided by android.os.Build.VERSION.RELEASE using the Android SDK. Operating system SDK number, as provided by android.os.Build.VERSION.SDK_INT using the Android SDK. True if the device provides a hardware backed cryptographic keystore (a hardware keystore prevents exporting private keys or directly exposing private keys to the OS), otherwise false. This item holds information about general Wi-Fi settings. True if Wi-Fi is currently enabled on the device. True if the Wi-Fi network availability notification setting is currently enabled on the device. This item holds information about the configured Wi-Fi networks on the device. BSSID. The value is a string in the format of an Ethernet MAC address. The network's SSID. The set of authentication protocols supported by this configuration. The set of group ciphers supported by this configuration. The set of key management protocols supported by this configuration. The set of pairwise ciphers for WPA supported by this configuration. The set of security protocols supported by this configuration. This is a network that does not broadcast its SSID. The ID number that the supplicant uses to identify this network configuration entry. Priority determines the preference given to a network by wpa_supplicant when choosing an access point with which to associate. The current status of this network configuration entry, either CURRENT, DISABLED, or ENABLED per android.net.wifi.WifiConfiguration.Status. The telephony_item element contains a single entity that is used to check the status of the telephony manager Item. A constant String value indicating the radio technology (network type) currently in use on the device for data transmission. The ISO country code equivalent for the SIM provider's country code. the MCC+MNC (mobile country code + mobile network code) of the provider of the SIM. It contains 5 or 6 decimal digits. The EntityItemNetworkType complex type restricts a string value to a specific set of values. The network type is unknown Current network is GPRS Current network is EDGE Current network is UMTS Current network is CDMA Current network is EVDO-0 Current network is EVDO-A Current network is 1xRTT Current network is HSDPA Current network is HSUPA Current network is HSPA Current network is IDEN Current network is EVDO-B Current network is LTE Current network is EHRPD Current network is HSPAP The EntityStateWifiAuthAlgorithmType complex type restricts a string value to a specific set of values that name WiFi authentication algorithms. The empty string is also allowed to support empty element associated with variable references. Note that when using pattern matches and variables care must be taken to ensure that the regular expression and variable values align with the enumerated values. LEAP/Network EAP (only used with LEAP) Open System authentication (required for WPA/WPA2) Shared Key authentication (requires static WEP keys) The EntityStateWifiGroupCipherType complex type restricts a string value to a specific set of values that name Wi-Fi group ciphers. The empty string is also allowed to support empty element associated with variable references. Note that when using pattern matches and variables care must be taken to ensure that the regular expression and variable values align with the enumerated values. AES in Counter mode with CBC-MAC [RFC 3610, IEEE 802.11i/D7.0]; Constant Value: 3 (0x00000003) Temporal Key Integrity Protocol [IEEE 802.11i/D7.0]; Constant Value: 2 (0x00000002) WEP (Wired Equivalent Privacy) with 104-bit key; Constant Value: 1 (0x00000001) WEP (Wired Equivalent Privacy) with 40-bit key (original 802.11); Constant Value: 0 (0x00000000) The EntityItemWifiKeyMgmtType complex type restricts a string value to a specific set of values that name Wi-Fi key management schemes (from android.net.wifi.WifiConfiguration.KeyMgmt). The empty string is also allowed to support empty element associated with variable references. Note that when using pattern matches and variables care must be taken to ensure that the regular expression and variable values align with the enumerated values. IEEE 802.1X using EAP authentication and (optionally) dynamically generated WEP keys. WPA is not used; plaintext or static WEP could be used. WPA using EAP authentication. WPA pre-shared key. The EntityItemWifiPairwiseCipherType complex type restricts a string value to a specific set of values that name Wi-Fi recognized pairwise ciphers for WPA (from android.net.wifi.WifiConfiguration.PairwiseCipher). The empty string is also allowed to support empty element associated with variable references. Note that when using pattern matches and variables care must be taken to ensure that the regular expression and variable values align with the enumerated values. AES in Counter mode with CBC-MAC [RFC 3610, IEEE 802.11i/D7.0] Use only Group keys (deprecated) Temporal Key Integrity Protocol [IEEE802.11i/D7.0] The EntityItemWifiProtocolType complex type restricts a string value to a specific set of values that name Wi-Fi recognized security protocols (from android.net.wifi.WifiConfiguration.Protocol). The empty string is also allowed to support empty element associated with variable references. Note that when using pattern matches and variables care must be taken to ensure that the regular expression and variable values align with the enumerated values. WPA2/IEEE 802.11i WPA/IEEE 802.11i/D3.0 The EntityItemEncryptionStatusType complex type restricts a string value to a specific set of values. Encryption is not supported Encryption is active. Encryption is supported but is not currently active. Encryption is not currently active, but is currently being activated. The EntityItemPasswordQualityType complex type restricts a string value to a specific set of values. The password must contain alphabetic (or other symbol) characters The password must contain both numeric and alphabetic (or other symbol) characters This policy allows for low-security biometric recognition technology The password must contain at least a letter, a numerical digit, and a special symbol The password must contain at least numeric characters This policy requires some kind of password, but doesn't care what it is There are no password policy requirements The EntityItemKeyguardDisabledFeaturesType complex type restricts a string value to a specific set of values. Widgets are enabled in keyguard Disable all keyguard widgets Disable the camera on secure keyguard screens (e.g. PIN/Pattern/Password) Disable all current and future keyguard customizations The EntityItemWifiCurrentStatusType complex type restricts a string value to a specific set of values. The network we are currently connected to Supplicant will not attempt to use this network Supplicant will consider this network available for association