Encontrando falhas em aplicações web baseadas em flash
Upcoming SlideShare
Loading in...5
×
 

Encontrando falhas em aplicações web baseadas em flash

on

  • 2,822 views

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

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

Statistics

Views

Total Views
2,822
Views on SlideShare
2,071
Embed Views
751

Actions

Likes
0
Downloads
35
Comments
0

11 Embeds 751

http://wagnerelias.com 613
http://wagnerelias.blogspot.com.br 44
http://theoldreader.com 27
http://www.evandrovv.com.br 22
http://www.slideshare.net 17
http://feeds.feedburner.com 14
http://wagnerelias.blogspot.com 9
http://infoblogs.com.br 2
http://translate.googleusercontent.com 1
http://static.slidesharecdn.com 1
http://webcache.googleusercontent.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Encontrando falhas em aplicações web baseadas em flash Encontrando falhas em aplicações web baseadas em flash Presentation Transcript

  • 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
  • Tópicos • Um pouco sobre flash • Vulnerabilidades • Como fazer direito • Conclusões sexta-feira, 14 de maio de 2010
  • Um pouco sobre Flash sexta-feira, 14 de maio de 2010
  • 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
  • O que eles esquecem? • Flash é Client-Side e pode ser decompilado apresentando o fonte em ActionScript sexta-feira, 14 de maio de 2010
  • Flash in Client-Side Computador Server Flash Player sexta-feira, 14 de maio de 2010
  • Flash in Client-Side Computador Server Flash Player sexta-feira, 14 de maio de 2010
  • Flash in Client-Side Computador Server Flash Player sexta-feira, 14 de maio de 2010
  • Flash in Client-Side Computador Server Flash Player sexta-feira, 14 de maio de 2010
  • Flash in Client-Side Computador Server Flash Player sexta-feira, 14 de maio de 2010
  • Flash in Client-Side Computador Server Flash Player sexta-feira, 14 de maio de 2010
  • Flash in Client-Side Computador Server Flash Player sexta-feira, 14 de maio de 2010
  • 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
  • Vulnerabilidades sexta-feira, 14 de maio de 2010
  • 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
  • Flash Decompile AS Compila e gera SWF Text SWF decompila gera AS CS3 / MTASC SWFScan / Flare DEMO sexta-feira, 14 de maio de 2010
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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 • 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
  • Conclusões sexta-feira, 14 de maio de 2010
  • 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
  • Web 2.0? Perguntas? sexta-feira, 14 de maio de 2010