
A Study of the Evolution of Database Technologies in Java Applications: from DBMS Adoption to Vulnerability Exposure
Resumo:
Os Sistemas de Gerência de Bancos de Dados (SGBDs) constituem componentes fundamentais de sistemas de software modernos, influenciando decisões arquiteturais relacionadas ao armazenamento e acesso aos dados e, ao mesmo tempo, introduzindo dependências que podem afetar a segurança das aplicações ao longo de sua evolução. Embora estudos anteriores tenham investigado a adoção de tecnologias de bancos de dados e vulnerabilidades em dependências de software, a compreensão longitudinal de como as escolhas relacionadas a SGBDs evoluem nos projetos e de como essa evolução influencia a exposição a vulnerabilidades nas bibliotecas utilizadas para acesso a esses sistemas ainda é limitada. Esta tese investiga essas duas perspectivas por meio de dois estudos empíricos longitudinais complementares em projetos Java de código aberto.
O primeiro estudo analisa a adoção e a evolução de 50 SGBDs em 362 projetos populares, caracterizando sua popularidade, estabilidade, coexistência, substituição e os mecanismos utilizados pelas aplicações para interagir com essas tecnologias. Os resultados mostram que MySQL, H2 e PostgreSQL estão entre os SGBDs relacionais mais adotados, enquanto Redis e MongoDB se destacam entre os não relacionais. Aproximadamente metade dos projetos que utilizam SGBDs combina tecnologias relacionais e não relacionais, e a coexistência de diferentes SGBDs aumenta à medida que os projetos evoluem. Embora substituições também ocorram, a coexistência é mais frequente, indicando que as arquiteturas de persistência tendem a se tornar mais heterogêneas ao longo do ciclo de vida do software. O estudo também mostra que MyBatis é o framework de mapeamento objeto-relacional mais frequentemente utilizado e que consultas SQL escritas diretamente no código são mais comuns do que o uso de Query Builders.
O segundo estudo investiga as implicações de segurança dessa evolução por meio da reconstrução do histórico de dependências relacionadas a SGBDs em 83 projetos Java baseados em Maven. Cada release observada foi associada a informações de vulnerabilidades publicamente divulgadas, permitindo analisar a prevalência e a propagação de vulnerabilidades, a exposição dos projetos, sua evolução ao longo do ciclo de vida das vulnerabilidades, a persistência da exposição após a disponibilização de correções e as motivações documentadas para atualizações de dependências. Foram identificadas 62 vulnerabilidades distintas afetando 645 releases de bibliotecas relacionadas a SGBDs. Os resultados revelam perfis de exposição substancialmente diferentes: enquanto o Redis é caracterizado principalmente por poucas vulnerabilidades propagadas por extensos históricos de releases, outras bibliotecas acumulam múltiplas vulnerabilidades nas mesmas releases. Diversas bibliotecas expuseram todos os projetos analisados que delas dependiam. Embora grande parte da atividade vulnerável ocorra antes da divulgação pública e releases corrigidas sejam geralmente disponibilizadas antes ou pouco depois da divulgação da vulnerabilidade, muitos projetos continuam utilizando versões vulneráveis por longos períodos. A análise das decisões de atualização mostra ainda que a remediação de vulnerabilidades é apenas uma das motivações para atualizações de dependências, que também são realizadas por razões como compatibilidade, evolução de frameworks, mudanças arquiteturais e manutenção rotineira.
Em conjunto, os resultados demonstram que tecnologias de banco de dados devem ser compreendidas como componentes que evoluem ao longo do ciclo de vida do software, tanto sob a perspectiva arquitetural quanto de segurança. As decisões de adoção, coexistência, substituição e atualização determinam não apenas como os projetos estruturam sua camada de persistência, mas também quais bibliotecas e releases passam a integrar o software e, consequentemente, quais vulnerabilidades podem afetá-lo. Em particular, a exposição a vulnerabilidades em bibliotecas relacionadas a SGBDs constitui um fenômeno multidimensional, resultante da interação entre prevalência de releases vulneráveis, propagação de vulnerabilidades, adoção pelos projetos, disponibilização de correções, comportamento de atualização de dependências e persistência da exposição ao longo do tempo.
Abstract:
Database Management Systems (DBMSs) are fundamental components of modern software systems, influencing architectural decisions related to data storage and access while introducing dependencies that may affect application security throughout software evolution. Although previous studies have investigated the adoption of database technologies and vulnerabilities in software dependencies, there is still limited longitudinal understanding of how DBMS-related choices evolve within projects and how this evolution influences vulnerability exposure in the libraries used to access these systems. This thesis investigates these two perspectives through two complementary longitudinal empirical studies of open source Java projects.
The first study analyzes the adoption and evolution of 50 DBMSs across 362 popular open-source Java projects, characterizing their popularity, stability, coexistence, replacement, and the mechanisms by which applications interact with these technologies. The results show that MySQL, H2, and PostgreSQL are among the most frequently adopted relational DBMSs, whereas Redis and MongoDB stand out among non-relational systems. Approximately half of the projects using DBMSs combine relational and non-relational technologies, and the coexistence of different DBMSs increases as projects evolve. Although replacements also occur, coexistence is more frequent, indicating that data persistence architectures tend to become increasingly heterogeneous throughout the software lifecycle. The study further shows that MyBatis is the most frequently used Object Relational Mapping framework and that SQL statements written directly in source code are more common than Query Builders.
The second study investigates the security implications of this evolution by reconstructing the history of DBMS-related dependencies across 83 Maven-based Java projects. Each observed release was associated with publicly disclosed vulnerability information, enabling us to analyze vulnerability prevalence and propagation, downstream project exposure, project evolution throughout the vulnerability lifecycle, persistence after patched releases become available, and documented motivations behind dependency update decisions. We identified 62 distinct vulnerabilities affecting 645 DBMS-related library releases. The results reveal substantially different exposure profiles: while Redis is primarily characterized by a small number of vulnerabilities propagating across extensive release histories, other libraries accumulate multiple vulnerabilities within the same releases. At the project level, several libraries exposed every analyzed project that depended on them. Although much vulnerable development activity occurs before public disclosure and patched releases are generally available before or shortly after disclosure, many projects continue using vulnerable releases for extended periods. The analysis of dependency update decisions further shows that vulnerability remediation represents only one motivation for dependency updates, which are also driven by compatibility requirements, framework evolution, architectural changes, and routine maintenance.
Taken together, the findings demonstrate that database technologies should be understood as evolving components throughout the software lifecycle from both architectural and security perspectives. Decisions concerning adoption, coexistence, replacement, and updates determine not only how projects structure their persistence layer but also which libraries and releases become part of the software and, consequently, which vulnerabilities may affect it. In particular, vulnerability exposure in DBMS-related libraries is a multidimensional phenomenon resulting from the interaction among vulnerable release prevalence, vulnerability propagation, downstream adoption, patch availability, dependency update behavior, and exposure persistence over time.
Banca examinadora:
Profa. Vanessa Braganholo Murta, UFF – Presidente
Prof. Leonardo Gresta Paulino Murta, UFF
Prof. Alexandre Plastino de Carvalho, UFF
Prof. Daniel Cardoso Moraes de Oliveira, UFF
Prof. João Felipe Nicolaci Pimentel, BNDES
Profa. Carina Friedrich Dorneles, UFSC
Prof. Igor Scaliante Wiese, UTFPR