Archive for the ‘Développement (divers)’ Category

Petit tour des librairies de visualisation de données en JavaScript

Mardi, décembre 22nd, 2009

Javascript visualization

Vous ne le saviez peut-être pas, mais un de mes passes temps en ce moment est d’étudier la visualisation de données notamment pour le web, car ce domaine est en pleine ébullition actuellement avec l’apparition de l’HTML5 et de sa balise canvas (non standardisé dans la version 4) mais aussi toutes ces libraires JavaScript permettant de faire de beaux graphiques comme on aime.

J’utilise assez rarement des outils de visualisation de données, car j’en ai pas besoin dans mon travail actuel (études ou projets perso) mais je surveille de très prêt et teste une grande partie des solutions mises en avant (sauf flash & flex qui ont d’ailleurs de très bonnes librairies de visualisation.). Voici donc un petit résumé de ce qu’il se fait en la matière actuellement :

The JavaScript InfoVis Toolkit - Librairie vraiment sympa surtout en ce qui concerne données hiérarchisées. Elle possède une très large documentation avec de nombreux exemples.

Dygraphs – Très bonne libraire pour représenter sous forme de graphiques lambda (axes abscisses et ordonnées) des données plus couramment de type temporelles. Sympa pour des activités serveur par exemple.

Processingjs – On ne présente plus la librairie Java processing, véritable leader de la visualisation en Java. Voici son « équivalent » en Javascript. Tout comme processing en Java, son utilisation s’avère complexe pour des développeurs non matheux du dimanche (moi ?) cependant, elle permet de faire bien des choses !

jquery.sparkline – Cette libraire jquery permet de faire des petits charts vraiment superbes et peut posséder de multiples utilisations telles que pour modéliser des hits de téléchargements, de visites ou des activités clients side ou server side.

Protovis – Là, nous atteignons le summum de la visualisation de données en JavaScript. Cette librairie permet de tout faire (ou presque – sauf 3D) et possède un très bon rendu des charts. Si je me rappelle bien, c’est la seule permettant de parser des données par coordonnées parallèles permettant ainsi une bonne visualisation de données complexes du type logs de connexions par exemple. (étant une visualisation notamment utilisé par FP).

En ce qui concerne la visualisation de liens entre objet, nous pouvons noter quelques librairies sympa comme :

Moowheel – Cette libraire permet simplement de modéliser des liens entre objets disposés autour d’un même cercle avec de belles couleurs (ou non). L’utilité de ce script peut prendre sa place pour modéliser des liens entre personnes sur des réseaux sociaux ou autres.

JsViz – Cette libraire est assez cool, cependant elle reste mal gérée par les navigateurs. Elle permet là aussi de faire des liens dans l’espace entre différents objets et possède plusieurs modes d’affichage. Elle est encore trop lourde pour être ergonomique sur les différents navigateurs Internet ce qui en fait son principal défaut aujourd’hui.

The JavaScript InfoVis Toolkit – Là aussi cette librairie permet de modéliser des liens entre différents objets, notamment avec son mode Hypertree.

Voilà ce que l’on peut dire de la visualisation de données en javascript aujourd’hui. Récemment, google a mis en ligne une API de visualisation permettant là aussi de faire des beaux charts, mais je préfère pas en parler, car faire sa propre cuisine est toujours plus enrichissant. De plus, plusieurs hacks CSS/HTML permettent sans javascript de faire des trucs sympa tels que des pie charts ou autres.

Si vous voulez poursuivre votre voyage et avoir une réelle overview de ce qui se fait tant au point JS que PHP/Flash, voici un petit lien qui devrait vous plaire Tools for visualizing your data. =)

[Entête]

Festival international MakeART édition 2009 !

Dimanche, novembre 29th, 2009

{Billet non sponsorisé et fier de l’être}
Image : Affiche du festival MakeART 2009

Bonne nouvelle pour tous les Geeks, dorkbots, hackers, techo-artists et autres passionnés d’Art et de nouvelles technologies ! Le festival Make ART édition 2009 dépose ses laptops à Poitiers (maison de l’architecture) du 8 au 13 décembre.

Au programme, que du bon comme toujours ! Des expos, des concerts, des formations, des présentations et aussi des ateliers pour combiner au mieux l’Open Source et l’Art. Le tout agrémenté d’un réel investissement de la part des exposants en vue de partager leur passion avec le public.

Cette année, contrairement aux années précédentes, la majorité des conférences du festival se font le weekend, cela permet donc aux personnes n’habitant pas Poitiers de pouvoir venir sans trop de problèmes (wahou =)

Bref, un festival, petit en taille mais grand de par son contenu qui est vraiment très bon ! (allez voir le programme sur le site du festival http://makeart.goto10.org pour plus d’informations sur les expos, concerts, conf’ etc.). J’espère vous y voir le weekend du 12 au 13 décembre ! D’ici-là, keep update. =)

PS : Regardez le travail fait sur les affiches du festival (générées aléatoirement), elles résument tout à fait l’esthétique de ce dernier

Infos supplémentaires :

Site internet : http://makeart.goto10.org

Présentations & expositions : Certaines se font en anglais assez technique, il est donc préférable de connaitre un peu la langue Shakespeare du XXIème siècle.

Festival : Le festival a lieu en ville, donc aucun problème pour se restaurer ou même se loger dans des petits hôtels sympas ! De plus, Poitiers est une ville superbe au point de vue historique, donc vous pouvez toujours faire quelques visites autre que MakeART.

Petit point sur la sécurité des applications AIR et de leurs utilisateurs

Jeudi, septembre 17th, 2009

AIR, c’est cool. La phrase est lancée et depuis que le jour s’est levé sur le SDK d’Adobe, beaucoup de personnes se sont mises à faire leurs petits widgets personnels et autres RIA liées avec différentes API web mises à disposition par des réseaux sociaux. Cependant, la sécurité des applications AIR est encore mise de côté par une partie des développeurs, ayant pour la majeure partie aucune véritable base dans le développement d’RIA sécurisées.

Il m’arrive parfois, entre deux pages Internet de télécharger une application AIR – développée en amateur ou par une firme – afin de tester la sécurité de cette dernière se divisant en trois axes majeurs à mes yeux :

  • La sécurité client (sécurité du poste de travail)
  • La sécurité utilisateur (sécurité des données utilisateurs)
  • La sécurité serveur (sécurité du serveur auquel est rattaché l’application)

De ces trois côtés, le constat de mes audits furtifs est lourd de conséquences, faisons donc un petit tour au pays de la sécurité des applications air et des possibilités qu’offrent ces dernières en vecteur d’intrusion.

0×01 Sécurité Client :

Le premier problème du côté client résulte dans la capacité pour une application AIR de manipuler des fichiers présent sur le disque dur, de les enregistrer, de les envoyer à travers le web, et ce, avec quelques lignes de code (une vingtaine tout au plus) et sans n’avoir aucune réelle expérience de la part du développeur.

Imaginez le problème si une personne utilise des programmes présentant des fichiers de connexions contenant des logins et mots de passes en clair (tels que FireFox – n’ayant pas la fonction « mot de passe principal d’activé », FileZilla avec son fichier star filezilla.xml ou même des fichiers de Cookies) et bien, une trappe réalisée dans une application AIR légitime pourrait envoyer le contenu de ces fichiers vers une base de donnée distante permettant ainsi au développeur de réaliser au fil du temps un petit trésor de guerre.

Évidemment, Adobe a tout prévu et avertit l’utilisateur pendant l’installation de l’application que cette dernière peut accéder à des données sur son ordinateur. Cependant, connaissant les utilisateurs et me connaissant moi-même (si-si, j’vous jure), il est assez rare pour un utilisateur de refuser l’installation d’une application venant d’être téléchargée sachant qu’elle peut accéder à des fichiers présents sur notre disque dur afin de réaliser certaines opérations. (Il est aussi assez rare de regarder l’intégralité des messages pendant une installation…)

Voyant de plus le nombre d’applications utilisées possédant ces messages à l’installation, il est sûr que l’extrême majorité des utilisateurs ne les regardent pas avant d’installer la moindre application AIR. J’ai pu vérifier cela simplement en recherchant un « top 50 » des applications AIR et en les testant une par une afin de savoir si lors de l’installation, il y avait le fameux message (et aussi un autre message avertissant que cette application n’était pas certifiée.)

Il ressort de cette mini-étude que pas moins de 20% des applications présentent les deux messages d’erreurs cités plus haut. Parmi lesquelles, des applications largement utilisées telles que TweetDeck, Spaz ou même Twhirl. Voici la liste complète :

1. Doomi (doominow.com)
2. Klok (http://klok.mcgraphix.com/klok/downloads.html)
3. TimeLoc (www.rad3.com/timeloc/default.html)
4. AirTube (theflashblog.com/?p=363)
5. RandomWin
6. twhirl (http://www.twhirl.com)
7. Spaz (http://funkatron.com/spaz)
8. TweetDeck (tweetdeck.com)
9. DiggTop (http://gskinner.com/DiggTop/)
10. Snackr (http://snackr.net)
11. ReadAir (http://code.google.com/p/readair/)
12. WebKut (http://toki-woki.net/p/WebKut/)

Une autre vulnérabilité que je n’ai pas vérifié mais qui est plus que probable (n’ayant pas trouvé de dossier traitant de cela sur le site d’adobe) est la possibilité pour une application AIR de télécharger un binaire sur un serveur distant et ensuite de l’exécuter. Cependant, comme je l’ai dit plus haut, je n’ai fait aucune tentative sur le chargement du binaire.

Pour son exécution, AIR a appliqué certaines restrictions liées à cela mais des recherches et logiciels ont abouti à la possibilité d’exécution de binaires. Vous pouvez trouver plus d’informations sur ce topic de MediaBox. Mais aussi sur ce billet parlant notamment de programme SHU.

0×02 Sécurité Utilisateur :

Ce qui est le plus criant côté client, c’est qu’une grande partie des développeurs stockent dans des fichiers des informations sensibles sans aucun chiffrement ou même hashage de ces dernières. Ainsi, il n’est pas rare de voir ce genre de problème pour des RIA utilisant les API de certains réseaux sociaux. Nous nous retrouvons ainsi avec des bases SQLite, des fichiers XML ou d’autres types de fichiers possédant des informations en connexion à des services tiers en clair.

Pour ceux qui ne savent pas, petit rappel. Adobe à implémenté un « système de chiffrement » stockant des données chiffrées en AES-CBC 128-bit grâce aux différentes API de chiffrement liées aux systèmes d’exploitation (DPAPI pour windows, Keychain pour Mac). Cette solution, utilisée par différentes applications (notamment certains clients Twitters).

Bref, vous avez une description de cette protection à mettre en place sur la documentation officielle d’AIR élaborée par Abobe [DOC_ADOBE]. De plus, un petit tutoriel simple, mettant en place un couple login/passwd et une fonction « remember this » est également présent sur le site d’Adobe [TUTO_ADOBE] afin de mettre en place cette solution (avec les sources à télécharger). Les fichiers chiffrés sont disponibles (par exemple) sur Windows dans le répertoire ELS (Encrypted Local Store) siégeant fièrement dans le dossier AppData : \Adobe\AIR\ELS\[dossier de l'application]

(UPDATE : Un très bon diapo est dispo [ICI] =)

0×03 Sécurité serveur :

Ensuite, nous pouvons voir d’importantes vulnérabilités côté serveur pour certaines applications utilisant AIR. Il n’est pas rare, là aussi d’entrevoir des possibilités d’SQL injection dans le SGBD distant de l’application, car certains développeurs ne vérifient pas les données envoyées à partir du serveur mais à partir de l’application. (Des fois, ils ne les vérifient pas du tout…), je n’ai pas testé des Xpath injections mais il est fortement probable que cela puisse fonctionner là aussi (tout du moins au point de vue théorique.)

La vulnérabilité XSS de David Naylor – même si mon petit doigt me dit que certaines personnes l’avaient déjà :) – sur le service Twitter est aussi imputable à une mauvaise vérification de chaine de caractère envoyée à l’API de Twitter pour le nom de l’application. Il ne pas oublier de filtrer les données entrantes dans les bases de données distantes contre les injections de code exécutables en client-side – et non lors de leur récupération par un frontend, car le frontend peut, lui, être mis à jour laissant ainsi exécuter certains codes contenus dans la base de donnée. C’est la célèbre phrase : « Upgrade : to take out old bugs and put in new ones ».

Twitter n’avait pas pensé à filtrer l’intégralité des données envoyées par l’intermédiaire de l’API… ce qui se traduisit donc par un énième EPICFAIL

0×04 Conclusion :

L’internaute est toujours avide de nouveaux gadgets pouvant ouvrir certaines vulnérabilités sur le système sans même se préoccuper de certains messages d’alerte lors de l’installation des applications AIR. Ceci, comme nous avons pu le voir, pouvant laisser une certaine porte d’entrée à des informations contenues sur l’ordinateur. De plus, des recherches sont faites actuellement sur la possibilité d’exécution de binaires en AIR et j’ai une petite idée derrière la tête à ce propos.

Les développeurs de leurs côtés, laissent certaines vulnérabilités en client-side (mots de passes en clair) ou en server-side (failles web connues et re-connues) pouvant ainsi ouvrir certaines brèches, tant pour l’utilisateur (piratages de comptes) que pour le backend de l’application RIA (sans parler du site internet auquel souvent cette dernière est rattachée en vue de son téléchargement).

Les RIA sont aujourd’hui en plein développement. Beaucoup de développeurs, du fait de la facilité à mettre en œuvre ces solutions réalisent souvent sans se préoccuper de la sécurité des ces petits widgets à l’apparence inoffensifs. Il est aujourd’hui préoccupant pour les utilisateurs de prendre conscience que n’importe quelle application/widget, quelque soit sa renommée peut être un danger pour l’intégrité de ses données s’il ne fait pas attention et n’analyse pas en détails le fonctionnement de cette dernière.

Security bugs hunter =)

Mardi, août 25th, 2009

Depuis quelques semaines à raison d’une à deux heures par jour, je me suis lancé dans un petit projet histoire de me faire un peu la main avec jQuery et la programmation objet en PHP5. J’ai donc décidé, dans le cadre d’un audit (un script troué de partout dont je dévoilerai le nom dans quelques temps) de réaliser un script permettant l’indexation des failles trouvées lors d’audit d’applications WEB.

Ce script s’appelle Security Bugs Hunter et permet donc l’indexation de vulnérabilités suivant des scripts, avec la possibilité d’enregistrer le code vulnérable, le Proof of Concept de la vulnérabilité, des combos de vulnérabilités etc. Il possède par ailleurs un système de membres ayant plusieurs permissions, permettant ainsi au super administrateur de les régler suivant la confiance qu’il possède envers les abonnés.

Bref, le script aujourd’hui est beau certes, mais très pauvre en fonctionnalités (au pire, c’était juste pour me faire la main sur jQuery pour passer ensuite à autre chose…). Bref, je pense rajouter différentes petites choses telles que la possibilité d’Uploader l’application à auditer (et d’indexer ensuite par versions), de rechercher dans son code des vulnérabilités potentielles à grand coup de Regex (ce qui va ralentir un max.) et différentes choses.

Si vous voulez voir ce que cela donne, c’est par ici. Je mettrai le code source à télécharger dans quelques jours, histoire de bien le commenter et de l’alléger avec un peu de docs. (en y allant, vous gagnerez des 0dayz sur un script =)