• No results found

Android Analysis Evaluation

11.5 Static Security Analysis for Android

11.5.3 Android Analysis Evaluation

A well-known limitation of static analysis approaches is the false-positive and false- negative rate. This also applies to Android analysis tools, and proposed analysis techniques are evaluated in different ways. Due to the diverse approaches with regard to Android security analysis, we discuss only the tool evaluation of the comparable approaches described before and specifically focus on the evaluation with real-world applications. Table 11.3 sums up the discussed approaches.

Two works have not been evaluated against real-world apps. Klieber et al. [287] evaluate their tool against three self-written and three apps from the DroidBench benchmark suite [53] and Sufatrio et al. [469] evaluate against malware samples from the Android Malware Genome Project [550].

The tools SIG-Droid, BlueSeal, and DroidSafe have been evaluated by comparing the results to other analysis tools. Mirzaei et al. compare their tool SIG-Droid with two other approaches (Android Monkey and Dynodroid) [338]. They only use six open-source apps and compare the generated results. Gordon et al. compare their tool DroidSafe to FlowDroid [26] with analyzing 24 apps [193]. They assess the number of detected malicious flows of both tools. However, they do not attempt to analyze all of the remaining reported flows to determine whether they exist in the application or not and if they are malicious.

Approach

Evaluated Real-World Apps Evaluation Type

number of apps

SLOC manually against

other tool(s)

min max results

only whole app Cui et al. [99] 1,137 - - Gordon et al. [193] 24 200 80,000 Huang et al. [248] 182 - - ✓ ✓(69) ✗ Klieber et al. [287] 0 - - ✗ ✗ ✗ Li et al. [305] 15,000 - - ✓ ✗ ✗ Mirzaei et al. [338] 6 276 2,953 ✓ ✗ ✓ Ravitch et al. [385] 2,573 - - Shen et al. [442] 4,039 - - ✓(30) Sufatrio et al. [469] 0 - - Wei et al. [518] 853 - - Yang et al. [536] 20 - - ✓(3) Yang et al. [537] 20 2,380 52,240 ✓(6)

Table 11.3 – Overview of evaluation strategies of static Android analysis tools. If a publication provides no data for an aspect it is marked with "-". Numbers in brackets "()" indicate the number of investigated apps if this differs from all evaluated apps.

Shen et al. validate their static analysis tool BlueSeal against 4,039 apps [442]. Due to problems with the used Soot framework, they could only analyze 2,885 apps. The results of the analyzed apps are then discussed. Moreover, they manually compare the generated flow permission of BlueSeal and TaintDroid [133] with 30 apps. TaintDroid performs a dynamic taint analysis for identifying malicious information flows. They also examine the intermediate representation of 100 apps to verify that BlueSeal detects flows, but they do not assess whether their tool has missed flows.

The remaining approaches listed in Table 11.3 are evaluated manually. Huang et al. use 182 different apps for their tool evaluation. The obtained results are discussed and 69 apps that have not been reported by their AsDroid tool are manually inspected to determine false negatives. Finally, they identify 11 apps missed by AsDroid, but do not give detailed information on their results.

Li et al., Cui et al., and Wei et al. analyze 753, 1,137, and 15,000, respectively, real-world apps. They investigate and discuss their results, but do not assess the recall of their tools by looking for missed leaks. This also applies to the 2,573 apps used for the evaluation of the FUSE tool by Ravitch et al. [385].

The developer team of the Gator tool applied their analysis on 20 open-source Android apps [536, 537]. They additionally perform a manual analysis on three apps to understand the sources of the tool imprecision [536]. Furthermore, the successor tool Gator3 has been evaluated with six apps in depth to determine the precision of the analysis [537].

All in all, the evaluation of Android analysis tools is often focused on inspecting the tool-generated results. Sometimes, tools are used for comparing the generated results when there are comparable and publicly available approaches for the

11.5 – Static Security Analysis for Android

addressed achievement. Rarely, the whole app is used to determine the success of a tool and if so, such an evaluation is only conducted on a few apps. It is uncommon that a publication lists all analyzed apps with their size, which can be a hint on how complex the analyzed apps are. We have chosen the manual app evaluation to assess the precision and recall of our approach on 25 non-trivial real-world apps. The size per app is between 20,133 and 568,855 SLOC which is high compared to the collected size information in Table 11.3.

CHAPTER

TWELVE

CONCLUSION

This chapter summarizes the achieved results and contributions of this thesis and proposes further research directions.

12.1

Summary and Conclusions

An important and established technique for designing software are patterns. They provide existing and time-proven solutions to a given problem. While the usage and consideration of security patterns is often focused on the design stage of software, we see, as missing work, that security patterns should also be considered in reviews and software maintenance activities.

The overall topic of this thesis is to validate published security patterns with regard to the needs of software maintenance and program comprehension activities. We believe that we have given more insight into the landscape, description, detection, and open issues of security patterns. In the following, the several contributions of this thesis are summarized in depth.

Collection of security patterns We have presented a collection of published security patterns in the period of 1997 to 2016. The collection list is up-to-date and contains more patterns than other security pattern collections [144, 238, 300, 437, 539]. Moreover, this thesis is a centralized location of security patterns, which can be beneficial to software designers and developers who need an overview of existing security patterns.

Classification of security patterns We have seen that existing security-pattern classifications are limited to organize only a few security patterns. In addition, most of them imply that the patterns to be organized have the software domain as target. However, we have also shown that many different security patterns exist and many of them cannot be considered as software-security patterns. Thus, we have introduced two new classification schemes and discussed challenges in classifying security patterns. The first classification scheme embraces 430 published security patterns and exceeds in numbers the existing

classifications by far. The second classification is based on 195 software-security patterns that we have obtained in the first organization process. It unites the focus of pattern recognition and security aspects. These classifications support software designers and analysts by the determined pattern characteristics. Analysis of software-security pattern descriptions The description forms of security

patterns are very different. This heterogeneity is a problem for comparing security patterns. Therefore, the section definitions used in security-pattern templates have been collected and mapped to GoF and POSA design-pattern templates to identify additionally used sections.

In brevity our findings are: a) Most software-security patterns use a POSA-like description style; b) Their descriptions often have additional sections which are only used in a few different publications; c) These newly added sections are not security-specific, but the security potential of a security pattern can be stressed by using the Forces section.

Concluding, the heterogeneity of description forms is not essential to describe software-security patterns. The additionally used sections within security pattern descriptions can be mapped to the sections of POSA and GoF. Such a template does not need further significant sections to describe its security relevance or issue. We have shown that the developed mapping is an efficient way to compare the heterogeneously described security patterns and it can be used to consolidate pattern information. This technique can be used, for example, to compare different patterns or to unify pattern templates in case of the development of tool support.

Clarification of differences between design and security patterns We have presented the state-of-the-art of software-security patterns and discussed their maturity degree with regard to their classifications, description forms, code examples, and usage in the software life-cycle compared to the common design patterns. In brevity, the results are: a) The area of pattern classification is well explored for security patterns; b) There is ongoing research and design pattern concepts have been adopted; c) The area of forward engineering seems to be well- investigated for security patterns; d) The description quality of software- security patterns needs to be improved; e) The documentation rate of UML diagrams in software-security patterns is low; f) Only one fourth of the software-security patterns provide code examples; g) The quality of examples is not as good as the design pattern examples; h) The research on security patterns is not so widespread in the area of software maintenance (design recovery, redocumentation, and software restructuring).

We see, as the main reason for this observation, the heterogeneous description nature of security patterns and the lack of proper code examples. We believe further investigations on the presentation quality and a unique description form of security patterns as well as an easy accessible repository presenting published patterns may improve the pattern’s reputation and their adoption.