François Harvey
Professionnel en sécurité, Développeur et entrepreneur
Professionnel en sécurité, Développeur et entrepreneur
27/11/10
À la suite de ma conférence de l’année dernière pour confoo, j’ai décidé de remettre l’expérience et de proposer une conférence pour l’édition 2011. Cette année j’ai soumis une proposition en lien avec la santé 2.0, la sécurité et les logiciels libres…
31/10/10
Voici un avis de sécurité pour SmartOptimizer 1.7 et précédente. Une vulnérabilité permet des accès à des types de fichiers non autorisées (exemple code source des applications) en utilisant un null byte (%00) pour contourner la vérification des extensions valides. L’exploitation est très simple :
smartoptimizer/index.php?../index.php%00.js
Le développeur de ce logiciel à intégré un correctif, ainsi la version 1.8 corrige cette vulnérabilité et est disponible à l’adresse suivante : http://farhadi.ir/works/smartoptimizer
9/09/10
Pour reprendre une citation de Samul Smiles, mon approche en monitoring peut se résumer par « Un check pour chaque chose et toutes choses checkées« , et ce surtout s’il s’agit d’un contrôleur raid sur un serveur ESXi. Le script original check_esx_wbem.py publié par David Legeret, ne permettait pas d’identifier les erreurs sur le contrôleur raid sur les serveur HP, ainsi j’ai adapté le script original pour en faire un qui surveille spécifiquement le contrôleur raid en utilisant le support WBEM d’HP sous ESXi.
Output :
WARNING : Logical Volume 0 (RAID 5) - Logical Disk is degraded
Le script est disponible à l’adresse suivante : check_esxi_hpraid_wbem.py
define command{
command_name check_esxi_hpraid
command_line $USER1$/check_esxi_hpraid_wbem.py https://$HOSTADDRESS$:5989 USER PASSWORD
}
Conseil sécurité : Toujours utiliser un utilisateur dédié au monitoring… pas root ! et utilisez les variables $USER$ de nagios pour enregistrer le mot de passe (pour ainsi le masquer de l’interface Web)
7/09/10
Bonjour,
Voici un rapport de vulnérabilité pour la distribution Elastix, ça fait très longtemps que le fournisseur a été notifié, mais le fournisseur désirait attendre la version 2.0 d’Elastix avant la publication de cette vulnérabilité ne soit publiée (le correctif a été intégré dans la revision 1550 d’Elastix). Pour ceux qui ont assisté à ma conférence à Confoo 2010, cette vulnérabilité avait servit d’exemple pour démontrer que parfois une simple erreur peut causer bien des problèmes !
Bonne lecture !
Advisory: MEDS-2010-03 - Elastix unsecure extensions configuration download Release Date: 2010-01-13 Author: Francois Harvey, gestion medsecure (francois.harvey at medsecure dot ca) - http://medsecure.ca Application: Elastix 1.6.X, Elastix 2 (Beta), Fixed in 2.0 Severity: High Risk: High Vendor Status: notified 2010-01-13, Fixed in the Last Release (http://elastix.svn.sourceforge.net/viewvc/elastix?view=revision&revision=1550) OVERVIEW "Elastix is an appliance software that integrates the best tools available for Asterisk-based PBXs into a single, easy-to-use interface. It also adds its own set of utilities and allows for the creation of third party modules to make it the best software package available for open source telephony." VULNERABILITY Elastix have a script to dump the extensions configuration (with both login & password), the script download_csv.php is not protected by ACL, so everybody can call this script. EXPLOIT https://x.x.x.x/modules/extensions_batch/libs/download_csv.php [^] ---------------------- Display Name,"User Extension","Direct DID","Outbound CID","Call Waiting","Secret","Voicemail Status","Voicemail Password","VM Email Address","VM Pager Email Address","VM Options","VM Email Attachment","VM Play CID","VM Play Envelope","VM Delete Vmail","Context" test,"123","","","DISABLED","my_secret_password","disable","","","","","no","no","no","no","from-internal" ---------------------- SOLUTION Fixed by the Elastix Team. (http://elastix.svn.sourceforge.net/viewvc/elastix?view=revision&revision=1550)
30/08/10
Aujourd’hui, le CRTC rendait public certaines décisions concernant la concurrence dans les services internet soit la « Politique réglementaire de télécom CRTC 2010-632 », j’ai remarqué aucun article dans les médias francophones ( il faut croire qu’une décision du CRTC c’est moins intéressant que la commission Bastarache).
De façon générale, la décision est satisfaisante, elle:
Par contre, je partage l’avis du conseiller Timothy Denton sur le fait que le CRTC aurait pu aller plus loin dans les possibilités de contrôle et de gestion de trafic par les fournisseurs indépendants. Effectivement, peu de FAI offre des services Internet adaptés à des micro-marchés, par contre c’est un marché qui pourrait stimuler la diversité des offres de connectivité Internet et il est dommage que la règlementation n’aie pas été adapté en ce sens.
Par exemple, au Royaume-Uni, l’entreprise Demon, offre un service optimisé (Demon Game Pro) pour les joueurs via de la qualité de service et des liens directs avec certains fournisseurs de jeux en ligne. Il va s’en dire que ses offres devraient être fait dans un contexte de « net neutrality » (accès équitable) c’est-à-dire sans réduire la qualité des services des compétiteurs.
<ironie>C’est dommage, imaginez un fournisseur conforme au rfc3514, offrant une sécurité intégrée au niveau IP. C’est encore plus efficace que les trousse de sécurité vendus par certains fournisseurs.</ironie>
La décision complète est disponible à l’adresse suivante : http://www.crtc.gc.ca/fra/archive/2010/2010-632.htm
29/08/10
Chez gestion medsécure, nous utilisons le logiciel libre vtiger CRM pour assurer notre suivi de la clientèle. Vtiger CRM offre déja quelques options d’intégration avec la téléphonie IP, mais par défault, AsteriskNow/FreePBX ne peut pas automatiquement aller chercher les informations de l’appellant (CallerID) dans la base de données de vtiger CRM. Pour pallier à ce problème, il est possible de créer une vue regroupant les différents numéros de téléphones en respectant la logique suivante :
La première est de créer une vue que nous nommerons « vtiger_cid » à l’intérieur de la base de données utilisée par vtigerCRM qui sera utilisé pour nous retourner les noms (et leur préfixe) ainsi que les numéros normalisés et coupés à une longueur de 10 caractères.
CREATE VIEW vtiger_cid (name, number) AS
select concat('CM:',firstname,' ',lastname) as name, left(replace(replace(replace(replace(replace(mobile,' ',''),'(',''),')',''),'-',''),'.',''),10) as number from vtiger_contactdetails where mobile is not null and mobile <> ''
union
select concat('CP:',firstname,' ',lastname) as name, left(replace(replace(replace(replace(replace(phone,' ',''),'(',''),')',''),'-',''),'.',''),10) as number from vtiger_contactdetails where phone is not null and phone <> '' and accountid not in (select accountid from vtiger_contactdetails where accountid <> 0 group by accountid having count(accountid) > 1)
union
select concat('AP:',accountname) as name,left(replace(replace(replace(replace(replace(phone,' ',''),'(',''),')',''),'-',''),'.',''),10) as number from vtiger_account where phone is not null and phone <> ""
union
select concat('AO:',accountname) as name,left(replace(replace(replace(replace(replace(otherphone,' ',''),'(',''),')',''),'-',''),'.',''),10) as number from vtiger_account where otherphone is not null and otherphone <> "";
union select concat('LP:',firstname,' ',lastname) as name,left(replace(replace(replace(replace(replace(phone,' ',''),'(',''),')',''),'-',''),'.',''),10) as number from vtiger_leadaddress, vtiger_leaddetails where vtiger_leaddetails.leadid = vtiger_leadaddress.leadaddressid and phone is not null and phone <> ""
union select concat('LM:',firstname,' ',lastname) as name,left(replace(replace(replace(replace(replace(mobile,' ',''),'(',''),')',''),'-',''),'.',''),10) as number from vtiger_leadaddress, vtiger_leaddetails where vtiger_leaddetails.leadid = vtiger_leadaddress.leadaddressid and mobile is not null and phone <> ""
Par la suite, il suffit d’octroyé un accès en lecture à cette vue pour l’interroger à partir d’Asterisk similaire à la ligne de commandes suivante (qui devra être adapté en fonction du nom de la base de donnée, de l’adresse du serveur Asterisk et du mot de passe complexe que vous sélectionnerez. N’utilisez JAMAIS le compte utilisateur de votre installation de vtiger CRM mais créer un compte limité à cette consultation.
GRANT SELECT ON [Nom_de_la_base_de_donnée].vtiger_cid TO vtiger_cid@[Adresse du serveur Asterisk] IDENTIFIED BY 'Mot de Passe Complexe';
Et ajouter une nouvelle source de CID à votre environ de téléphonie IP sous FreePBX
La requête (Query) est la suivante, le [NUMBER] doit resté tel-quel car Asterisk le replacera par le numéro de l’appelant :
SELECT name FROM vtiger_cid WHERE number = '[NUMBER]'
Finalement il suffit d’indiquer à FreePBX d’utiliser cette nouvelle source d’appelant sur votre route.
Pour valider que tout fonctionne correctement, il est possible de regarder les traces d’exécutions
-- Executing [cidlookup_2@cidlookup:2] MYSQL("IAX2/XXXXXXXX-2658", "Query resultid 1 SELECT name FROM vtiger_cid WHERE number = 'XXXXXXXX'") in new stack
Maintenant sur vos téléphones l’information affichée sera cohérente avec celle saisie dans votre CRM et les informations affichées pourrait être modifiée selon leur pertinence et vos besoins.
24/08/10
Dans le monde de la téléphonie open source utilisant Asterisk, trois distributions majeures sont basées sur CentOS sont disponible : Trixbox, Elastix et AsteriskNow, j’ai plusieurs réserves envers la première (sécurité très discutable…), beaucoup moins pour la seconde et très peu pour la dernière qui est ma favorite dans le cadre de déploiement de téléphonie.
Malheureusement, favorite ne veut pas dire parfaite
Surtout lorsque l’aspect sécurité passe avant celui des fonctionnalités car un des problèmes des distributions linux spécialisés est le partage des configurations sensibles (mots de passe, utilisateur, etc.) de façon générique.
C’est dans ce contexte j’ai publié un script dont l’objectif est d’automatiser un premier niveau de sécurité sous la distribution AsteriskNow : Changement des mots de passes par défault, sécurité du mode console, déconnexion automatique, etc… Ce script ne remplace pas un durcissement en profondeur adapté au type de déploiement requis, mais offre un niveau de sécurité minimal.
Pour plus de détail, visitez la page du script en question : http://medsecure.ca/produits/asterisknow-hardeningbootstraping-script/ (anglais)
11/07/10
Implanté un nouveau service en ligne de téléchargement de fichiers (partager-mes-fichiers.com) durant le week-end. Projet sympa. Peu de détails encore car en béta pour les prochaines semaines. Contactez gestion medsécure si vous cherchez une solution de partage de document en ligne utilisant des clé d’accès avec limite de temps pour votre entreprise.
29/06/10
L’un des objectifs de wikihelp est de rendre plus facile la rédaction de procédure et l’un des éléments qui est souvent requis dans l’élaboration de procédure est la numérotation des figures et des images. D’une façon similaire à la numérotation des titres, nous avons décider d’automatiser celle des images (intégré dans la révision 323 de wikihelp). Comme je trouve le concept intéressant, voici le comment :
/* Pour initialiser le compteur (dans un style parent)
counter-reset: figure
*/
div.caption {
border: 1px solid #DDD;
text-align:center;
margin: 0px 40px 40px;
padding: 5px;
}
div.caption p {
font-style:italic;
font-weight:bold;
counter-increment: figure;
}
div.caption p:before {
content: "Figure " counter(figure) " - "
}
Ainsi que le code jquery correspondant qui identifie les images, les places dans le div caption, ajoute le paragraphe avec le titre. La mention figure – X est géré par le volet CSS et non du coté javascript.
$("#img").each(function(){
var image = $(this);
image.wrap("<div class='caption'></div>");
var div = $(this).parent().append('<p>' + image.attr('title') + '</p>');
});
Ce qui va annoter l’ensemble de images avec une légende : Figure X – Titre de l’image.
Pas encore testé sous d’autre navigateur que Google Chrome par contre….
Commentaires récents