Code Monkey home page Code Monkey logo

owasp / owasp-mastg Goto Github PK

View Code? Open in Web Editor NEW
11.3K 433.0 2.2K 413.58 MB

The Mobile Application Security Testing Guide (MASTG) is a comprehensive manual for mobile app security testing and reverse engineering. It describes the technical processes for verifying the controls listed in the OWASP Mobile Application Security Verification Standard (MASVS).

Home Page: https://mas.owasp.org/

License: Creative Commons Attribution Share Alike 4.0 International

Shell 8.82% Python 76.68% TeX 7.04% sed 0.92% Java 3.43% Kotlin 3.10%
mobile-app pentesting android-application ios-app runtime-analysis network-analysis static-analysis reverse-engineering dynamic-analysis mobile-security

owasp-mastg's Introduction

OWASP Mobile Application Security Testing Guide (MASTG)

OWASP Flagship Creative Commons License

Document Build Markdown Linter URL Checker

This is the official GitHub Repository of the OWASP Mobile Application Security Testing Guide (MASTG). The MASTG is a comprehensive manual for mobile app security testing and reverse engineering. It describes technical processes for verifying the controls listed in the OWASP Mobile Application Verification Standard (MASVS).




Trusted by ...

The OWASP MASVS and MASTG are trusted by the following platform providers and standardization, governmental and educational institutions. Learn more.


🥇 MAS Advocates

MAS Advocates are industry adopters of the OWASP MASVS and MASTG who have invested a significant and consistent amount of resources to push the project forward by providing consistent high-impact contributions and continuously spreading the word. Learn more.




Connect with Us


Other Formats


About Hybrid Apps

Please note that the MASTG focuses primarily on native apps. These are apps built with Java or Kotlin using the Android SDK for Android or built with Swift or Objective-C using the Apple SDKs for iOS. Apps using frameworks such as Nativescript, React-native, Xamarin, Cordova, etc. are not within the main focus of the MASTG. However, some essential controls, such as certificate pinning, have been explained already for some of these platforms. For now, you can take a look and contribute to the work-in-progress being made in the discussions "Hybrid application checklist experiments" and "Basic Guidelines for Hybrid Apps".

owasp-mastg's People

Contributors

0x10f2c avatar a-aftahi avatar andreashappe avatar b3nac avatar c0rdis avatar cak avatar clviper avatar commjoen avatar cpholguera avatar henryhoggard avatar jasondoyle avatar jay0301 avatar karolpiateknet avatar laancelot avatar litsnarf avatar lwierzbicki avatar mkaraoz avatar muellerberndt avatar pmilosev avatar romualdszkudlarek avatar ryantzj avatar serek8 avatar sjord avatar skosowski avatar su-vikas avatar sushi2k avatar thec00n avatar thedauntless avatar tmmmmmr avatar xep624 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

owasp-mastg's Issues

incorrect information on Intent framework

Hi guys,

I found that there is a misinformation on Intent framework under topic Android 0x04a. link

Intent messaging is a framework for asynchronous communication built on top of binder.
...
Although intents facilitate communication between components in several ways, there are three fundamental use cases:

  • Explicit intents specify the component to start by name (the fully-qualified class name).

Intent types were given here instead of uses cases. Below is the use cases written in Android Developer manual. source

  • Starting an activity
    An Activity represents a single screen in an app. You can start a new instance of an Activity by passing an Intent to startActivity(). The Intent describes the activity to start and carries any necessary data.
    If you want to receive a result from the activity when it finishes, call startActivityForResult(). Your activity receives the result as a separate Intent object in your activity's onActivityResult() callback. For more information, see the Activities guide.
  • Starting a service
    A Service is a component that performs operations in the background without a user interface. With Android 5.0 (API level 21) and later, you can start a service with JobScheduler. For more information about JobScheduler, see its API-reference documentation.
    For versions earlier than Android 5.0 (API level 21), you can start a service by using methods of the Service class. You can start a service to perform a one-time operation (such as downloading a file) by passing an Intent to startService(). The Intent describes the service to start and carries any necessary data.
    If the service is designed with a client-server interface, you can bind to the service from another component by passing an Intent to bindService(). For more information, see the Services guide.
  • Delivering a broadcast
    A broadcast is a message that any app can receive. The system delivers various broadcasts for system events, such as when the system boots up or the device starts charging. You can deliver a broadcast to other apps by passing an Intent to sendBroadcast() or sendOrderedBroadcast().

Overlap between two testcases

Hello,

I think there is an overlap between the following testcases :

OMTG-CODE-007: Test Input Validation
OMTG-CODE-005: Test Exception Handling

I suggest that we keep only OMTG-CODE-005 because OMTG-CODE-007 may lead to other test cases (XSS or SQLi for example).

What do you think ?

0x4 - Unclear sentence

A sentence reads "change its behavior in some way a debugger is attached". Is a "in case" or "if" statement missing?

0x4 - Unclear meaning "has due to"

I don't understand the meaning of the sentence "Every App has due to the sandboxing it's own web cache and stores it's own cookies, if WebViews are used", to be clarified.

0x4 - unclear sentence

In chapter 0x4, a sentence reads "with no of assessing its effectiveness". Is "reason" missing, making the sentence "with no reason of assessing its effectiveness" ?

0x5b - ProGuard enabled by default?

When reading "Debug build" / "Code obfuscation from ProGuard is not applied" in "Basic Security Testing" (Android), I get the impression that ProGuard is enabled by default in Android Studio, or performed by default in any other IDE. While reading https://developer.android.com/studio/build/shrink-code.html, this does not seem to be true.

More detailed explanation on code obfuscation VS reverse engineering could be added, or a link to chapter 0x5b (same as the current one???) could be added in case it provides enough information on this topic.

0x6b - inappropriate statement

In chapter "Basic Security Testing on iOS", sentence "(don't worry, we're all script kiddies in some areas)" : even if I would agree, this may not be relevant in a guide meant to become the worldwide reference in the field of mobile testing. This could be removed.

0x5b - typo

In "Basic Security Testing" (Android), 't' should appear instead of 'd' in "One App should be build..."

0x4 - Missing examples (or colons to be replaced by a '.')

The following sentence ends without examples at the end (colons with empty content) : "The OWASP Reverse Engineering and Code Modification Prevention Project [1] lists the following potential threats associated with reverse engineering and tampering:"

Cloud Storage

Hi guys,

Here's an issue for discussion - see also MASVS issue #75.

OMTG-DATAST-003: Test for Sensitive Data in Cloud Storage

This only talks about backup to the cloud via the default OS facilities. However the requirement in the MASVS is "No sensitive data is synced with cloud storage", which pertains to any form of cloud storage. We should probably do two things:

  1. Make the requirement more specific in the MASVS. It doesn't make sense to forbid all kinds of cloud storage? Are we talking about third-party clouds like AWS, or about what exactly?

  2. Adapt the test case in the MSTG to fit the revised requirement.

There's a couple of other requirements that we need to review, please have a look at the remaining feedback in MASVS issue #75. as well @sushi2k @litsnarf

Ambiguous use of the term "black-box testing" in 0x06 Reverse Engineering and Tampering

Under the heading "Why should I bother?" of the following page: https://github.com/OWASP/owasp-mstg/blob/master/Document/0x06-Reverse-Engineering-and-Tampering.md
the second reason states "To enhance static analysis in black-box security testing". IMHO this is ambiguous. Static analysis is generally associated with white-box or gray-box testing, because it looks at the source- or byte-code. On the other hand, black-box testing is simply feeding inputs to the app and observing outputs. Is there a page with a definition of black-box testing in the MSTG?

0x6b - typo

In "Basic Security Testing" (iOS), the 'the' word is repeated twice: "Such blatant tampering of course invalidates the the code signature".

0x6b - Vendor neutrality

In "Basic Security Testing" (iOS), as OWASP is vendor neutral, unfortunately company names (other than Apple in that case) may not be cited. However, "vantagepoint" is mentioned several times. Should it be changed to something neutral? :-)

The logic is the same for "sg" (Singapore).

References to CWE and OWASP Mobile Top 10

In the guide we created in Google Docs we had also references to CWE and the OWASP Mobile Top 10. I think we should continue this, to reference properly to a common vulnerability type or weakness if one is applicable to the test case. I just put it in the test case I am migrating right now from Google Docs to GitHub.
What do you guys think?

screenshot at oct 09 14-59-19

0x4 - "Obfuscatable"

Maybe I misunderstood, but unless it means something else than "obfuscable", this latter term should be preferred for clarity in the sentence "by constructing an un-obfuscatable family of programs" as it is used everywhere else.

0x5d - Don't understand statement 'are outta there'

In line 454, the current sentence reads 'Many major versions of the Android operating system are still actively used and are outta there.'. What does 'are outta there' mean? Is it to express the idea that this kind of vulnerability are still part of many Android versions? Or does it have any other meaning?

0x4 - Unclear sentence (2)

A sentence reads "As an example, an app may an operating system API to prevent debuggers from attaching to the process". To be clarified.

0x6b - typo

In Basic Security Testing (iOS), 2 letters are inverted, leading to a funny wording : "Thanks to Apple's confusing provisioning and code signing system, re-singing an app".

Also, the term "confusing" may not be the right one. A more explicit one could be useful.

Duplicate CWE and OWASP Top 10 References

Hi guys, we have CWE and Top 10 references in both OWASP-DATAST and OWASP-DATAST-Android sections. Can we keep these in the generic section only to avoid redundancies.

0x4 - typo

In "The injection process can be implemented in various ways*" (star '*' sign):

  • is there a missing reference? (but I did not find any element it could refer to in the rest of the chapter...)
  • is this a typo and has to be removed?
  • ...?

0x6b - too realistic statement........

In "Basic Security Testing' (iOS), the following statement may be true, but not that supportive : "If something goes wrong (which it usually does)". Could it be replaced by something more positive (or removed)?

0x6b - typo

In chapter "Basic Security Testing on iOS", "disabling Apple's code code signing mechanisms" : 'code' is appearing twice in a sequence.

0x4 - Unclear sentence (3)

A sentence reads "or change its behavior in some way a debugger is attached". Is a "if" or "when" statement missing?

0x4 - About Burp Suite

The text states that "Burp Suite (Professional)" should be used for traffic interception. In my experience, the free version can easily do the job, no need to use the professional (paid) version. Moreover, as much as possible OWASP should not do any commercial promotion.

Proposal: limit to the free version and remove "(Professional") from the sentence "This can be achieved by using an interception proxy like Burp Suite (Professional) or ..."

0x5b - typo

In chapter "Basic Security Testing" (Android), "it's" shall be replaced by "its" ("and will illustrate also it's limitations")

0x6b - typo

In "Basic Security Testing" (iOS), a 't' letter has set free in "re-singing an app is more challenging t than one..."

0x5b - balance between security and testability

The beginning of "Setting Up Your Testing Environment" / "Preparation" is great, but in my mind puts too much emphasis on the fact a good level of security may render security testing tedious. While this is true, maybe a more balanced message could be given, as the guide should not provide reasons to lessen the security level provided to an app (unfortunately, too often people take advantage of bad reasons to forget implementing security...).

Maybe, as stated later in the chapter, better say that the testing team should work with developers to get a dedicated version of the app where some controls are not implemented or may be bypassed more easily (or, in the same way, work with the IT team to get a dedicated testing network, or any other solution for a testing environnement).

0x4 - clarify the meaning of "E2E"

I am afraid people may not all be familiar with End to End encryption; as such, I suggest to change "E2E" to something more understandable by general readers, like "End2End" or "End to End".

Ox5b - Rooting an Android Virtual Device (AVD)

In my understanding, adb shells are running as root by default (and it seems we share the same understanding from the content of the paragraph). Maybe this notion has to be clarified to avoid confusion.

0x4 - typo? ('that')

As I did not really understand the meaning, I did not want to change directly the source, but it seems that there is one useless 'that' statement in "which did not go that down that well with Saurik.". I guess it should better be "which did not go down that well with Saurik."

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.