Please use this identifier to cite or link to this item: http://hdl.handle.net/10316/100340
Title: Blended Security Analysis for Web Applications: Techniques and Tools
Authors: Nunes, Paulo Jorge Costa
Orientador: Fonseca, José Carlos
Vieira, Marco
Keywords: benchmarking; dynamic analysis; security; SQLi / SQL Injection; SQLi attacks; static analysis; taint analysis; vulnerabilities; web applications; XSS; análise dinâmica; segurança; ataques de SQL Injection; análise estática; vulnerabilidades; aplicações web
Issue Date: 5-May-2022
Place of publication or event: Coimbra
Abstract: With the advent of the Internet and Information Society, the popularity of web applications is increasing, resulting in rapid information growth and a clear impact on security aspects. In fact, web applications are frequently deployed with critical security vulnerabilities that, when exploited, may have a huge negative effect on the business. At the same time, headlines regularly chronicle technology based issues such as security hacks, inappropriate or illegal surveillance, misuse of personal data and spread of misinformation. The distrust these incidents breed in stakeholders, whether customers, employees, partners, investors, or regulators, can significantly damage the reputation of an organization. This thesis addresses the problem of vulnerability detection in web applications, proposing new techniques and tools to significantly increase the detection rate of vulnerabilities while keeping the number of false positives low. For demonstration purposes, the work focuses on WordPress plugins and on the PHP language. WordPress is developed in PHP and it is the most popular Content Management System (CMS) nowadays, being used by 43.1% of all the websites (as of December 19th, 2021), which corresponds to a CMS market share of 65.2%. The WordPress environment has more vulnerabilities than any other CMS. In fact, according to data from WPScan, approximately 97% of vulnerabilities in their database are related to WordPress plugins and themes and only 4% are core software. Our first contribution is a Static Application Security Testing (SAST) tool, named phpSAFE, able to analyze PHP code in complex web applications that use Object-Oriented Programming (OOP) and are based on third-party plugins. phpSAFE is a follow-up of a project whose development was requested by Automattic, the developer of WordPress, with the goal of improving the security of the plugins. Unlike other tools, phpSAFE is deployed with a default configuration focusing on generic Cross-Site Scripting (XSS) and SQL Injection (SQLi) vulnerabilities, as well as on plugins of the WordPress framework. This solution, out-of-the-box, has the advantage of allowing the immediate use of the tool to analyze PHP code, either from applications or WordPress plugins without requiring further configuration. It may be used both by occasional developers and by professional software houses wanting to speed up the development process of more secure software and reducing costs by avoiding the use expensive commercial SAST tools. The second key contribution is a new benchmarking methodology for SAST tools for web security that considers four scenarios of criticality and uses evaluation metrics tuned for each scenario. This methodology can be used to compare and rank different SAST tools for detecting vulnerabilities in web applications according to different vulnerability detection requirements. In this context, a benchmark consists of four components: scenarios, workload, metrics, and procedures and rules. In practice, we consider four scenarios (highest-quality, high-quality, medium-quality and low-quality) to compose the workload by assigning representative applications to each scenario based on code quality, and rely on a main metric and a tiebreaker metric for characterizing the tools under evaluation in each scenario. The main metric is used to rank the SAST tools and the tiebreaker metric is used to decide eventual ties between two or more SAST tools. We created two concrete instances of the general benchmarking methodology to demonstrate its feasibility, and evaluated and compared five SAST tools for the detection of SQLi and XSS vulnerabilities in a workload composed of 134 WordPress plugins. Results show that, our benchmarking approach is a valuable tool to help project managers choosing the best SAST tool for a specific project, according to their needs and the resources available. Another contribution consists on case studies on the combination of the results of five SAST tools for SQLi and XSS vulnerabilities, as a way to improve the vulnerability detection rate while keeping False Positives (FPs) low. First, we conducted an experimental campaign using 1-out-of-n adjudication on the outputs of the SAST tools on a dataset of real WordPress plugins. The main limitation observed is the potential increase of FPs, which may be unacceptable in many situations. Thus, we conducted an empirical study looking at the results of all the possible 1-out-of-n, n-out-of-n and majority voting configurations. This way, we collect more evidence on the interplay between FPs and False Negatives (FNs) in diverse SAST configurations, being able to rank the best combination of tools. Finally, we performed an in-deep analysis of code of the WordPress plugins to find reasons to justify why some SAST tools do not detect vulnerabilities that other SAST tools detect. The thesis ends with the proposal of a generic methodology for blending static and dynamic analysis for web application vulnerability detection. The methodology combines static analysis, a crawling procedure and dynamic analysis into a number of steps in order to obtain a set of vulnerabilities, reported by the static analysis, that are confirmed to be exploitable. In short, the process starts with Static Analysis (SA) to produce a list of candidate vulnerabilities. Then, the application is executed automatically, stopping only when the code where the vulnerabilities are located is run. A set of specific inputs and configuration options are automatically generated from the results of the SA and the runtime information collected, which are used to guide the Dynamic Analysis (DA) in the process of successfully exploiting each vulnerability reported by the SA. Results show that, our approach is a great improvement for security practitioners, over using only SA and manual review, because it reduces the usual need for manual reviews of the output of SAST tools.
Com o advento da Internet e da Sociedade da Informação, a popularidade das aplicações web está aumentando, resultando num rápido crescimento da informação e um claro impacto nos aspectos de segurança. Na verdade, as aplicações web são frequentemente desenvolvidas com vulnerabilidades de segurança críticas que, quando exploradas, podem ter um grande efeito negativo nos negócios. Ao mesmo tempo, as manchetes relatam regularmente questões de base tecnológica, como hacks de segurança, vigilância inadequada ou ilegal, uso indevido de dados pessoais e disseminação de informações incorretas. A desconfiança que esses incidentes geram nas partes interessadas, sejam eles clientes, funcionários, parceiros, investidores ou reguladores, pode prejudicar significativamente a reputação de uma organização. Esta tese aborda o problema de detecção de vulnerabilidades em aplicações web, propondo novas técnicas e ferramentas para aumentar significativamente a taxa de detecção de vulnerabilidades, mantendo baixo o número de falsos positivos (FPs). Para fins de demonstração, o trabalho é focado em plugins do WordPress e na linguagem PHP. O WordPress é desenvolvido em PHP e é o CMS mais popular da atualidade, sendo utilizado por 43,1% de todos os sites (19 de dezembro de 2021), o que corresponde a quota de mercado de 65,2% dos CMS. O framework WordPress tem mais vulnerabilidades do que qualquer outro CMS. Na verdade, de acordo com dados do WPScan, aproximadamente 97% das vulnerabilidades na sua base de dados estão relacionadas com plugins e temas do WordPress e apenas 4% são do core do WordPress. A nossa primeira contribuição é uma ferramenta de análise estática de código fonte (SAST) com foco em segurança de aplicações web, chamada phpSAFE, capaz de analisar PHP código fonte de aplicações web complexas que usam OOP e baseadas em plugins de terceiros. phpSAFE é um follow-up de um projeto cujo desenvolvimento foi solicitado pela Automattic, desenvolvedora do WordPress, com o objetivo de melhorar a segurança dos plugins para WordPress. Ao contrário de outras ferramentas, phpSAFE é implantado com uma configuração padrão com foco em vulnerabilidades genéricas de SQL Injection (SQLi) e Cross-Site Scripting (XSS), bem como em plugins para o WordPress. Esta solução, out-of-the-box, tem a vantagem de permitir o uso imediato da ferramenta para analisar o código PHP de aplicações web ou plugins do WordPress sem a necessidade de outras configurações. A Ferramenta pode ser usado quer por programadores ocasionais quer por software houses profissionais que desejam acelerar o processo de desenvolvimento de software mais seguro e reduzir custos, evitando o uso de ferramentas SAST comerciais caras. A segunda contribuição principal é uma nova metodologia de benchmarking para ferramentas SAST para segurança na web que considera quatro cenários de criticidade e usa métricas de avaliação ajustadas para cada cenário. Esta metodologia pode ser usada para comparar e classificar diferentes ferramentas SAST para detectar vulnerabilidades aplicações web de acordo com os diferentes requisitos de detecção de vulnerabilidades. Nesse contexto, um benchmark consiste em quatro componentes: cenários, carga de trabalho, métricas e procedimentos e regras. Na prática, consideramos quatro cenários (qualidade superior, alta qualidade, qualidade média e baixa qualidade) para compor a carga de trabalho atribuindo aplicações web representativas para cada cenário com base na qualidade do código, e é utilizada uma métrica principal e uma métrica de desempate para classificar as ferramentas em avaliação em cada cenário. A métrica principal é usada para classificar as ferramentas SAST e a métrica de desempate é usada apenas para decidir eventuais empates entre duas ou mais ferramentas SAST. Criámos duas instâncias concretas da metodologia geral de benchmarking para demonstrar sua viabilidade e avaliamos e comparamos cinco ferramentas SAST para a detecção de vulnerabilidades SQLi e XSS com uma carga de trabalho composta por 134 plugins do WordPress. Os resultados mostram que nossa abordagem de benchmarking é uma ferramenta valiosa para ajudar os gerentes de projeto a escolher a melhor ferramenta SAST para um projeto específico, de acordo com suas necessidades e os recursos disponíveis. Outra contribuição consiste em estudos de caso sobre a combinação dos resultados de cinco ferramentas SAST para vulnerabilidades SQLi e XSS, como forma de melhorar a taxa de detecção de vulnerabilidade mantendo o número de FPs baixo. Primeiro, conduzimos uma campanha experimental usando uma adjudicação 1-out-of-n dos resultados das ferramentas SAST num conjunto de dados de plugins reais do WordPress. A principal limitação observada é o potencial aumento de FPs, que pode ser inaceitável em muitas situações. Assim, conduzimos um estudo empírico olhando os resultados de todas as adjudicações possíveis 1-de-n, n-de-n e votação por maioria. Desta forma, recolhemos mais evidências sobre a balanço entre FPs e falsos negativos (FNs) em diversas adjudicações de ferramentas SAST, podendo classificar a melhor combinação de ferramentas. Finalmente, realizamos uma análise profunda do código dos plugins do WordPress para encontrar razões para justificar porque algumas ferramentas SAST não detectam vulnerabilidades que outras ferramentas SAST detectam. A tese termina com a proposta de uma metodologia genérica para combinar análise estática (SA) e análise dinâmica (DA) para detecção de vulnerabilidades em aplicações web. A metodologia combina a análise estática, um procedimento de crawling e análise dinâmica numa série de etapas a fim de obter um conjunto de vulnerabilidades, relatadas pela análise estática, que são confirmadas pela análise dinâmica como exploráveis. Resumindo, o processo começa com SA para produzir uma lista de vulnerabilidades candidatas. Em seguida, a aplicação web é executado automaticamente, parando apenas quando o código onde as vulnerabilidades estão localizadas for executado. Um conjunto de dados e opções de configuração específicas é gerado automaticamente a partir dos resultados da SA e das informações recolhidas durante execução da aplicação web, que são usadas para guiar a DA no processo de exploração bem-sucedida de cada vulnerabilidade relatada pelo SA. Os resultados mostram que a nossa abordagem é uma grande melhoria para os profissionais de segurança, ao usar apenas SA e revisão manual, porque reduz a necessidade usual de revisões manuais da saída das ferramentas SAST.
Description: Tese de Doutoramento em Ciências e Tecnologias da Informação apresentada ao Departamento de Engenharia Informática da Faculdade de Ciências e Tecnologia da Universidade de Coimbra.
URI: http://hdl.handle.net/10316/100340
Rights: openAccess
Appears in Collections:FCTUC Eng.Informática - Teses de Doutoramento
UC - Teses de Doutoramento

Files in This Item:
File Description SizeFormat
PhDThesisPauloNunes_FixedVersion.pdf3.26 MBAdobe PDFView/Open
Show full item record

Google ScholarTM

Check


Items in DSpace are protected by copyright, with all rights reserved, unless otherwise indicated.