Update: You may also want to look at: Update: Você também pode querer olhar: MySpace Hack: How To View Any Users Private Videos MySpace Hack: como visualizar qualquer utilizadores privados vídeos .

Recently Recentemente Samy [samy at namb dot la] released a worm ["Samy worm" or "JS.Spacehero worm"] in MySpace, popular social networking platform like Friendster, which caused him to be added as hero to millions of MySpace users (”but most of all, samy is my hero.”) as well as add him as their friend, all without their explicit permission. [dot la Samy em namb] liberou um verme [ "Samy worm" ou "JS.Spacehero verme"] em MySpace, popular rede social como plataforma Friendster, o que lhe causou a ser adicionado como herói para milhões de usuários MySpace ( "mas a maioria de todos, Samy é meu herói. "), bem como adicionar-lhe como o seu amigo, tudo sem sua permissão explícita.

After flooding the Network, MySpace stepped in and fixed the hole. Após o alagamento da Rede, MySpace e intensificadas em fixos do buraco. Samy is still “hero” to millions of MySpace users in their profile. Samy é ainda "herói" a milhões de usuários MySpace em seu perfil.

The purpose of this article is to highlight the security issues exposed by this worm. O objetivo deste artigo é o de destacar as questões de segurança expostas por este worm. It is definitely not limited to MySpace alone and the worm propagated not due to MySpace’s fault but fault of browser like Internet Explorer. É definitivamente não se limitando a MySpace sozinho e ao worm propagados não devido ao MySpace da culpa, mas culpa do navegador como o Internet Explorer. And the flaw is waiting to be exploited in several other web applications of similar nature like Ryze or LinkedIn etc.. O vício e está aguardando para ser explorada de várias outras aplicações web de natureza similar como Ryze ou LinkedIn etc. In the remainder of this article I will summarize the modus-operandi of his script and suggest on ways to protect your web application against such attacks. No restante deste artigo vou resumir o modus operandi do seu script-e sugerir sobre as formas de proteger suas aplicações web contra esses ataques.

Samy used AJAX to add himself as a friend and hero when users visited his page. Samy AJAX usado para adicionar a si mesmo como um amigo e herói quando os usuários visitaram sua página. This requires Javascript to be executed in the browser which does the dirty work. Isso requer o Javascript para ser executada no browser que faz o trabalho sujo.

MySpace dutifully eliminates javascript from users html (which becomes their profile). MySpace lealmente elimina html javascript de usuários (que se torna seu perfil). However Sammy disguised the word javascript with an embedded newline - “java\nscript”. No entanto Sammy dissimulada a palavra javascript com uma nova linha embutido - "java \ nscript".

MySpace doesn’t allow script tags. MySpace não permite script tags. So he embedded his javascript in CSS - style=”background:url(’javascript:eval(document.all.mycode.expr)’)” Assim, ele embutido no seu javascript CSS - style = "background: url (" javascript: eval (document.all.mycode.expr) ') "

AJAX can fetch documents from the same domain (or sub-domain) only. AJAX pode buscar documentos a partir do mesmo domínio (ou sub-domínio) apenas. So if the user was on profile.myspace.com, he moved them to www.myspace.com which provides the same information but allows him to be added as a friend. Portanto, se o usuário foi em profile.myspace.com, ele mudou-los a www.myspace.com que fornece as mesmas informações, mas permite-lhe para ser adicionado como amigo.
if (location.hostname == 'profile.myspace.com') document.location = 'http://www.myspace.com' + location.pathname + location.search; if (location.hostname == 'profile.myspace.com') document.location = 'http://www.myspace.com' + location.pathname + location.search;

After overcoming a trvial hash issue he adds his code and “but most of all, samy is my hero.” text to users profile. Após superar uma questão trvial hash acrescenta ele e seu código ", mas acima de tudo, Samy é meu herói." Texto para usuários perfil. This causes the worm to propagate not only when users visit his site but also when they visit any of the infected users. Isso faz com que o worm para propagar não só quando os usuários visitam seu site, mas também quando eles visitam qualquer dos usuários infectados. Yes, simple exponential spreading. Sim, simples exponencial propagação.

Samy provides Samy proporciona detailed notes and code for his exploit detalhados e notas em seu código para explorar after the exploit was filtered / stopped by MySpace. após a explorar foi filtrada / parado por MySpace.

How can you protect your web application from such attacks? Como você pode proteger sua aplicação web a partir de tais ataques?
First and foremost I assume you have filtering in place like MySpace did filtering scripts and javascript tags etc. However obviously that is not enough; not even close. Em primeiro lugar e acima de tudo eu assumir que tem filtragem no lugar como MySpace fez filtragem scripts javascript e tags etc No entanto é evidente que isto não é suficiente, nem mesmo fechar.
Your filtering tags should be intelligent to recognize words separated by newlines as shown above. Sua filtragem etiquetas devem ser inteligente para reconhecer palavras separadas por newlines como mostrado acima.

Other users profile (or any html content) should be viewable only from a separate sub-domain. Outros usuários perfil (ou qualquer conteúdo HTML) deve ser visto somente a partir de um sub-domínio separado.

Any actions like adding a link, friend, connection etc. must be done from pages which can never contains any other users code. Todas as ações como a adição de um link, amigo, etc ligação deve ser feita a partir de páginas que nunca poderá contém quaisquer outros usuários código. If you provide a link while viewing others profile to add his as a friend then on clicking you take him to a separate page where the users gets to edit information about his friend and add him after confirmation. Se você fornecer um link ao visualizar outros para adicionar o seu perfil como um amigo, então você clicar em levá-lo para uma outra página onde os usuários obtém informações sobre a editar o seu amigo e adicioná-lo depois da confirmação. This page should not contain any html content from the user being added. Esta página não deverá conter qualquer conteúdo HTML do usuário que está sendo adicionado.

In essence we need to captalize on AJAX security model which prevents code execution from different site. Na sua essência, precisamos de captalize em AJAX modelo de segurança que impede execução de código diferente site.