As “vilãs” CFOBJECT e CreateObject()
Publicado; 16/03/2004 Arquivado em: ColdFusion Comentários desativados em As “vilãs” CFOBJECT e CreateObject()Hoje na lista CF-Brasil surgiu um assunto interessante sobre o porquê de algumas tags serem desabilitadas em provedores hospedagem compartilhada ColdFusion, especialmente a tag CFOBJECT e a função CreateObject(). Re-posto aqui a minha mensagem para a lista.
Na verdade poucos sabem, até porque a maioria dos provedores de hospedagem não configura seus servidores corretamente, mas a tag CFOBJECT e a sua função correlata CreateObject não deve ser habilitada numa hospedagem compartilhada ColdFusion MX (mesmo aquelas que fazem uso de sandbox security) por oferecer riscos às aplicações que ali residem. Os riscos vão desde manipulação de variáveis de uma aplicação qualquer até o acesso a datasources e arquivos (“sandboxeados” ou não). Deixando estas tags habilitadas o servidor torna-se um prato cheio para indivíduos mal intencionados e que conheçam um pouco mais a fundo o runtime do CFMX e da própria plataforma Java. Não se compara com a facilidade de se manipular e abusar do servidor com CFFILE sem sandbox security configurado (o que muitos ainda fazem), mas é bastante real e possível. Isso é um prato cheio para discussões em listas de fora e blogs de especialistas, dê uma googlada sobre o assunto que você terá muitos resultados, incluindo scripts para quem quiser brincar e conferir o que estou dizendo.
Em ambiente compartilhado (mesmo com sandbox security ativada) todos os “sites” do CFMX compartilham uma mesma instância do Java Machine (JVM). Desta maneira uma série de informações que deveriam ser exclusivas de uma determinada aplicação/site ficam expostas para consulta e alteração por todos os usuários que “habitam” aquela mesma instância de JVM (no caso do CFMX de todos os sites usando esta tecnologia). Para exemplificar, confira o script abaixo, que permite a visualização (e alteração se você quiser) de um enorme repositório de informações sensíveis do CFMX:
Em versões CFMX 6.0 pré SP1 era possível descobrir a senha do administrator com um simples scriptzinho. A Macromedia foi “tapando os buracos” aos poucos, mas de uma maneira que o pessoal costuma chamar “security by obscurity”, ou seja, escondendo a brecha mas não eliminando-a por completo. A coisa não se restringe somente ao próprio servidor CF, mas às aplicações rodando em todo o servidor. Você pode alterar variáveis, conhecer seus valores (ex: variáveis de sessão armazenando dados sensíveis como cartões de crédito etc) e por aí vai. Este é um defeito (minha opinião) da plataforma JRun e há tempos a Macromedia não corrige ou altera isso, apesar dos inúmeros pedidos da comunidade. Deve ser algo difícil por ser estrutural e inerente ao produto.
Desta maneira a única maneira de se hospedar CFMX de forma completa (sem limitação de tags) e totalmente segura e em ambiente “compartilhado” é criar multiplas instâncias de CFMX (mais conhecido como CFMX for J2EE, configuração presente na nova versão Enterprise do 6.1), seja sob o JRun (nativo) ou sob outro servidor J2EE. O problema é que cada instância terá a sua JVM exclusiva e isso consome muito mais recursos do servidor, limitando o número de contas que podem ser adicionadas à máquina (umas 50-100 contas para um servidor P4 (single CPU) com 1-2Gb de RAM num chute, imaginando o consumo de uns 30-40 Mb por cada instância/jvm, tal como a Macromedia teoriza). Trata-se de uma hospedagem “semi-dedicada” por assim dizer e por isso não devemos encará-la como “compartilhada”.
A dobradinha JBoss/TomCat (Apache), por exemplo, permite isolar aplicações de forma completa compartilhando uma única JVM. Porém o CFMX com TomCat ainda não é oficialmente suportado (veja este technote e este artigo) pela Macromedia. Dessa maneira torna-se um setting mariginal, difícil de garantir que vai rodar numa boa, inclusive com upgrades do CFMX, apesar de ser tecnicamente possível. Quem sabe no futuro?
Concordo que é um GRANDE limitador para a tecnologia e esta é a minha maior crítica ao servidor CFMX (leia o meu guia de configuração de sandboxes para ambiente compartilhado em CFMX), mas se você for parar para pensar, há muita coisa boa que pode ser feita (inclusive mimetizar orientação à objetos com CFCs) sem usar esta tag/função. A idéia é: uma hospedagem ColdFusion é uma hospedagem ColdFusion, ponto final. Não é uma hospedagem Java ou similar, apesar do CF suportar nativamente isso.
Com relação as outras restrições tratam-se de questões de performance e/ou de segurança menores (leia as minhas considerações no tal guia). Você pode, sozinho, degradar muito a performance do servidor inteiro se inventar moda de indexar a cada segundo seus índices Verity, ou então “schedular” 200 scripts CFM de 400K e mais cem queries para rodar a cada segundo… sim, tem “programadores” com esta capacidade…. E isso não é exclusivo do CF, em qualquer outra tecnologia temos estes problemas em ambientes compartilhados.
Security Patch para CFMX
Publicado; 16/03/2004 Arquivado em: ColdFusion 3 ComentáriosA Macromedia acaba de lançar uma correção de segurança para o ColdFusion MX (todas as versões) e JRun 4.0 que corrige um bug que permitia ataques DoS, através de requests SOAP, contra servidores CFMX que estivessem oferecendo (publicando) webservices.
MPSB04-04 Security Patch available for ColdFusion MX and JRun 4.0 Web Services DoS
Esta correção já está adicionada ao Pacote de correções para CFMX 6.1 do CFGIGOLÔ.
Locaweb com CFMX 6.1
Publicado; 05/03/2004 Arquivado em: ColdFusion 17 ComentáriosPrezados, a correria anda grande por aqui (por isso a falta de posts). Contudo faz-se necessário uma pausa na correria para anunciar uma boa notícia:
A Locaweb, a maior empresa de hospedagem do Brasil (a melhor também na minha opinião), está oferecendo hospedagem CFMX 6.1 de primeiríssima qualidade. É o fim das lamúrias por um provedor de hospedagem CF de qualidade no Brasil. Finalmente um serviço de hospedagem CF de qualidade e padrão inexistente (por enquanto) no Brasil.
Tive o prazer de trabalhar voluntariamente junto à equipe técnica da Locaweb e da Macromedia Brasil para garantir que este seja o melhor serviço de hospedagem compartilhada ColdFusion MX do Brasil. Tanto é que já estou utilizando o serviço (e pagando por isso) para alguns sites de amigos. Não tenho receio em dizer que este é o melhor e mais seguro serviço de hospedagem compartilhada CFMX do Brasil. Uma observação: este blog também está hospedado na Locaweb.
Apenas alguns detalhes (em breve escrevo mais):
– Servidores Xeon bi-processados;
– TODOS os patches de CFMX aplicados;
– Sandbox security feita com carinho e cuidado (seu site ficará realmente seguro);
– FlashRemoting;
– ColdFusion mapping para você não ter dor de cabeça com paths e afins.
Não deixem de conferir o press-release da Macromedia e o site da Locaweb com o novo serviço.
EXTREMAMENTE recomendado.
CFFILE e Vicente Marçal
Publicado; 13/02/2004 Arquivado em: ColdFusion 1 comentárioPor falar em artigos, vale conferir na edição deste mês da revista WWW um artigo do Vicente Marçal sobre o uso da tag CFFILE para upload de arquivos. O artigo está muito bem escrito, incluindo exemplos e código fonte, e é destinado ao público iniciante em CFML. O artigo do Vicente serve de estímulo para que vejamos mais reportagens/artigos do tipo em publicações especializadas. O ColdFusion ainda tem uma penetração de mercado muito pequena em comparação a outras tecnologias. Artigos como este vêm mudando isso gradativamente. Parabéns Vicente!
SECURITY PATCHES para CFMX
Publicado; 28/01/2004 Arquivado em: ColdFusion 6 ComentáriosA Macromedia acaba de lançar dois security patches para o CFMX 6.1. O primeiro (apenas versão Enterprise), importantíssimo para quem oferece CFMX ambiente compartilhado. Coincidência (ou não ;-)) esta semana estamos falando exatamente sobre isso aqui no CFGIGOLÔ. O patch corrige uma falha que permite, de forma limitada (mesmo assim perigosa), se instanciar objetos Java sem usar a tag “desabilitável” cfobject e a função CreateObject() através de java reflection.
O segundo protege o servidor contra ataques de negação de serviço que poderiam ocorrer caso um usuário submetesse um volume muito grande de dados via formulários que necessitassem de validação
IMPORTANTE: ambos patches já estão incluídos em um pacote de hotfixes que o CFGIGOLÔ disponibilizou para download.
E é sempre bom lembrar: cadastre-se para receber notificações de segurança importantes sobre produtos da Macromedia.
Finalmente alguém me ouviu!
Publicado; 28/01/2004 Arquivado em: ColdFusion Comentários desativados em Finalmente alguém me ouviu!Em novembro passado o pessoal da Macromedia BR entrou em contato comigo sobre um possível bug com a tag CFFTP em ambiente sandboxeado. Na ocasião fiz um post detalhado sobre este (não documentado até então), propondo também um workaround. Desde então venho enchendo a paciência do pessoal da MM Inc sobre o assunto e ontem, finalmente, recebi uma confirmação positiva por parte do Chris Cantrell, o community manager da MM para servidores. Antes de escrever para ele usei o bug report, acionei o suporte (não pago), support forums, lista CF-Talk e outros locais bem frequentados… Vê-se que o trabalho do community manager é bastante abrangente e eficaz. Ainda bem! 😉
—–Mensagem original—–
De: Christian Cantrell [mailto:cantrell@macromedia.com]
Enviada em: quarta-feira, 28 de janeiro de 2004 02:58
Para: Alex Hubner
Assunto: Re: CFFTP
Hi, Alex. I just heard that QA did confirm this and it is has been entered into the bug base as #54053. It is scheduled to be fixed in the next release.
Thanks for bringing this to our attention.
Christian
Pechincha!
Publicado; 28/01/2004 Arquivado em: ColdFusion, Livros 2 ComentáriosTudo bem que já estamos na versão MX do ColdFusion, porém vale dar o toque. O melhor livro de ColdFusion 5 (lembre-se que CFML é uma linguagem, portanto o livro serve para você que usa CFMX) na minha opinião está a venda na livraria Tempo Real por apenas R$ 45,00. Como já tenho não preciso comprá-lo, mas confesso que o preço está ótimo, mesmo para uma versão antiga do CF pois o livro é realmente muito bom:
ColdFusion administrator, de novo!
Publicado; 28/01/2004 Arquivado em: ColdFusion Comentários desativados em ColdFusion administrator, de novo!Há algum tempo fiz um post falando do problema dos provedores nacionais que estavam se esquecendo de proteger a interface do ColdFusion Administrator. Bem, ao que parece muitos já tomaram as medidas necessárias para corrigir a situação, mas outros ainda continuam na mesma. Verifique você mesmo na pequena lista disponível no post.
Gostaria de destacar a rápida atenção e atuação do pessoal da DW Provedor de Internet – http://www.dwws.com.br, na pessoa do seu gerente executivo, João de Sousa. Este se mostrou preocupado em resover o problema rapidamente, demonstrando profissionalismo e seriedade que tanto precisamos hoje em dia. Destaque também para o pessoal da WebGeo, que atualmente (e temporariamente) não está aceitando novas contas justamente por primar pela qualidade da hospedagem CF oferecida por eles. Giovane Heleno, da WebGeo, promete novidades em breve. Vamos aguardar.
CFMX Sandbox Security para ambientes compartilhados
Publicado; 25/01/2004 Arquivado em: ColdFusion 14 ComentáriosDurante este final de semana terminei de escrever um pequeno tutorial sobre como criar e quais são as configurações que recomendo para sandbox security em ColdFusion MX. Trata-se de uma “receita de bolo” que espero seja útil para quem oferece hospedagem compartilhada de ColdFusion MX.
“CFMX Sandbox Security para ambientes compartilhados”
Também disponível em formato PDF, 170K clicando aqui.
UPDATE: acrescentei algums comentários sobre a necessidade de se armazenar variáveis de cliente em banco de dados ao invés das opções padrões disponíveis (cookies e registry) e sua relação com a sugestão de desabilitar a tag CFREGISTRY.
UPDATE2: já existe uma versão deste tutorial atualizada para a versão 7 do ColdFusion Server. Acesse aqui.
NIC.class
Publicado; 20/01/2004 Arquivado em: ColdFusion 2 ComentáriosEstá rolando uma discussão na lista CF-Brasil sobre como se determinar o IP da máquina onde o CFMX está instalado (IP de uma ou mais placas de rede existentes no servidor), uma vez que os métodos usando CFML puro retornam apenas o IP interno ou de loopback. Ano passado Marcello Frutig – CFUG-Rio propôs uma elegante solução usando um class Java que ele mesmo escreveu e que uso até hoje para atualizar um servidor DNS com IP’s dinâmicos (típicos de conexões ADSL ou DSL novas) via script CFML “schedulado”.
Porém no post do Frutig só existe o código fonte da classe, o que já seria mais do que suficiente. Porém, para encurtar o “caminho das pedras” (não tão pedregulhento assim, mas vá lá), segue um mini tutorial de como fazer a classe funcionar:
1) Faça download da class já compilada (NIC.class) aqui;
2) Disponibilize o arquivo NIC.class numa pasta qualquer (por exemplo cf_rootCustomTags);
3) Certifique-se de que esta pasta está especificada no campo “Class Path” da seção “Java and JVM” do ColdFusion Administrator. Caso não esteja, adicione-a (separe o nome das pastas por vírgulas) e reinicie o serviço do ColdFusion Application Server.
Pronto, você já estará apto a rodar um script CFML que irá retornar os valores dos IP’s na forma de uma array. Aqui costumamos chamar esta class (NIC.class) da seguinte forma:
Peque o fonte do script acima aqui.
A variável “ips” irá retornar um ou mais números de IP. Usando o script CFML acima, ou qualquer outra abordagem de manipulação, você pode eliminar IP’s que não queira (no nosso caso o IP de loopback e qualquer outro da rede interna) e manter os que desejamos.
IMPORTANTE: é necessário que o JVM usado pelo CFMX seja igual ou superior à versão 1.4.0 (Sun), o que já é por padrão na versão 6.1, porém não na 6.0.
Boa sorte!