Archive for abril \22\-03:00 2008

Vulnerabilidades XSS: A Saga Continua…

terça-feira, 22 abril 2008

Ainda bestificado com as Lojas Ame… sofrendo de cross site scripting e principalmente de ver uma das minhas caixas postais com o “famoso” e-mail citado no FISL 9 (ainda bem que eu assisti a palestra antes, pois talvez eu fosse um atingido agora – quero dizer, isso se o programa que o e-mail tentou instalar em minha máquina rodasse no Linux, né), decidi procurar um pouco mais sobre o assunto.

Não foi muito difícil encontrar uma site que lista páginas com falha de XSS. E as Lojas Ame. está listada lá desde fevereiro de 2007. Junto com ela, tem mais algumas lojas famosas, como Sub., Sarai… Muitas. Até meu banco está listado. E tem mais alguns outros bancos também.

Mas não são todos. Tem muitos sites famosos que parecem não ter este tipo de vunerabilidade (ou pelo menos não estão listados).

Eu creio que ninguém é perfeito, todos podemos cometer erros, agora não corrigir uma falha e fazer pouco caso disso, só porque é algo client-site é muita falta de consideração destas grandes empresas.

No fim, eu creio (pelo menos no caso das grandes lojas), que a falha está tão difundida devido a todas elas usarem um mesmo sistema (até pq todas elas tem a mesma cara, já notaram isso?), que provavelmente deve ser tercerizado por uma empresa que não se preocupa muito com segurança.

Eu já estou avisando todas as pessoas conhecidas para nunca mais confiar em e-mails destas lojas. Nunca mais eu clico em link do tipo “oferta só via este e-mail”. Agora eu só compro direto pelo site. Até vou ver as ofertas via e-mail, mas não clico mais em comprar. Na verdade, estou pensando até em radicalizar e abolir o e-mail da minha vida! Será que resolve? 😛

Bah, fico pensando nas pessoas que eu dizia “pode comprar pela Internet, não é tão inseguro assim como dizem, se for de lojas de renome”. Acho que vou dizer para elas agora: “lembra quando eu disse que não era tão inseguro? Pois é… É pior do que dizem”!


Estava pensando em algo para solucionar isso, haja visto que estas empresas nem se preocupam com nós usuários. Bem que podiam inventar uma extensão para o Firefox que alerte o usuário quando ele entrar em um site que sofre de vulnerabilidades tão banais assim. Quem sabe esta “gente” criasse vergonha na cara com isso.

IPv6 onde “comprar”?

segunda-feira, 21 abril 2008

Hoje dei uma pesquisada para ver se meu router (olha a minha esperança!) era compativel com IPv6. Pensei em usar este endereçamento na minha rede interna. Infelizmente, descobri que não é tão fácil encontrar equipamentos compatíveis. Fiquei horas olhando na página da D-Link e até usei a ferramenta de busca, mais nada.

Depois de tentar algumas buscas no Google, acabei encontrando este link, que seria de um site com a lista de equipamentos compatíveis. Parece que as empresas fornecedoras de hardware não estão muito preocupadas com isso ainda, pois não tem muitos modelos listados.

Mas não tenho certeza, pois na página da D-Link de um dos modelos listados, não fala nada de IPv6 e inclusive tem este modelo da Linksys (WRT54G) que não é citado no site, mas tem how-to de como implementar (parece que usa Linux como sistema operacional).

Vou ter que pesquisar mais sobre isso. Pelo jeito não vai ser tão simples assim adotar o padrão, nem que seja para teste.

FISL: Lamentações

domingo, 20 abril 2008

Lamento 2 coisas deste FISL…

Primeiro de ter me confundido com os horários e ter perdido a palestra de XP e Scrum. Estava curioso para ver do que exatamente se tratava isso (sei o que é eXtreme Programming, mas não sei o que é o Scrum. Em todo caso, este post no blog de um dos palestrantes parece ser uma boa fonte de informação.

Depois, de ter perdido a palestra da Fernanda Weiden, Introducing Google Summer of Code. Acreditei que ela seria apresentada em inglês, mas por curiosidade tentei assistir pela TV Software Livre. Percebi que a palestra era muito boa, mas quem disse que a TV Software Livre queria funcionar? Por azar, ainda perdi de ver a Fernanda palestrando. Eu tinha visto ela andando pelo Fórum (nem sabia quem ela era) e confesso que fiquei bastante encantado pela moça. Paciência, né. 😛

FISL: Cadê meu IP?

sábado, 19 abril 2008

Uma das palestras mais “pessimistas” do FISL foi a do IPv6 – prepare-se agora ou fique ilhado depois.

Quando eu estudei Redes de Computadores (na época creio que o BR-Linux nem existia ainda, hehehe), já se discutia que o atual endereçamento IP (versão 4) estava com os dias contados. Que logo-logo acabaria todos os endereços disponíveis e seria o caos na Internet.

A verdade é que, passado 12 anos, a Internet continua funcionando. Novas tecnologias foram adotadas, como o NAT, que deram sobrevida ao IPv4. Isso é o legal da Internet… Não adianta tentarem acabar com ela, tentarem fazer censura, a própria rede encontra uma forma de continuar “viva”.

Em todo caso, a muito tempo estava curioso para saber o que era este tal de IPv6, mas sempre adiava. Aproveitei que o tema seria apresentado no FISL e fui assistir.

Como eu disse, o palestrante apresentou um panorama bastante pessimista, prevendo que até 2011 todas as faixas IP estariam esgotados no órgão mundial (IANA), sendo que restariam apenas IPs “em estoque” nas regionais (que são 5) e nas entidades dos países (exemplo, CGI.BR). Até 2012/2014 devem acabar todos.

Claro que isso não significa que a Internet vai parar, mas pode significar (caso o IPv6 não seja amplamente utilizado até a data) em mais soluções “gambiarras”, como NAT sendo usado pelas “teles”. Exemplo: Virtua fornecendo um IP não-real para a sua casa.

Nisso eu até concordo com o palestrante. Realmente o uso de NAT nem sempre é tão “legal”. Principalmente quando se precisa usar aplicativos peer-to-peer, como por exemplo VOIP. E gera uma falsa sensação de segurança, porque muitos administradores deixam de instalar firewall, achando que estão protegidos devido ao NAT.

O que mais eu achei interessante, em relação ao IPv6, é que vai ser fornecido uma quantidade “obscena” de IPs para o usuário final. Aliás, no final do endereçamento é usado o endereço MAC da placa de rede, o que significa que não será mais necessário usar DHCP, segundo o palestrante; todos os equipamentos vão conseguir saber o seu IP, sem necessidade de configuração.

Ele fez uma brincadeira interessante: Vai ser tanto IPv6 disponível para o usuário final, que até a lâmpada vai poder “conversar” algum protocolo com o interruptor de luz, hehehe

Saí da palestra morrendo de vontade de testar o tal IPv6 e começar a adotar logo esta nova tecnologia, mas o fato é que isso não é tão simples. Nem todos os provedores estão preparados para fornecê-lo, sem mencionar que vai ser necessário trocar muitos equipamentos que atuam na camada de rede (como por exemplo, roteadores) para compatibilizar, mas é algo inevitável.

Além disso, alguns aplicativos podem não funcionar com o novo endereçamento, sendo que provavelmente vai ser necessário usar os dois endereçamentos por algum tempo.

Uma sugestão válida, é que quando for necessário comprar um novo equipamento de rede, já procure comprar um modelo que suporte este novo endereçamento.

FISL: Drupal

sábado, 19 abril 2008

Confesso que foi com muita desconfiança que fui conferir a palestra do CMS Dupral do dia 19/04. Como envolvia um partido político, fiquei com receio de ser algum tipo de palestra-propaganda, mas não foi o caso.

Não foi uma palestra do tipo “técnica”, mas foi interessante para ter uma noção do que é o Dupral. Eu já estou algum tempo tendo que avaliar um CMS e inclusive já pediram para desenvolver um, mas não gosto de ficar reinventando as coisas.

Neste link, é possível ver um post do blog de um dos palestrantes e inclusive tem um link para o PDF da apresentação do fórum.

Me pareceu um CMS bastante robusto e simples de implementar, e pretendo usá-lo, pelo menos em teste, brevemente.

Uma pergunta interessante que foi feita após a palestra é relativa a segurança. Uma pessoa levantou a hipótese de que se soubermos o código fonte do Drupal, principalmente em relação ao esquema do banco de dados (que por padrão é em MySQL), isso poderia facilitar ataques, como por exemplo, de SQL Injection.

Os palestrantes, com ajuda da Chuva Inc. deu uma resposta bastante aceitável: conhecer o código fonte e a estrutura do banco de dados, não significa que vai se conseguir invadir ou roubar os dados, pois o próprio CMS implementa vários mecanismos de segurança. Como complemento ao que eles disseram, vale seguir as dicas do que foi mostrado na palestra sobre segurança no PostgreSQL (aplicável, também, ao MySQL).

Por fim, vale citar o link da comunidade Dupral Brasil. Fica a reclamação que os palestrantes não divulgaram o valor cobrado para implementar a solução, hehehe

FISL: Primeiras palestras do último dia

sábado, 19 abril 2008

As duas primeiras palestras do dia 19/04 foram sobre vulnerabilidades de aplicações na web.

A primeira foi apresentada pelo grupo OWASP-BR, uma entidade que se preocupa em melhorar a segurança de aplicativos web. Em seguida, assisti uma palestra de Er Galvão Abbott sobre métodos para evitar cross-site-scripting.

O grupo OWASP-BR apresentou as 10 vulnerabilidades mais críticas encontradas em aplicações WEB, sendo que as mais críticas, em ordem, são:

  • Cross Site Scripting (XSS), que consiste em rodar código script malicioso no navegador web do cliente;
  • SQL Injection, que em geral se inicia forçando um erro na página, para que o cracker consiga determinar mais informações sobre o SGDB. Depois o cracker injeta código SQL, a fim de ter acesso não autorizado de informações;
  • Execução maliciosa de arquivos, que ocorre em sistema que aceitam arquivos de usuários remotos. Em geral, o cracker com acesso ao sistema envia uma página ou arquivo preparado, que depois é executado dentro do sistema web, podendo causar sérios danos ao sistema;
  • Referência insegura direta a objetos, onde o desenvolvedor expõe de forma direta informações internas que não deveriam aparecer, como por exemplo, diretórios, nome de arquivos, ID de usuários, etc, por meio de URL ou parâmetros de formulário.

Estas vunerabilidades correspondem a cerca de 70%. Este documento informa as outras vunerabilidades e dá mais detalhes sobre o assunto.

Sobre a palestra do Er. Galvão Abbott, uma curiosidade é que ele havia recebido um link de uma grande empresa com ataque XSS no e-mail. Ele, que é um usuário experiente, quase foi enganado pelo ataque, dada a sofisticação do mesmo. No slide, ele mostra o código mas protege e não divulga qual seria esta empresa. Perguntei para o “santo Google” e ele me respondeu: Lojas Ame…!!! Cheat!!!

Pior, a vunerabilidade não foi resolvida até agora! Isso é muito triste. Pelo que eu percebo, não dá mais para confiar nem quando o site tem SSL, está com o link correto, etc. Eu creio que ninguém está livre de falhas, mas não resolve-las é extremamente grave.

Fica uma das mensagem dele na palestra: Não se deve dar crédito excessivo à uma aplicação, e relaxar em cuidados com segurança, porque ela foi desenvolvida em linguagem x, foi desenvolvida pela empresa y, pertence a empresa z, ou está utilizando o sistema operacional xyz… E sempre procurar aplicar segurança concentrando no que deve ser permitido e não no que deve ser proibido, pois por melhor que seja o desenvolvedor, jamais ele irá prever todas as possibilidades de falha de segurança.

Ah, fazia algum tempo que eu não comprava mais nas Lojas Ame…, creio que vou continuar não comprando, hehehehe (ainda bem que recebi o brinde que o Terra me prometeu, quando eles mandaram um e-mail em massa solicitando atualização de dados, porque senão eu estaria seriamente preocupado agora, hehehe – bom, um cracker não mandaria um brinde real, né? vixe…)


Seguindo conselhos resolvi remover o nome da empresa, mas não fica difícil adivinhar quem é.

FISL: Outras palestras do segundo dia

sexta-feira, 18 abril 2008

Teve algumas outras palestras que eu participei no segundo dia, que vou comentar rapidamente.

Palestra W3C: foi uma palestra sem muitas novidades para mim, mas vale a pena citar, para o caso de alguém se interessar pelo assunto. Neste link é possível acessar o slide da apresentação no FISL. Para navergar entre os slides, basta clicar no corpo da página html do link.

O mais marcante da palestra, para mim, foi a situação que o palestrante enfrentou ao receber uma ligação de um visitante de um site sobre um evento dele. O visitante reclamou que no site não havia a data do evento. Isso seria uma falha gravíssima, mas no fim, o palestrante descobriu que a data foi colocada no formato de imagem e a pessoa que queria a informação era cega e usava um software que lia a página para acessar o conteúdo, portanto ele não tinha como “ler” a imagem. A partir deste momento o palestrante se deu conta da importância de seguir padrões.

Palestra: Introdução ao Ruby on Rails. Fui assistir esta palestra mais por curiosidade para conhecer melhor esta linguagem. Já havia lido algumas coisas sobre RoR e inclusive assistido um vídeo, mas acreditei que vendo a palestra poderia ter uma noção melhor da linguagem. A verdade é que não achei nada demais em relação a linguagem. Ela livra o desenvolvedor de certas tarefas, como saber trabalhar com AJAX ou criar um BD manualmente, mas não achei isso tão inovador, pois tem que saber a sintaxe da linguagem e até porque eu creio ser mais chato no desenvolvimento a questão de criar telas de formulários.

Palestra: por trás das fírulas do X. Foi a única palestra com o tema desktop que eu consegui assistir neste fórum. Queria ter participado de algumas palestras do KDE, mas infelizmente elas conflitavam com outras palestras mais importantes, para mim, em termos profissionais. Foi extremamente teórica e serviu para dar uma noção de como trabalha a parte gráfica do Linux. Como mensagem, ficou a idéia que isso precisa de uma grande reestruturação.

TOP FISL 9: Backup prático

sexta-feira, 18 abril 2008

Para mim, a palestra mais inovadora do FISL 9, que mais acrescentou conteúdo, a palestra que eu pensei “bah, valeu os cenzão que paguei”, foi a de backup prático, ministrado pelo Solli Honório. Na verdade, não sei até que ponto realmente é inovador, mas é que eu nunca tinha ouvido falar sobre o tal backup diferencial em disk-to-disk.

O modo mais comum de se fazer backup é em fita magnética, mas quem nunca precisou restaurar um, não sabe o significado disso. Isso sem falar nos riscos de dar erro na mídia, quando não é testada a copia.

Eu já tive que esperar quase 12 horas para recuperar um backup, com o cliente nervoso, aguardando ansiosamente pelo seu dado perdido. Depois desta experiência, quando o backup passa dos 20Gb, eu sempre sugiro embutir na política de backup, um armazenamento em disco também, além do meio magnético.

Em geral, os clientes gostariam que fosse mantido backup em disco de dados de mais de 1 dia, mas infelizmente, isso é muito difícil, pois implica em gastar muito dinheiro em discos rígidos. No máximo, eu consigo armazenar 2 dias de backup em disco. No geral, isso resolve. Mas, sempre tem o caso do cliente querer dados de vários dias atrás; pior, nem sempre sabe o dia exato que o dado foi perdido. Dai não tem jeito. Se fica “algumas-muitas-horas” procurando nas fitas magnéticas.

Bem, vamos ao que interesse…

Após um panorama geral sobre backup, o Solli abordou o disk-to-disk, preferencialmente se usando disk storage, mas que poderia ser até via web. Depois ele começou a falar em manter um histório de backup em disco, eu já pensei: “bah, vai ser difícil de implementar isso. Soluções muito caras”… Mas dai ele começou a falar em backup diferencial, eu confundi os termos e pensei que já era o famoso backup incremental (esse dai eu não arrisco de jeito nenhum). Já estava quase indo embora, quando eu entendi a diferença. “Uau! Um backup que você fica com o arquivo atualizado e pode aplicar diff para regredir?! Fantástico!!!”

É isso mesmo. O sistema faz uma checagem dos arquivos que foram modificados, marca estes arquivos, vê apenas as partes dos arquivos que foram alterados, gera um diff e atualiza o arquivo. Com o diff, é possível regredir o backup. Na pior hipótese, caso seja perdido estes arquivos com o diff, você ainda terá o último backup completo.

Só isso já seria suficiente para me deixar muito feliz. Mas, ainda tem mais: existe um front-end escrito em Perl (eu amo Perl!), que roda via browser e faz todo o gerenciamento do backup diferencial e ainda por cima com o histórico! Maravilhoso! Espetacular! Não tenho palavras para resumir o que estou sentido, hehehe

O aplicativo se chama BackupPC, e pode ser encontrado no link: http://backuppc.sourceforge.net/. Vale a pena incorporar isso em sua vida!

Para finalizar, o Solli sugeriu que o backup em fita não deve ser abandonado totalmente. O ideal é usar o backup disk-to-disk, associado com um backup disk-to-disk-to-tape (neste caso, usando outra ferramenta para gravar na fita, ou seja, você precisa de um BackupPC e um Bacula, por exemplo).

Replicação em PostgreSQL: Fim do sonho

sexta-feira, 18 abril 2008

Assisti hoje, no segundo dia do FISL, a outra palestra sobre replicação de dados no PostgreSQL, com o Bucardo. Já cheguei meio “traumatizado” com a palestra sobre replicação do dia anterior (porque não é tão simples replicar dados no PostgreSQL como é no MySQL???).

Até que a palestra começou bem, e eu comecei a ficar feliz quando o palestrante falou que ela era uma solução multi-master e escrita em Perl, Pl/Perl e Pl/pgsql, mas começou a desandar quando falou que usa triggers (não me agrada usar triggers na minha base de dados para implementar replicação, pois não quero “sujar” minha BD). Piorou quando disse que era uma solução que não aceitava chave primária composta, apesar que os autores do projeto estão pensando em melhorar esta funcionalidade. Na verdade, creio que até eu poderia adaptar o Bucardo para as minhas necessidades, mas o fato de usar triggers realmente não me agrada. Eu quero ter controle total sobre a minha base de dados. Sou muito possessivo com as minhas coisas! 🙂

Tem mais alguns pré-requisitos, como PostgreSQL 8.1 ou superior, além de ter que ter o Perl e mais alguns módulos do Perl instalados no servidor “principal” de replicação, mas o fato de não aceitar chave primária composta é muito limitante.

Achei interessante que ele tem alguns controles para resolver conflito de chave, como por exemplo, você pode escolher qual servidor tem prioridade, em caso de conflito, ou até uma opção engraçada, que é a “random” (isso mesmo, faz um “sorteio”, huahuhauhua). Mas bem que podia ter uma opção do tipo “migrate“, onde os registros duplicados de um dado servidor tivessem sua chave primária modificada, sem perda de dado, mas tudo bem. No fim, o que vale mesmo é adotar o velho range de auto-numeração.

Creio que vou pesquisar um pouco mais a replicação por log e ver se existe maneira de deixar o servidor “escravo” aberto para seleção, assim como eu faço atualmente com o MySQL (solução perfeita para as aplicações que eu tenho atualmente). Na pior das hipóteses, foi implementar a replicação manualmente usando triggers MINHAS, hehehe

FISL 9: Dia do PostgreSQL!!!

quinta-feira, 17 abril 2008

Depois do primeiro dia de FISL, daria para “apelidar” hoje como o dia do PostgreSQL. Amanhã, ainda, terá pelo menos mais uma palestra sobre replicação de dados, mas somente hoje eu participei de 4 palestras sobre este SGDB.


Logo cedo, assisti a palestra sobre replicação de dados, onde foram abordados conceitos como replicação síncrona e assíncrona e que às vezes uma solução mais simples pode ser a mais indicada. O palestrante usou uma analogia com vários tipos de carros de velocidade, passando por carros que desenvolviam mais de 400Km/h mas que só andavam em linha reta, sem muito controle, passando por fusca, que chega a 120Km/h por hora com algum esforço, mas anda para todos os lados e pode ser usado na cidade, até chegar no carrinho de rolimã, que não tem motor, mas em compensação tem custo quase zero de manutenção.
Mostrou várias ferramentas para replicação, sendo que eu destacaria o skytools da Skype, uma solução de replicação síncrona com centenas de servidores rodando em ambiente de produção, soluções mais clichês, como o Slony (que usa triggers para replicações assíncronas, mais indicado para replicação de tabelas), Warm-Standby (baseado em log), que aparentemente seria algo similar ao sistema de replicação do MySQL, mas que precisa que o slave fique em modo de espera, sem poder ser usado.
Fiquei surpreso com a afirmação de que pg_cluster é extremamente instável com base de dados grande (ele citou ser impossível em usar em uma base de dados de mais de 10GB, porque simplesmente o SGBD pára de funcionar com ele). Pensava em adotar esta solução em um projeto.

Depois, teve uma palestra muito interessante sobre segurança de dados no PostgreSQL. O palestrante, usou a frase “Safe Data Is Happy Data” (Dado seguro é dados feliz) como referência em toda a apresentação.

Basicamente, ele falou que a maioria das soluções de sistemas de banco de dados não se preocupavam com a segurança do lado de dentro do firewall, apenas definindo políticas de segurança no roteador, servidor web, etc. Esta despreocupação com a segurança interna é uma das principais causas de “dado infeliz”. Ele citou, que cerca de 2/3 das invasões são internas, com roubo de dados por funcionários, etc.

Para ter uma base de dados realmente segura, é necessário várias ações, entre elas, definir corretamente uma política de acesso de senhas no arquivo pg_hda.conf (por exemplo, usando ident apenas para usuários tipo administradores logados em rede local e segura e md5 para usuários web com conexão ssl, etc.).

Outra atitude a ser adotada é definir corretamente os direitos de acesso as tabelas. Por exemplo, definir usuários web com acesso apenas de select e os usuários da sua rede interna com acesso total, bem como definir acesso apenas as tabelas necessárias para cada grupo.

Infelizmente não lembro mais de todas as práticas de segurança que foram sugeridas, mas tem uma que achei muito interessante, que nem sempre é utilizada, que se trata da auditoria do sistema. Eventualmente, pessoas mal intencionadas com acesso ao sistema ou a base de dados podem roubar informações ou alterar dados por má fé ou até mesmo erro. A auditoria ajuda a detectar estes problemas e até mesmo corrigir, voltando ao estado anterior. Para isso, é essencial usar triggers e definir corretamente o acesso as tabelas de auditoria, para que um invasor não consiga comprometer esta auditoria, também.

Em seguida, teve uma palestra sobre “Postgres Application Server” (aliás, a palestra poderia ser chamada de Perl no PostgreSQL, hehehe), que seria basicamente mover parte da aplicação para o SGDB, como por exemplo, validação de dados, uso de store procedures para processamentos em lote, etc.

Podem ser usadas várias linguagens para a implementação, sendo que o palestrante citou o pl/sql que seria uma linguagem segura e que não precisa de nada, pois é como se fosse um “default” do PostgreSQL e linguagens ditas “inseguras”, as quais poderiam fazer um bom estrago na base de dados ou no sistema (se forem mal utilizadas), pois implementam acesso a disco, etc. Entre estas linguagens, o palestrante deu destaque para a Lua e o Perl, mas também poderia ser usado PHP, C, etc.

Destaque para a implementação de um domain email (tipo de dado), validado via Perl, com poucas linhas (graças ao uso do CPAN).

A última palestra de PostgreSQL do dia foi sobre boas práticas em desenvolvimento em banco de dados. Foi a palestra mais genérica sobre PostgreSQL, mas certamente foi a mais interessante. Para quem tiver interesse, dá para conferir o pdf dos slides da palestra, aqui (foi alterado um pouco para o FISL, pelo que eu pude ver, mas a idéia original da mensagem continua a mesma).
As partes que eu acredito que valem a pena destacar, são:

  1. Uma pessoa sem bom senso não se preocupa com melhores práticas;
  2. Uma pessoa com bom senso e pouca experiência procura aprender e utilizar as melhores práticas;
  3. Uma pessoa com bom senso e muita experiência sabe quando não utilizar as melhores práticas.

A maioria dos desenvolvedores devem procurar se enquadrar no segundo item e apenas quando tiverem muita “estrada” e muitas “melecas” (como o palestrante gostava de dizer) feitas é que pode pensar em ir para o terceiro grupo de pessoas.

Além disso, vale a pena citar uma frase de Eric Raimond: “Estrutura de dados inteligente e código burro trabalham muito melhor do que o contrário”, ou seja, se a estrutura de dados for mal definida, nada salva o projeto, nem programadores fenomenais. Tudo parte de uma boa definição da modelagem dos dados. Nos slides tem várias dicas boas para se conseguir isso. Vale a pena conferir.