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,338 views
2,284 views

Published on

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

Published in: Business, Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,338
On SlideShare
0
From Embeds
0
Number of Embeds
774
Actions
Shares
0
Downloads
38
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

×