Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Encontrando
                                  falhas em
                                  aplicações web
                 ...
Tópicos
                      • Um pouco sobre flash
                      • Vulnerabilidades
                      • Como ...
Um pouco sobre Flash
sexta-feira, 14 de maio de 2010
Quem desenvolve em flash?
                      • A maioria das aplicações
                              desenvolvidas em fl...
O que eles esquecem?
                      • Flash é Client-Side e pode ser decompilado
                              apre...
Flash in Client-Side
                         Computador                Server


                            Flash Player
...
Flash in Client-Side
                         Computador                Server


                            Flash Player
...
Flash in Client-Side
                         Computador                Server


                            Flash Player
...
Flash in Client-Side
                         Computador                Server


                            Flash Player
...
Flash in Client-Side
                         Computador                Server


                            Flash Player
...
Flash in Client-Side
                         Computador                Server


                            Flash Player
...
Flash in Client-Side
                         Computador                Server


                            Flash Player
...
filetype:swf
                      •       Milhares de telas de login com
                              usuário e senha em ...
Vulnerabilidades
sexta-feira, 14 de maio de 2010
Information Leakage
                      • Como o swf roda na máquina do usuário,
                              qualquer ...
Flash Decompile


                                  AS Compila e gera SWF   Text   SWF decompila gera AS


               ...
Cross Site Scripting (XSS)
               • Assim como qualquer aplicação o flash também
                       precisa ter...
Cross Site Scripting (XSS)
               • Assim como qualquer aplicação o flash também
                       precisa ter...
Cross Site Scripting (XSS)
               • Assim como qualquer aplicação o flash também
                       precisa ter...
Cross Site Scripting (XSS)
               • Assim como qualquer aplicação o flash também
                       precisa ter...
Cross Site Scripting (XSS)
               • Assim como qualquer aplicação o flash também
                       precisa ter...
Cross Site Scripting (XSS)
               • Assim como qualquer aplicação o flash também
                       precisa ter...
Cross Site Scripting (XSS)
               • Assim como qualquer aplicação o flash também
                       precisa ter...
Crossdomain
               • Por padrão o Flash Player (a partir da versão 7)
                       implementa um SandBox...
Crossdomain Abuse
                     • O problema é inserir o crossdomain.xml
                             usando o wild...
Crossdomain Abuse
                     • O problema é inserir o crossdomain.xml
                             usando o wild...
Crossdomain Abuse
                     • O problema é inserir o crossdomain.xml
                             usando o wild...
Como fazer direito
sexta-feira, 14 de maio de 2010
Flash Security Facts

               • Não insira informações sensiveis em flash
               • Valide todos os inputs
  ...
Conclusões
sexta-feira, 14 de maio de 2010
Conclusões
               • A Adobe adora a Apple
               • ActionScript é uma linguagem de programação
           ...
Web 2.0?




                                  Perguntas?
sexta-feira, 14 de maio de 2010
Upcoming SlideShare
Loading in …5
×

Encontrando falhas em aplicações web baseadas em flash

2,444 views

Published on

Palestra apresentada no GTS 15, São Paulo, SP - Maio de 2010

Published in: Business, Technology
  • Be the first to comment

  • Be the first to like this

Encontrando falhas em aplicações web baseadas em flash

  1. 1. Encontrando falhas em aplicações web baseadas em flash Wagner Elias Gerente de Pesquisa e Desenvolvimento Conviso IT Security sexta-feira, 14 de maio de 2010
  2. 2. Tópicos • Um pouco sobre flash • Vulnerabilidades • Como fazer direito • Conclusões sexta-feira, 14 de maio de 2010
  3. 3. Um pouco sobre Flash sexta-feira, 14 de maio de 2010
  4. 4. Quem desenvolve em flash? • A maioria das aplicações desenvolvidas em flash são: • Peças publicitárias desenvolvidas por agências de propaganda • Interferências visuais criadas por designers sexta-feira, 14 de maio de 2010
  5. 5. O que eles esquecem? • Flash é Client-Side e pode ser decompilado apresentando o fonte em ActionScript sexta-feira, 14 de maio de 2010
  6. 6. Flash in Client-Side Computador Server Flash Player sexta-feira, 14 de maio de 2010
  7. 7. Flash in Client-Side Computador Server Flash Player sexta-feira, 14 de maio de 2010
  8. 8. Flash in Client-Side Computador Server Flash Player sexta-feira, 14 de maio de 2010
  9. 9. Flash in Client-Side Computador Server Flash Player sexta-feira, 14 de maio de 2010
  10. 10. Flash in Client-Side Computador Server Flash Player sexta-feira, 14 de maio de 2010
  11. 11. Flash in Client-Side Computador Server Flash Player sexta-feira, 14 de maio de 2010
  12. 12. Flash in Client-Side Computador Server Flash Player sexta-feira, 14 de maio de 2010
  13. 13. filetype:swf • Milhares de telas de login com usuário e senha em Client-Side • filetype:swf inurl:login OR inurl:secure OR inurl:admin • Milhares de arquivos crossdomain.xml sem controles de segurança • filetype:xml inurl:crossdomain sexta-feira, 14 de maio de 2010
  14. 14. Vulnerabilidades sexta-feira, 14 de maio de 2010
  15. 15. Information Leakage • Como o swf roda na máquina do usuário, qualquer informação, segredo no código está disponível para qualquer um que decompilar o arquivo swf sexta-feira, 14 de maio de 2010
  16. 16. Flash Decompile AS Compila e gera SWF Text SWF decompila gera AS CS3 / MTASC SWFScan / Flare DEMO sexta-feira, 14 de maio de 2010
  17. 17. Cross Site Scripting (XSS) • Assim como qualquer aplicação o flash também precisa ter seus inputs tratados class VulnerableMovie { static var app : VulnerableMovie; function VulnerableMovie() { _root.createTextField("tf",0,100,100,640,480); if (_root.userinput1 != null) { getURL(_root.userinput1); } _root.tf.html = true; // default is safely false _root.tf.htmlText = "Hello " + _root.userinput2; if (_root.userinput3 != null ) { _root.loadMovie(_root.userinput3); } } static function main(mc) { DEMO app = new VulnerableMovie(); } } sexta-feira, 14 de maio de 2010
  18. 18. Cross Site Scripting (XSS) • Assim como qualquer aplicação o flash também precisa ter seus inputs tratados class VulnerableMovie { static var app : VulnerableMovie; function VulnerableMovie() { _root.createTextField("tf",0,100,100,640,480); if (_root.userinput1 != null) { getURL(_root.userinput1); } _root.tf.html = true; // default is safely false _root.tf.htmlText = "Hello " + _root.userinput2; if (_root.userinput3 != null ) { _root.loadMovie(_root.userinput3); } } static function main(mc) { DEMO app = new VulnerableMovie(); } } sexta-feira, 14 de maio de 2010
  19. 19. Cross Site Scripting (XSS) • Assim como qualquer aplicação o flash também precisa ter seus inputs tratados class VulnerableMovie { static var app : VulnerableMovie; function VulnerableMovie() { _root.createTextField("tf",0,100,100,640,480); if (_root.userinput1 != null) { getURL(_root.userinput1); XSS } _root.tf.html = true; // default is safely false _root.tf.htmlText = "Hello " + _root.userinput2; if (_root.userinput3 != null ) { _root.loadMovie(_root.userinput3); } } static function main(mc) { DEMO app = new VulnerableMovie(); } } sexta-feira, 14 de maio de 2010
  20. 20. Cross Site Scripting (XSS) • Assim como qualquer aplicação o flash também precisa ter seus inputs tratados class VulnerableMovie { static var app : VulnerableMovie; function VulnerableMovie() { _root.createTextField("tf",0,100,100,640,480); if (_root.userinput1 != null) { getURL(_root.userinput1); XSS } _root.tf.html = true; // default is safely false _root.tf.htmlText = "Hello " + _root.userinput2; if (_root.userinput3 != null ) { _root.loadMovie(_root.userinput3); } } static function main(mc) { DEMO app = new VulnerableMovie(); } } sexta-feira, 14 de maio de 2010
  21. 21. Cross Site Scripting (XSS) • Assim como qualquer aplicação o flash também precisa ter seus inputs tratados class VulnerableMovie { static var app : VulnerableMovie; function VulnerableMovie() { _root.createTextField("tf",0,100,100,640,480); if (_root.userinput1 != null) { getURL(_root.userinput1); XSS } _root.tf.html = true; // default is safely false _root.tf.htmlText = "Hello " + _root.userinput2; XSS if (_root.userinput3 != null ) { _root.loadMovie(_root.userinput3); } } static function main(mc) { DEMO app = new VulnerableMovie(); } } sexta-feira, 14 de maio de 2010
  22. 22. Cross Site Scripting (XSS) • Assim como qualquer aplicação o flash também precisa ter seus inputs tratados class VulnerableMovie { static var app : VulnerableMovie; function VulnerableMovie() { _root.createTextField("tf",0,100,100,640,480); if (_root.userinput1 != null) { getURL(_root.userinput1); XSS } _root.tf.html = true; // default is safely false _root.tf.htmlText = "Hello " + _root.userinput2; XSS if (_root.userinput3 != null ) { _root.loadMovie(_root.userinput3); } } static function main(mc) { DEMO app = new VulnerableMovie(); } } sexta-feira, 14 de maio de 2010
  23. 23. Cross Site Scripting (XSS) • Assim como qualquer aplicação o flash também precisa ter seus inputs tratados class VulnerableMovie { static var app : VulnerableMovie; function VulnerableMovie() { _root.createTextField("tf",0,100,100,640,480); if (_root.userinput1 != null) { getURL(_root.userinput1); XSS } _root.tf.html = true; // default is safely false _root.tf.htmlText = "Hello " + _root.userinput2; XSS if (_root.userinput3 != null ) { } _root.loadMovie(_root.userinput3); XSS } static function main(mc) { DEMO app = new VulnerableMovie(); } } sexta-feira, 14 de maio de 2010
  24. 24. Crossdomain • Por padrão o Flash Player (a partir da versão 7) implementa um SandBox • Apenas com um crossdomain.xml é possível comunicar com outras aplicações sexta-feira, 14 de maio de 2010
  25. 25. Crossdomain Abuse • O problema é inserir o crossdomain.xml usando o wildcard padrão e sem determinar quais endereços podem se comunicar DEMO sexta-feira, 14 de maio de 2010
  26. 26. Crossdomain Abuse • O problema é inserir o crossdomain.xml usando o wildcard padrão e sem determinar quais endereços podem se comunicar DEMO sexta-feira, 14 de maio de 2010
  27. 27. Crossdomain Abuse • O problema é inserir o crossdomain.xml usando o wildcard padrão e sem determinar quais endereços podem se comunicar Permite que qualquer um acesse o conteúdo DEMO sexta-feira, 14 de maio de 2010
  28. 28. Como fazer direito sexta-feira, 14 de maio de 2010
  29. 29. Flash Security Facts • Não insira informações sensiveis em flash • Valide todos os inputs • Defina quais domínios podem acessar o conteúdo no crossdomain.xml • Se for inevitável o flash, criptografar o ActionScript (SWF Encrypt) sexta-feira, 14 de maio de 2010
  30. 30. Conclusões sexta-feira, 14 de maio de 2010
  31. 31. Conclusões • A Adobe adora a Apple • ActionScript é uma linguagem de programação e deve ser tratada como tal • É preciso definir e implementar controles de segurança como em qualquer aplicação web sexta-feira, 14 de maio de 2010
  32. 32. Web 2.0? Perguntas? sexta-feira, 14 de maio de 2010

×