Sintetizador de Gramáticas para Obfuscação de Dados em Sistemas de Logs
Resumo
Um evento de strings é a ocorrência de um padrão de texto produzido na saída de um programa. A captura e tratamento destes eventos de strings podem ser usados em diversas aplicações, como por exemplo, anonimização de logs, tratamento de erros e notificação dos usuários de um programa. Porém, atualmente não existe uma maneira sistemática para identificar e tratar eventos de string, cada sistema lida com este problema de maneira ad-hoc. Este trabalho formaliza o conceito de eventos de string e propõem um framework baseado em síntese de gramáticas para identificar e tratar esses eventos. Este framework é composto por: i) uma interface baseada em exemplos para especificar padrões de texto; e ii) um algoritmo de síntese de gramáticas com parsers eficientes para reconhecer estes padrões. Nós demonstramos a eficiência desta abordagem implementando o Zhefuscator, uma extensão da Java Virtual Machine (JVM). Esta ferramenta detecta padrões em texto conforme são produzidos, e os obfusca, a fim de proteger a privacidade dos dados de usuários do sistema.
Referências
Angluin, D. (1979). Finding patterns common to a set of strings (extended abstract). In STOC, pages 130–141, New York, NY, USA. ACM.
Angluin, D. (1980). Inductive inference of formal languages from positive data. Information and Control, 45(2):117–135.
Angluin, D. (1982). Inference of reversible languages. J. ACM, 29(3):741–765.
Angluin, D. and Smith, C. H. (1983). Inductive inference: Theory and methods. ACM Comput. Surv., 15(3):237–269.
Binder, W., Hulaas, J., and Moret, P. (2007). Advanced java bytecode instrumentation. In Proceedings of the 5th international symposium on Principles and practice of programming in Java, pages 135–144. ACM.
Chang, W., Streiff, B., and Lin, C. (2008). Efficient and extensible security enforcement using dynamic data flow analysis. In CCS, pages 39–50, New York, NY, USA. ACM.
Chen, K. and Wagner, D. (2007). Large-scale analysis of format string vulnerabilities in debian linux. In PLAS, pages 75–84, New York, NY, USA. ACM.
García, P., Vázquez de Parga, M., and López, D. (2008). On the efficient construction of quasi-reversible automata for reversible languages. Inf. Process. Lett., 107(1):13–17.
Globig, C. and Lange, S. (1994). On case-based representability and learnability of languages. In AII, pages 106–120, London, UK, UK. Springer-Verlag.
Gold, E. M. (1967). Language identification in the limit. Information and Control, 10(5):447–474.
Lämmel, R. and Stenzel, C. (2004). Semantics-directed implementation of method-call interception. IEE Proceedings Software, 151(2):109–128.
López, D., Sempere, J. M., and García, P. (2004). Inference of reversible tree languages. Trans. Systems, Man, and Cybernetics, Part B, 34(4):1658–1665.
Nakamura, K. and Matsumoto, M. (2002). Incremental learning of context free grammars. In ICGI, pages 174–184, London, UK. Springer-Verlag.
Parr, T. and Fisher, K. (2011). LL (*): the foundation of the antlr parser generator. Sigplan Notices, 46(6):425–436.
Peris, P. and López, D. (2010). Transducer inference by assembling specific languages. In ICGI, pages 178–188, Berlin, Heidelberg. Springer.
Ramson, S. and Hirschfeld, R. (2017). Active expressions: Basic building blocks for reactive programming. The Art, Science, and Engineering of Programming, 1(2).
Roesch, M. (1999). Snort lightweight intrusion detection for networks. In LISA, pages 229–238, Berkeley, CA, USA. USENIX Association.
Sakakibara, Y. (1995). Grammatical inference: An old and new paradigm. In ALT, pages 1–24, Berlin, Heidelberg. Springer-Verlag.
Sakakibara, Y. (1997). Recent advances of grammatical inference. Theor. Comput. Sci., 185(1):15–45.
Solar-Lezama, A., Rabbah, R. M., Bodík, R., and Ebcioglu, K. (2005). Programming by sketching for bit-streaming programs. In Sarkar, V. and Hall, M. W., editors, Conference on Programming Language Design and Implementation (PLDI), pages 281–294. ACM.
Solar-Lezama, A., Tancau, L., Bodík, R., Seshia, S. A., and Saraswat, V. A. (2006). Combinatorial sketching for finite programs. In Shen, J. P. and Martonosi, M., editors, Architectural Support for Programming Languages and Operating Systems (ASPLOS), pages 404–415. ACM.
Voigt, P. and Bussche, A. v. d. (2017). The EU General Data Protection Regulation (GDPR): A Practical Guide. Springer-Verlag, Berlin, Heidelberg, 1st edition.
Xie, Y., Yu, F., Achan, K., Panigrahy, R., Hulten, G., and Osipkov, I. (2008). Spamming botnets: Signatures and characteristics. SIGCOMM Comput. Commun. Rev., 38(4):171–182.