Mobile App Security Checklist-English 1.2
Mobile App Security Checklist-English 1.2
Mobile App Security Checklist-English 1.2
Verification Level
Name:
Org:
Title:
Phone:
E-mail:
Name:
Org:
Title:
Phone:
E-mail:
pplication Security Checklist
1.2
https://github.com/OWASP/owasp-masvs/blob/1.2/Document/
1.1.3-excel
https://github.com/OWASP/owasp-mstg/blob/1.1.3-excel/Document/
e used to construct the base for all hyperlinks in the Android and iOS checklists.
use case to update all hyperlinks to a specific version of the MSTG
After consultation with <Customer> it was decided that only Level 1 requrirements are applicable to <AppName>.
and Contact Information
Management Summary
MASVS Complianc
V1: Architecture, Design and Threat Modelling
1.00
`
0.50
0
MASVS Compliance Diagram - Android
delling
Android
V8: Resiliency Against Reverse Engineering V2: Data Storage and Priv
0
MASVS Compliance Diagram - iOS
V1: Architecture, Design and Threat Modelling
IOS
1.00
V2: Data Storage and Privacy V8: Resiliency Against Reverse Engineering
0.50
0
nce Diagram - iOS
IOS
ion
Mobile Application Security Requirements - Android
ID MSTG-ID
V1
1.1 MSTG-ARCH-1
1.2 MSTG-ARCH-2
1.3 MSTG-ARCH-3
1.4 MSTG-ARCH-4
1.5 MSTG-ARCH-5
1.6 MSTG-ARCH-6
1.7 MSTG-ARCH-7
1.8 MSTG-ARCH-8
1.9 MSTG-ARCH-9
1.10 MSTG-ARCH-10
1.11 MSTG-ARCH-11
1.12 MSTG-ARCH-12
V2
2.1 MSTG-STORAGE‑1
2.2 MSTG-STORAGE‑2
2.3 MSTG-STORAGE‑3
2.4 MSTG-STORAGE‑4
2.5 MSTG-STORAGE‑5
2.6 MSTG-STORAGE‑6
2.7 MSTG-STORAGE‑7
2.8 MSTG-STORAGE‑8
2.9 MSTG-STORAGE‑9
2.10 MSTG-STORAGE‑10
2.11 MSTG-STORAGE‑11
2.12 MSTG-STORAGE‑12
2.13 MSTG-STORAGE‑13
2.14 MSTG-STORAGE‑14
2.15 MSTG-STORAGE‑15
V3
3.1 MSTG‑CRYPTO‑1
3.2 MSTG‑CRYPTO‑2
3.3 MSTG‑CRYPTO‑3
3.4 MSTG‑CRYPTO‑4
3.5 MSTG‑CRYPTO‑5
3.6 MSTG‑CRYPTO‑6
V4
4.1 MSTG-AUTH-1
4.2 MSTG-AUTH-2
4.3 MSTG-AUTH-3
4.4 MSTG-AUTH-4
4.5 MSTG-AUTH-5
4.6 MSTG-AUTH-6
4.7 MSTG-AUTH-7
4.8 MSTG-AUTH-8
4.9 MSTG-AUTH-9
4.10 MSTG-AUTH-10
4.11 MSTG-AUTH-11
4.12 MSTG-AUTH-12
V5
5.1 MSTG-NETWORK-1
5.2 MSTG-NETWORK-2
5.3 MSTG-NETWORK-3
5.4 MSTG-NETWORK-4
5.5 MSTG-NETWORK-5
5.6 MSTG-NETWORK-6
V6
6.1 MSTG-PLATFORM-1
6.2 MSTG-PLATFORM-2
6.3 MSTG-PLATFORM-3
6.4 MSTG-PLATFORM-4
6.5 MSTG-PLATFORM-5
6.6 MSTG-PLATFORM-6
6.7 MSTG-PLATFORM-7
6.8 MSTG-PLATFORM-8
6.9 MSTG-PLATFORM-9
6.10 MSTG-PLATFORM-10
6.11 MSTG-PLATFORM-11
V7
7.1 MSTG-CODE-1
7.2 MSTG-CODE-2
7.3 MSTG-CODE-3
7.4 MSTG-CODE-4
7.5 MSTG-CODE-5
7.6 MSTG-CODE-6
7.7 MSTG-CODE-7
7.8 MSTG-CODE-8
7.9 MSTG-CODE-9
Legend
Symbol
Pass
Fail
N/A
on Security Requirements - Android
The app does not use cryptographic protocols or algorithms that are widely considered deprecated for security purposes.
The app doesn't re-use the same cryptographic key for multiple purposes.
All random values are generated using a sufficiently secure random number generator.
Authentication and Session Management
If the app provides users access to a remote service, some form of authentication, such as username/password authentic
performed at the remote endpoint.
If stateful session management is used, the remote endpoint uses randomly generated session identifiers to authenticate
requests without sending the user's credentials.
If stateless token-based authentication is used, the server provides a token that has been signed using a secure algorithm
The remote endpoint terminates the existing session when the user logs out.
A password policy exists and is enforced at the remote endpoint.
The remote endpoint implements a mechanism to protect against the submission of credentials an excessive number of ti
Sessions are invalidated at the remote endpoint after a predefined period of inactivity and access tokens expire.
Biometric authentication, if any, is not event-bound (i.e. using an API that simply returns "true" or "false"). Instead, it is ba
unlocking the keychain/keystore.
A second factor of authentication exists at the remote endpoint and the 2FA requirement is consistently enforced.
Sensitive transactions require step-up authentication.
The app informs the user of all sensitive activities with their account. Users are able to view a list of devices, view context
information (IP address, location, etc.), and to block specific devices.
Authorization models should be defined and enforced at the remote endpoint.
Network Communication
Data is encrypted on the network using TLS. The secure channel is used consistently throughout the app.
The TLS settings are in line with current best practices, or as close as possible if the mobile operating system does not sup
recommended standards.
The app verifies the X.509 certificate of the remote endpoint when the secure channel is established. Only certificates sig
trusted CA are accepted.
The app either uses its own certificate store, or pins the endpoint certificate or public key, and subsequently does not est
connections with endpoints that offer a different certificate or key, even if signed by a trusted CA.
The app doesn't rely on a single insecure communication channel (email or SMS) for critical operations, such as enrollmen
account recovery.
The app only depends on up-to-date connectivity and security libraries.
Platform Interaction
The app only requests the minimum set of permissions necessary.
All inputs from external sources and the user are validated and if necessary sanitized. This includes data received via the U
mechanisms such as intents, custom URLs, and network sources.
The app does not export sensitive functionality via custom URL schemes, unless these mechanisms are properly protected
The app does not export sensitive functionality through IPC facilities, unless these mechanisms are properly protected.
JavaScript is disabled in WebViews unless explicitly required.
WebViews are configured to allow only the minimum set of protocol handlers required (ideally, only https is supported). P
dangerous handlers, such as file, tel and app-id, are disabled.
If native methods of the app are exposed to a WebView, verify that the WebView only renders JavaScript contained withi
package.
Object deserialization, if any, is implemented using safe serialization APIs.
The app protects itself against screen overlay attacks. (Android only)
A WebView's cache, storage, and loaded resources (JavaScript, etc.) should be cleared before the WebView is destroyed.
Verify that the app prevents usage of custom third-party keyboards whenever sensitive data is entered.
Code Quality and Build Settings
The app is signed and provisioned with a valid certificate, of which the private key is properly protected.
The app has been built in release mode, with settings appropriate for a release build (e.g. non-debuggable).
Debugging symbols have been removed from native binaries.
Debugging code and developer assistance code (e.g. test code, backdoors, hidden settings) have been removed. The app
log verbose errors or debugging messages.
All third party components used by the mobile app, such as libraries and frameworks, are identified, and checked for know
vulnerabilities.
The app catches and handles possible exceptions.
Error handling logic in security controls denies access by default.
In unmanaged code, memory is allocated, freed and used securely.
Free security features offered by the toolchain, such as byte-code minification, stack protection, PIE support and automati
reference counting, are activated.
Definition
Requirement is applicable to mobile App and implemented according to best practices.
Requirement is applicable to mobile App but not fulfilled.
Requirement is not applicable to mobile App.
Level 1 Level 2 Status
✓ ✓
✓ ✓
✓ ✓
✓ ✓
✓ N/A
✓ N/A
✓ N/A
✓ N/A
✓ N/A
✓ N/A
✓ N/A
✓ ✓
✓ ✓
✓ ✓
✓ ✓
✓ ✓
✓ ✓
✓ ✓
✓ N/A
✓ N/A
✓ N/A
✓ N/A
✓ N/A
✓ N/A
✓ N/A
✓ N/A
✓ ✓
✓ ✓
✓ ✓
✓ ✓
✓ ✓
✓ ✓
✓ ✓
✓ ✓
✓ ✓
✓ ✓
✓ ✓
✓ ✓
✓ N/A
✓ N/A
✓ N/A
✓ N/A
✓ ✓
✓ ✓
✓ ✓
✓ ✓
✓ N/A
✓ N/A
✓ N/A
✓ ✓
✓ ✓
✓ ✓
✓ ✓
✓ ✓
✓ ✓
✓ ✓
✓ ✓
✓ N/A
✓ N/A
✓ N/A
✓ ✓
✓ ✓
✓ ✓
✓ ✓
✓ ✓
✓ ✓
✓ ✓
✓ ✓
✓ ✓
Testin
Architectural Information
Injection Flaws (MSTG-ARCH-2 and MSTG-PLATFORM-2)
Architectural Information
Making Sure that Critical Operations Use Secure Communication Channels (MSTG-NETWORK-5)
Principles of Testing
ID MSTG-ID
8.1 MSTG-RESILIENCE-1
8.2 MSTG-RESILIENCE-2
8.3 MSTG-RESILIENCE-3
8.4 MSTG-RESILIENCE-4
8.5 MSTG-RESILIENCE-5
8.6 MSTG-RESILIENCE-6
8.7 MSTG-RESILIENCE-7
8.8 MSTG-RESILIENCE-8
8.9 MSTG-RESILIENCE-9
8.10 MSTG-RESILIENCE-10
8.11 MSTG-RESILIENCE-11
8.12 MSTG-RESILIENCE-12
8.13 MSTG-RESILIENCE-13
Legend
Symbol
Pass
Fail
N/A
t Reverse Engineering - Android
The app prevents debugging and/or detects, and responds to, a debugger being attached. All available debugging protoco
covered.
The app detects, and responds to, tampering with executable files and critical data within its own sandbox.
The app detects, and responds to, the presence of widely used reverse engineering tools and frameworks on the device.
The app detects, and responds to, being run in an emulator.
The app detects, and responds to, tampering the code and data in its own memory space.
The app implements multiple mechanisms in each defense category (8.1 to 8.6). Note that resiliency scales with the amou
diversity of the originality of the mechanisms used.
The detection mechanisms trigger responses of different types, including delayed and stealthy responses.
Obfuscation is applied to programmatic defenses, which in turn impede de-obfuscation via dynamic analysis.
Device Binding
The app implements a 'device binding' functionality using a device fingerprint derived from multiple properties unique to
device.
Impede Comprehension
All executable files and libraries belonging to the app are either encrypted on the file level and/or important code and dat
segments inside the executables are encrypted or packed. Trivial static analysis does not reveal important code or data.
If the goal of obfuscation is to protect sensitive computations, an obfuscation scheme is used that is both appropriate for
particular task and robust against manual and automated de-obfuscation methods, considering currently published resea
effectiveness of the obfuscation scheme must be verified through manual testing. Note that hardware-based isolation fea
preferred over obfuscation whenever possible.
Impede Eavesdropping
As a defense in depth, next to having solid hardening of the communicating parties, application level payload encryption c
applied to further impede eavesdropping.
Definition
Requirement is applicable to mobile App and implemented according to best practices.
Requirement is applicable to mobile App but not fulfilled.
Requirement is not applicable to mobile App.
R Status Testing Procedure(s)
✓ N/A -
✓ N/A Testing Obfuscation (MSTG-RESILIENCE-9)
✓ N/A -
✓ N/A -
Comment
Mobile Application Security Requirements - iOS
ID MSTG-ID
V1
1.1 MSTG-ARCH-1
1.2 MSTG-ARCH-2
1.3 MSTG-ARCH-3
1.4 MSTG-ARCH-4
1.5 MSTG-ARCH-5
1.6 MSTG-ARCH-6
1.7 MSTG-ARCH-7
1.8 MSTG-ARCH-8
1.9 MSTG-ARCH-9
1.10 MSTG-ARCH-10
1.11 MSTG-ARCH-11
1.12 MSTG-ARCH-12
V2
2.1 MSTG-STORAGE‑1
2.2 MSTG-STORAGE‑2
2.3 MSTG-STORAGE‑3
2.4 MSTG-STORAGE‑4
2.5 MSTG-STORAGE‑5
2.6 MSTG-STORAGE‑6
2.7 MSTG-STORAGE‑7
2.8 MSTG-STORAGE‑8
2.9 MSTG-STORAGE‑9
2.10 MSTG-STORAGE‑10
2.11 MSTG-STORAGE‑11
2.12 MSTG-STORAGE‑12
2.13 MSTG-STORAGE‑13
2.14 MSTG-STORAGE‑14
2.15 MSTG-STORAGE‑15
V3
3.1 MSTG‑CRYPTO‑1
3.2 MSTG‑CRYPTO‑2
3.3 MSTG‑CRYPTO‑3
3.4 MSTG‑CRYPTO‑4
3.5 MSTG‑CRYPTO‑5
3.6 MSTG‑CRYPTO‑6
V4
4.1 MSTG-AUTH-1
4.2 MSTG-AUTH-2
4.3 MSTG-AUTH-3
4.4 MSTG-AUTH-4
4.5 MSTG-AUTH-5
4.6 MSTG-AUTH-6
4.7 MSTG-AUTH-7
4.8 MSTG-AUTH-8
4.9 MSTG-AUTH-9
4.10 MSTG-AUTH-10
4.11 MSTG-AUTH-11
4.12 MSTG-AUTH-12
V5
5.1 MSTG-NETWORK-1
5.2 MSTG-NETWORK-2
5.3 MSTG-NETWORK-3
5.4 MSTG-NETWORK-4
5.5 MSTG-NETWORK-5
5.6 MSTG-NETWORK-6
V6
6.1 MSTG-PLATFORM-1
6.2 MSTG-PLATFORM-2
6.3 MSTG-PLATFORM-3
6.4 MSTG-PLATFORM-4
6.5 MSTG-PLATFORM-5
6.6 MSTG-PLATFORM-6
6.7 MSTG-PLATFORM-7
6.8 MSTG-PLATFORM-8
6.9 MSTG-PLATFORM-9
6.10 MSTG-PLATFORM-10
6.11 MSTG-PLATFORM-11
V7
7.1 MSTG-CODE-1
7.2 MSTG-CODE-2
7.3 MSTG-CODE-3
7.4 MSTG-CODE-4
7.5 MSTG-CODE-5
7.6 MSTG-CODE-6
7.7 MSTG-CODE-7
7.8 MSTG-CODE-8
7.9 MSTG-CODE-9
Legend
Symbol
Pass
Fail
N/A
on Security Requirements - iOS
Sessions are invalidated at the remote endpoint after a predefined period of inactivity and access tokens expire.
Biometric authentication, if any, is not event-bound (i.e. using an API that simply returns "true" or "false"). Instead, it is ba
unlocking the keychain/keystore.
A second factor of authentication exists at the remote endpoint and the 2FA requirement is consistently enforced.
Sensitive transactions require step-up authentication.
The app informs the user of all sensitive activities with their account. Users are able to view a list of devices, view context
information (IP address, location, etc.), and to block specific devices.
Authorization models should be defined and enforced at the remote endpoint.
Network Communication
Data is encrypted on the network using TLS. The secure channel is used consistently throughout the app.
The TLS settings are in line with current best practices, or as close as possible if the mobile operating system does not sup
recommended standards.
The app verifies the X.509 certificate of the remote endpoint when the secure channel is established. Only certificates sig
trusted CA are accepted.
The app either uses its own certificate store, or pins the endpoint certificate or public key, and subsequently does not est
connections with endpoints that offer a different certificate or key, even if signed by a trusted CA.
The app doesn't rely on a single insecure communication channel (email or SMS) for critical operations, such as enrollmen
account recovery.
The app only depends on up-to-date connectivity and security libraries.
Platform Interaction
The app only requests the minimum set of permissions necessary.
All inputs from external sources and the user are validated and if necessary sanitized. This includes data received via the U
mechanisms such as intents, custom URLs, and network sources.
The app does not export sensitive functionality via custom URL schemes, unless these mechanisms are properly protected
The app does not export sensitive functionality through IPC facilities, unless these mechanisms are properly protected.
JavaScript is disabled in WebViews unless explicitly required.
WebViews are configured to allow only the minimum set of protocol handlers required (ideally, only https is supported). P
dangerous handlers, such as file, tel and app-id, are disabled.
If native methods of the app are exposed to a WebView, verify that the WebView only renders JavaScript contained withi
package.
Object deserialization, if any, is implemented using safe serialization APIs.
The app protects itself against screen overlay attacks. (Android only)
A WebView's cache, storage, and loaded resources (JavaScript, etc.) should be cleared before the WebView is destroyed.
Verify that the app prevents usage of custom third-party keyboards whenever sensitive data is entered.
Code Quality and Build Settings
The app is signed and provisioned with a valid certificate, of which the private key is properly protected.
The app has been built in release mode, with settings appropriate for a release build (e.g. non-debuggable).
Debugging symbols have been removed from native binaries.
Debugging code and developer assistance code (e.g. test code, backdoors, hidden settings) have been removed. The app
log verbose errors or debugging messages.
All third party components used by the mobile app, such as libraries and frameworks, are identified, and checked for know
vulnerabilities.
The app catches and handles possible exceptions.
Error handling logic in security controls denies access by default.
In unmanaged code, memory is allocated, freed and used securely.
Free security features offered by the toolchain, such as byte-code minification, stack protection, PIE support and automati
reference counting, are activated.
Definition
Requirement is applicable to mobile App and implemented according to best practices.
Requirement is applicable to mobile App but not fulfilled.
Requirement is not applicable to mobile App.
Level 1 Level 2 Status
✓ ✓
✓ ✓
✓ ✓
✓ ✓
✓ N/A
✓ N/A
✓ N/A
✓ N/A
✓ N/A
✓ N/A
✓ N/A
✓ ✓
✓ ✓
✓ ✓
✓ ✓
✓ ✓
✓ ✓
✓ ✓
✓ N/A
✓ N/A
✓ N/A
✓ N/A
✓ N/A
✓ N/A
✓ N/A
✓ N/A
✓ ✓
✓ ✓
✓ ✓
✓ ✓
✓ ✓
✓ ✓
✓ ✓
✓ ✓
✓ ✓
✓ ✓
✓ ✓
✓ ✓
✓ N/A
✓ N/A
✓ N/A
✓ N/A
✓ ✓
✓ ✓
✓ ✓
✓ ✓
✓ N/A
✓ N/A
✓ N/A
✓ ✓
✓ ✓
✓ ✓
✓ ✓
✓ ✓
✓ ✓
✓ ✓
✓ ✓
✓ N/A
✓ N/A
✓ N/A
✓ ✓
✓ ✓
✓ ✓
✓ ✓
✓ ✓
✓ ✓
✓ ✓
✓ ✓
✓ ✓
Architectural Information
Injection Flaws (MSTG-ARCH-2 and MSTG-PLATFORM-2)
Architectural Information
Principles of Testing
Cryptographic policy
Testing Custom Certificate Stores and Certificate Pinning (MSTG-NETWORK-3 and MSTG-NETWORK-4)
Testing Custom Certificate Stores and Certificate Pinning (MSTG-NETWORK-3 and MSTG-NETWORK-4)
Making Sure that Critical Operations Use Secure Communication Channels (MSTG-NETWORK-5)
ID MSTG-ID
8.1 MSTG-RESILIENCE-1
8.2 MSTG-RESILIENCE-2
8.3 MSTG-RESILIENCE-3
8.4 MSTG-RESILIENCE-4
8.5 MSTG-RESILIENCE-5
8.6 MSTG-RESILIENCE-6
8.7 MSTG-RESILIENCE-7
8.8 MSTG-RESILIENCE-8
8.9 MSTG-RESILIENCE-9
8.10 MSTG-RESILIENCE-10
8.11 MSTG-RESILIENCE-11
8.12 MSTG-RESILIENCE-12
8.13 MSTG-RESILIENCE-13
Legend
Symbol
Pass
Fail
N/A
st Reverse Engineering - iOS
If the goal of obfuscation is to protect sensitive computations, an obfuscation scheme is used that is both appropriate for
particular task and robust against manual and automated de-obfuscation methods, considering currently published resea
The effectiveness of the obfuscation scheme must be verified through manual testing. Note that hardware-based isolation
features are preferred over obfuscation whenever possible.
Impede Eavesdropping
As a defense in depth, next to having solid hardening of the communicating parties, application level payload encryption c
be applied to further impede eavesdropping.
Definition
Requirement is applicable to mobile App and implemented according to best practices.
Requirement is applicable to mobile App but not fulfilled.
Requirement is not applicable to mobile App.
R Status Testing Procedure(s)
✓ N/A -
✓ N/A Testing Obfuscation (MSTG-RESILIENCE-9)
✓ N/A -
✓ N/A -
Comment
XLS Version History
Name Version MASVS version Date
Alexander Antukh (Opera Software) 0.1 30/01/2017
Sven Schleier 0.2 31/01/2017
Abdessamad Temmar 0.3 12/02/2017
Bernhard Mueller 0.8.1 14/02/2017
Sven Schleier 0.9.2 15/02/2017
Bernhard Mueller 0.9.3 04/04/2017
Sven Schleier 0.9.3 03/07/2017
Sven Schleier 0.9.4 16/08/2017
Sven Schleier 1.0 13/01/2018
Sven Schleier 1.1 08/07/2018
Abderrahmane Aftahi 1.1.0.1 30/12/2018
Romuald Szkudlarek 1.1.0.2 04/01/2019
Coupling the checklist version to a specific MASVS/MSTG version and shifting to github.com instead of gitbook
- Reflecting MASVS/MSTG version in the "Dashboard" worksheet in cell D11 (named range "MASVS_VERSION")
- Reflecting the "root" of the MSTG version on github.com in the "Dashboard" worksheet in cell D12 (named ran
- Composing the hyperlinks to the MSTG dynamically with formulas to simplify future maintenance and multilin
named ranges above
- Adding a column "MASVS version" to this "version history" worksheet to reflect the link between versioning of
Syncing "Anti-RE" worksheets to better match the L1/L2 "Security Requirements" worksheets
- Adding "ID" header
- Removing inner cell borders
Housekeeping/Misc
- Adding missing "-" in the "Testing procedure" columns for where there is no testcase in the MSTG
- Adding missing cell-border lines
- Setting all ID's to "x.y" formatting. Was previously a mix of "x.y" and "x,y"
- Setting the cell type of the ID columns to "Text" to prevent Excel from forcing the decimal point from a period
- Enabled gridlines on both Android worksheets to improve readability (inspired by the iOS worksheets)
- Resetting all worksheets' zoom levels to 100%
- Presetting iOS-2.11 to "N/A" (previously unset)
Updating the lnk to the 1.1.0 version of the guide
SHA256 checksum instead of MD5 on Dashboard worksheet
Fixed the Management Summary worksheet
Added explanation for hyperlinking to the Dashboard worksheet
Added 0x04 hyperlink to MSTG for V4.11 on both platforms (previously blank)
IOS
3.2|4.5|4.10|4.11|5.1|5.3|6.4|7.8
Correcting the Link to the MSTG repo and adding a link to the MASVS repo
Updates:
- Adding the MSTG-IDs
- Covering the V1 MSTG links
Updates:
- Added missing translations for headings
- Fixed some outlines
Sync with MASVS 1.2
- Added
1.11, 1.12, 2.13, 2.14, 2.15, 4.12, 6.9, 6.10, 6.11, 8.13
- Changes in English
2.1, 3.4, 4.11, 7.4
- Changes in French
2.1, 4.11, 7.4
- Changes in Japanese
2.1, 4.11, 7.4
- Changes in Korean
1.2, 1.3, 1.7, 2.1, 2.12, 3.1, 3.4, 4.2, 4.6, 4.8, 4.9, 4.11, 5.4, 5.5, 6.2, 6.3, 6.4, 6.5, 6.6, 6.7, 6.8, 7.1, 7.2, 7.3, 7.4, 7.
- Changes in Spanish
1.7, 1.8, 1.9, 1.10, 2.1, 2.3, 2.5, 2.6, 2.8, 2.9, 2.10, 3.1, 3.3, 3.4, 3.6, 4.8, 4.9, 4.10, 4.11, 5.2, 5.3, 5.4, 5.5, 6.1, 6.2,
7.4, 7.5, 7.6, 7.8, 7.9, 8.2, 8.3, 8.4, 8.5, 8.7, 8.8, 8.9, 8.10, 8.11, 8.12