Aplicação Dinâmica de Políticas Estáticas de Fluxo

  • Carina Capelão de Oliveira UFMG
  • Glauco Gonçalves Cardoso PRODEMGE
  • Fernando Magno Quintão Pereira UFMG

Resumo


A análise de fluxo de informação é atualmente uma das técnicas mais importantes para descobrir vulnerabilidades em programas. Desde a sua concepção, esta técnica evoluiu ao ponto de alcançar grande precisão e escalabilidade. Entretanto, por ser estática, a análise de fluxo de informação é conservadora e, para garantir corretude, ela precisa invalidar alguns programas que são conhecidamente seguros. Enquanto a análise permanece totalmente estática, nem mesmo algoritmos exponenciais conseguem mudar esse cenário. Para abordar esse problema, propomos uma combinação de análise estática e checagem dinâmica para ampliar a precisão de técnicas de análise de fluxo de informação. Nossas checagens dinâmicas nos permitem detectar e descartar caminhos inseguros durante a execução do programa e preservar fluxos seguros de informação. Dessa forma, podemos garantir a segurança de programas mesmo diante de propriedades difíceis de serem analisadas estaticamente, como por exemplo polimorfismo de subtipagem. Para validar nosso trabalho, materializamos nossas ideias em uma ferramenta chamada InspectorJ, que insere instrumentação em um programa para prevenir a execução de caminhos inseguros.

Referências

Balzarotti, D., Cova, M., Felmetsger, V., Jovanovic, N., Kirda, E., Kruegel, C., and Vigna, G. (2008). Saner: Composing static and dynamic analysis to validate sanitization in web applications. In SP, pages 387–401. IEEE Computer Society.

Bruno Rodrigues, D. A. e. F. M. Q. a. P. (2016). Sparse representation of implicit flows with applications to side-channel detection. In Compiler Construction, pages 1–20. ACM.

Chebaro, O., Kosmatov, N., Giorgetti, A., and Julliand, J. (2012). Program slicing enhances a verification technique combining static and dynamic analysis. In SAC, pages 1284–1291. ACM.

Clause, J., Li, W., and Orso, A. (2007). Dytan: A generic dynamic taint analysis framework. In ISSTA, pages 196–206. ACM.

Cytron, R., Ferrante, J., Rosen, B. K., Wegman, M. N., and Zadeck, F. K. (1991). Efficiently computing static single assignment form and the control dependence graph. TOPLAS, 13(4):451–490.

Denning, D. E. and Denning, P. J. (1977). Certification of programs for secure information flow. Commun. ACM, 20:504–513.

Huang, Y., Yu, F., Hang, C., Tsai, C., Lee, D., and Kuo, S. (2004). Securing web application code by static analysis and runtime protection. In WWW, pages 40–52. ACM.

Hunt, S. and Sands, D. (2006). On flow-sensitive security types. In POPL, pages 79–90. ACM.

Nethercote, N. and Seward, J. (2007). Valgrind: a framework for heavyweight dynamic binary instrumentation. In PLDI, pages 89–100. ACM.

Rimsa, A., Quint˜ao Pereira, F. M., and d’Amorim, M. (2011). Tainted flow analysis on e-ssa-form programs. In CC, pages 122 – 141, Heidelberg, Alemanha. Springer.

Russo, A. and Sabelfeld, A. (2010). Dynamic vs. static flow-sensitive security analysis. In CSF, pages 186–199. IEEE Computer Society.

Vallee-Rai, R., Co, P., Gagnon, E., Hendren, L., Lam, P., and Sundaresan, V. (1999). Soot - a java bytecode optimization framework. In CASCON. IBM Press.

Vogt, P., Nentwich, F., Jovanovic, N., Kirda, E., Krügel, C., and Vigna, G. (2007). Cross site scripting prevention with dynamic data tainting and static analysis. In NDSS.

Zhang, R., Huang, S., Qi, Z., and Guan, H. (2011). Combining static and dynamic analysis to discover software vulnerabilities. In IMIS, pages 175–181. IEEE Computer Society.
Publicado
06/11/2017
Como Citar

Selecione um Formato
OLIVEIRA, Carina Capelão de; CARDOSO, Glauco Gonçalves; PEREIRA, Fernando Magno Quintão. Aplicação Dinâmica de Políticas Estáticas de Fluxo. In: SIMPÓSIO BRASILEIRO DE SEGURANÇA DA INFORMAÇÃO E DE SISTEMAS COMPUTACIONAIS (SBSEG), 17. , 2017, Brasília. Anais [...]. Porto Alegre: Sociedade Brasileira de Computação, 2017 . p. 140-153. DOI: https://doi.org/10.5753/sbseg.2017.19496.

Artigos mais lidos do(s) mesmo(s) autor(es)