Publication de vulnérabilité : Elastix unsecure extensions configuration download (MEDS-2010-03)
0Bonjour,
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)
Décision du CRTC sur la concurrence des services Internet
0Aujourd’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:
- permet aux fournisseurs de services indépendants d’offrir des vitesses équivalentes aux gros joueurs;
- facilite l’accès aux technologies utilisant le câble (J’espère que cela permettra à des services tels que SpeedCable d’être plus compétitifs);
- offre des accès compétitifs aux nouveaux réseaux tels que la fibre (si le prix coutant sur lequel se base la tarification n’est pas gonflé artificielement par les gros joueurs).
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
Identification de l’appelant (CID) à partir des données de vtiger CRM
0Chez 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 :
- Prioriser le numéro mobile du contact (préfixe : ‘CM:’);
- Pour les entreprises n’ayant qu’un contact associé, afficher son nom (‘CP:’);
- Pour les entreprises ayant plusieurs contacts, afficher le nom de l’entreprise (AP ou AO);
- En dernier recours, valider s’il s’agit d’un prospect (LM ou LP).
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.
Votre entreprise a un projet en téléphonie IP ou désire intégrer sa téléphonie avec des systèmes de gestion tel qu’un dossier patient informatisé ou un système de suivi de la clientèle ? N’hésitez pas à communiquer avec gestion medsécure qui saura vous conseiller dans votre projet.
Securité sous AsteriskNow
0Dans 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)
Partager-mes-fichiers.com
0Implanté 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.
Numérotation automatique des figures (jquery + css2)
1L’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….
Publication de la version 0.6 de WikiHelp
0Avec quelque jour d’avance, la version 0.6 de WikiHelp vient d’être publié.
- Utilisation de jquery : Notification, AJAX (get/post), menu contextuelle, utilisation de json, fenètre modal, etc.
- Gestion des utilisateurs : Possibilité d’octroyer des droits différents à “admin” et aux utilisateurs qui s’enregistrent.
- Un nouveau menu contextuelle pour les pages
- Un support préliminaire pour l’annotation de page
- La gestion des traductions de pages (Un noeud peut être disponible dans plusieurs languages)
- Gestion multi-wiki
- Un éditeur graphique (WYM Editor)
- Filtre anti XSS via htmlpurifier
- Meilleur gestion des tags
À mi chemin pour la version 1.0 prévu pour septembre. Plus de détails des les prochains posts.
- Windows : wikihelp-0.6.zip
- Linux : wikihelp-0.6.tar.gz
- Site de développement : http://medsecure.ca/trac/wikihelp/wiki
Tremblement de terre !
0Il est temps d’actualiser les plans de continuité des affaires et d’y inclure les tremblements de terre !

source :http://earthquake.usgs.gov/earthquakes/dyfi/events/us/2010xwa7/us/index.html
Implication dans le Hackfest 2010
0Je devrais m’impliquer encore cette année dans le concours de sécurité du hackfest 2010 (http://www.hackfest.ca/). Plus de détails suivront au cours de l’été. La période d’inscription est ouverte (http://www.hackfest.ca/?a=ins) alors inscrivez-vous en grand nombre
(pour 30$ c’est surement le meilleur investissement en infosec que vous ferez cette année ! ).
Migration trixbox vers asterisknow
0- Mise à jour d’AsteriskNow
yum update
- Migration a asterisk 1.6 :
# yum shell install asterisk16-core asterisk16 remove asterisk14 asterisk14-core ts solve ts run remove asterisk14-core ts solve ts run
- freepbx n’est pas à la même version mais la base de donnée peut-être exporté (mysqldump –all-databases > dump.sql) et réimporté sur asterisknow (mysql < dump.sql)
- Le provisionning n’est pas inclus dans AsteriskNow, ainsi /tftpboot doit être transférer et ftp/tftp installée
- Le répertoire de spool /var/spool/voicemail doit être transférer
- Le répertoire /etc/asterisk doit être transférer sur le nouveau serveur
- Mise a jour de amportal.conf :
- Freepbx utilise l’authentification fichier, alors qu’Asterisknow utilise db (AUTHTYPE=none versus database)
- Remplacer l’utilisateur “asteriskuser” par l’utilisateur “freepbx” d’AsteriskNow
- L’ensemble des modules qui sont “broken” doivent être désinstaller et réinstaller. Si des erreurs SQL surviennent, modifier le nouveau schéma de base de donnée.
- Mettre à jour les autres package jusqu’a 2.7
- Les trunks doivent être reconstruit manuellement et la configuraiton rechargée
- Redémarrer asterisk
amportal restart

