Download - Le terrible audit de sécurité
![Page 1: Le terrible audit de sécurité](https://reader037.vdocuments.site/reader037/viewer/2022103016/5560b1bfd8b42a033c8b4670/html5/thumbnails/1.jpg)
TAS
Le Terrible Audit de Sécuritéjeudi 11 novembre 2010
![Page 2: Le terrible audit de sécurité](https://reader037.vdocuments.site/reader037/viewer/2022103016/5560b1bfd8b42a033c8b4670/html5/thumbnails/2.jpg)
Ordre du jour
Identifier les objectifs de sécurité
Préparer un référentiel
Vérifier la sécurité de son code
jeudi 11 novembre 2010
![Page 3: Le terrible audit de sécurité](https://reader037.vdocuments.site/reader037/viewer/2022103016/5560b1bfd8b42a033c8b4670/html5/thumbnails/3.jpg)
Qui parle?
Damien Seguy
Verbicruciste
Alter Way ConsultingL’expertise à coeur ouvert
jeudi 11 novembre 2010
![Page 4: Le terrible audit de sécurité](https://reader037.vdocuments.site/reader037/viewer/2022103016/5560b1bfd8b42a033c8b4670/html5/thumbnails/4.jpg)
Référentiel de sécurité
jeudi 11 novembre 2010
![Page 5: Le terrible audit de sécurité](https://reader037.vdocuments.site/reader037/viewer/2022103016/5560b1bfd8b42a033c8b4670/html5/thumbnails/5.jpg)
Référentiel de sécurité
Rappels du métier
Liste des risques et vecteurs
Matrice de sécurité
Liste des détails des points de sécurité
Références
jeudi 11 novembre 2010
![Page 6: Le terrible audit de sécurité](https://reader037.vdocuments.site/reader037/viewer/2022103016/5560b1bfd8b42a033c8b4670/html5/thumbnails/6.jpg)
Référentiel sécurité
Liste des risques
Destruction, modification, lecture
DOS, détournement, image
Liste des vecteurs
XSS, CSRF, injections, remplacement
jeudi 11 novembre 2010
![Page 7: Le terrible audit de sécurité](https://reader037.vdocuments.site/reader037/viewer/2022103016/5560b1bfd8b42a033c8b4670/html5/thumbnails/7.jpg)
Matrice de sécurité
DOS Destruction Image
XSS X
CSRF X X X
headers X X
jeudi 11 novembre 2010
![Page 8: Le terrible audit de sécurité](https://reader037.vdocuments.site/reader037/viewer/2022103016/5560b1bfd8b42a033c8b4670/html5/thumbnails/8.jpg)
Points de sécurité
Nom du point
Description
Risques courus
Exemples et anti-exemples
Méthode de vérification dans le code : automatique, manuel, méthode
jeudi 11 novembre 2010
![Page 9: Le terrible audit de sécurité](https://reader037.vdocuments.site/reader037/viewer/2022103016/5560b1bfd8b42a033c8b4670/html5/thumbnails/9.jpg)
Références
OWASP
PCI
HIPAA
ISO-27002
ESSRII
FISMA
BASELII
SOX
jeudi 11 novembre 2010
![Page 10: Le terrible audit de sécurité](https://reader037.vdocuments.site/reader037/viewer/2022103016/5560b1bfd8b42a033c8b4670/html5/thumbnails/10.jpg)
TOP 10 OWASP
Injections
XSS
Session et identification
Accès direct aux objets
CSRF
Configuration
Stockage chiffré
Restriction d’URL
Couche de transport
Redirections
jeudi 11 novembre 2010
![Page 11: Le terrible audit de sécurité](https://reader037.vdocuments.site/reader037/viewer/2022103016/5560b1bfd8b42a033c8b4670/html5/thumbnails/11.jpg)
TOP 10 OWASP
Injections
XSS
Session et identification
Accès direct aux objets
CSRF
Configuration
Stockage chiffré
Restriction d’URL
Couche de transport
Redirections
Injections
XSS
Session et identification
Accès direct aux objets
CSRF
Restriction d’URL
Redirections
jeudi 11 novembre 2010
![Page 12: Le terrible audit de sécurité](https://reader037.vdocuments.site/reader037/viewer/2022103016/5560b1bfd8b42a033c8b4670/html5/thumbnails/12.jpg)
PIMCORE
CMS
PHP, MySQL
Zend Framework
Meilleur Projet OS Packt
http://www.pimcore.org/
jeudi 11 novembre 2010
![Page 13: Le terrible audit de sécurité](https://reader037.vdocuments.site/reader037/viewer/2022103016/5560b1bfd8b42a033c8b4670/html5/thumbnails/13.jpg)
Méthode
Prendre un point OWASP
Trouver le point d’entrée
Fouiller le code source
Valider manuellement le point
jeudi 11 novembre 2010
![Page 14: Le terrible audit de sécurité](https://reader037.vdocuments.site/reader037/viewer/2022103016/5560b1bfd8b42a033c8b4670/html5/thumbnails/14.jpg)
Injections
jeudi 11 novembre 2010
![Page 15: Le terrible audit de sécurité](https://reader037.vdocuments.site/reader037/viewer/2022103016/5560b1bfd8b42a033c8b4670/html5/thumbnails/15.jpg)
Injections
Points d’entrées SQL
mysql_query, pdo->query
query, execute, fetchAll, delete, update, select
Injection de variables
getParams, getParam, $_GET/POST
jeudi 11 novembre 2010
![Page 16: Le terrible audit de sécurité](https://reader037.vdocuments.site/reader037/viewer/2022103016/5560b1bfd8b42a033c8b4670/html5/thumbnails/16.jpg)
Recherche
Grep
Rapide, efficace
Trouve trop
Tokenizer
PHP, sémantique
Implique le tri et la reconstruction
jeudi 11 novembre 2010
![Page 17: Le terrible audit de sécurité](https://reader037.vdocuments.site/reader037/viewer/2022103016/5560b1bfd8b42a033c8b4670/html5/thumbnails/17.jpg)
[1] => Array ( [0] => 266 [1] => print [2] => 1 )
[2] => Array ( [0] => 370 [1] => [2] => 1 )
[3] => ( [4] => " [5] => Array ( [0] => 314 [1] => hello [2] => 1 )
[6] => Array ( [0] => 309 [1] => $world [2] => 1 )
[7] => Array ( [0] => 314 [1] => ! [2] => 1 )
[8] => " [9] => ) [10] => ;
[1] => Array ( [0] => token PHP [1] => code PHP [2] => ligne ) [2] => "
Tokenizer<?php print ("hello $world! "); ?>
jeudi 11 novembre 2010
![Page 18: Le terrible audit de sécurité](https://reader037.vdocuments.site/reader037/viewer/2022103016/5560b1bfd8b42a033c8b4670/html5/thumbnails/18.jpg)
$this->db->fetchAll("SHOW COLUMNS FROM documents_permissions")
$this->db->update("documents_permissions", $data, "id='" . $this->model->getId() . "'");
$this->db->insert("documents_permissions", array());
$this->db->delete("documents_permissions", "id=" . $this->model->getId());
$this->db->fetchRow("SELECT * FROM dp WHERE id = ?", $this->model->getId());
jeudi 11 novembre 2010
![Page 19: Le terrible audit de sécurité](https://reader037.vdocuments.site/reader037/viewer/2022103016/5560b1bfd8b42a033c8b4670/html5/thumbnails/19.jpg)
$data = json_decode($this->_getParam("data")); if (!empty($data->id)) { $nodes[] = $data; } else { $nodes = $data; } //loop through store nodes = documents if (is_array($nodes)) { foreach ($nodes as $node) {
jeudi 11 novembre 2010
![Page 20: Le terrible audit de sécurité](https://reader037.vdocuments.site/reader037/viewer/2022103016/5560b1bfd8b42a033c8b4670/html5/thumbnails/20.jpg)
Bilan
Pas de protections au niveau des requêtes SQL
Transmission directe depuis le contrôleur au modèle
Utilisation de valeurs sans contrôle
jeudi 11 novembre 2010
![Page 21: Le terrible audit de sécurité](https://reader037.vdocuments.site/reader037/viewer/2022103016/5560b1bfd8b42a033c8b4670/html5/thumbnails/21.jpg)
Bilan
Pas de protections au niveau des requêtes SQL
Transmission directe depuis le contrôleur au modèle
Utilisation de valeurs sans contrôle
jeudi 11 novembre 2010
![Page 22: Le terrible audit de sécurité](https://reader037.vdocuments.site/reader037/viewer/2022103016/5560b1bfd8b42a033c8b4670/html5/thumbnails/22.jpg)
Sessions
jeudi 11 novembre 2010
![Page 23: Le terrible audit de sécurité](https://reader037.vdocuments.site/reader037/viewer/2022103016/5560b1bfd8b42a033c8b4670/html5/thumbnails/23.jpg)
Session et identification
Utilisation des sessions standards
Nécessite un arrimage plus fort
Durée de vie courte recommandée
User-Agent, IP, LANGAGE-ACCEPT, token aléatoire à mettre en session + via le Web
jeudi 11 novembre 2010
![Page 24: Le terrible audit de sécurité](https://reader037.vdocuments.site/reader037/viewer/2022103016/5560b1bfd8b42a033c8b4670/html5/thumbnails/24.jpg)
Bilan
Utilisation standard des sessions PHP
Pas de mécanisme spécifique d’arrimage
jeudi 11 novembre 2010
![Page 25: Le terrible audit de sécurité](https://reader037.vdocuments.site/reader037/viewer/2022103016/5560b1bfd8b42a033c8b4670/html5/thumbnails/25.jpg)
Bilan
Utilisation standard des sessions PHP
Pas de mécanisme spécifique d’arrimage
jeudi 11 novembre 2010
![Page 26: Le terrible audit de sécurité](https://reader037.vdocuments.site/reader037/viewer/2022103016/5560b1bfd8b42a033c8b4670/html5/thumbnails/26.jpg)
Redirections
jeudi 11 novembre 2010
![Page 27: Le terrible audit de sécurité](https://reader037.vdocuments.site/reader037/viewer/2022103016/5560b1bfd8b42a033c8b4670/html5/thumbnails/27.jpg)
Redirections
Redirections mal validée
Méthodes redirect ou _redirect
Idéalement, interne au site, et fixe
jeudi 11 novembre 2010
![Page 28: Le terrible audit de sécurité](https://reader037.vdocuments.site/reader037/viewer/2022103016/5560b1bfd8b42a033c8b4670/html5/thumbnails/28.jpg)
Points d’entrée
$this->_redirect("/admin/"); $this->_redirect("/admin/login/");
$this->_redirect("/admin/login/?auth_failed=true&inactive=".$userInactive);
jeudi 11 novembre 2010
![Page 29: Le terrible audit de sécurité](https://reader037.vdocuments.site/reader037/viewer/2022103016/5560b1bfd8b42a033c8b4670/html5/thumbnails/29.jpg)
Bilan
Validation systématique
Bonne discipline
jeudi 11 novembre 2010
![Page 30: Le terrible audit de sécurité](https://reader037.vdocuments.site/reader037/viewer/2022103016/5560b1bfd8b42a033c8b4670/html5/thumbnails/30.jpg)
Bilan
Validation systématique
Bonne discipline
jeudi 11 novembre 2010
![Page 31: Le terrible audit de sécurité](https://reader037.vdocuments.site/reader037/viewer/2022103016/5560b1bfd8b42a033c8b4670/html5/thumbnails/31.jpg)
Accès direct aux objets
jeudi 11 novembre 2010
![Page 32: Le terrible audit de sécurité](https://reader037.vdocuments.site/reader037/viewer/2022103016/5560b1bfd8b42a033c8b4670/html5/thumbnails/32.jpg)
Accès direct aux objets
jeudi 11 novembre 2010
![Page 33: Le terrible audit de sécurité](https://reader037.vdocuments.site/reader037/viewer/2022103016/5560b1bfd8b42a033c8b4670/html5/thumbnails/33.jpg)
Accès direct aux objets
http://www.elysee.fr/president/les-actualites/les-actualites.4.html
http://www.decathlon.fr/tee-shirt-manches-longues-id_8152082.html
Les identifiants sont des auto_increment...
jeudi 11 novembre 2010
![Page 34: Le terrible audit de sécurité](https://reader037.vdocuments.site/reader037/viewer/2022103016/5560b1bfd8b42a033c8b4670/html5/thumbnails/34.jpg)
Par fois, c’est drôle
http://www.decathlon.fr/surtout-n-allez-pas-a-l-afup-id_8152082.html
jeudi 11 novembre 2010
![Page 35: Le terrible audit de sécurité](https://reader037.vdocuments.site/reader037/viewer/2022103016/5560b1bfd8b42a033c8b4670/html5/thumbnails/35.jpg)
public function deleteAction() { $success = false;
$document = Document::getById ($this->_getParam("id")); $document->getPermissionsForUser ($this->getUser()); if ($document->isAllowed("delete")) { Element_Recyclebin_Item::create ($document, $this->getUser());
} else { Logger::debug //**** } $this->_helper->json(array ("success" => $success));
}
jeudi 11 novembre 2010
![Page 36: Le terrible audit de sécurité](https://reader037.vdocuments.site/reader037/viewer/2022103016/5560b1bfd8b42a033c8b4670/html5/thumbnails/36.jpg)
Accès direct aux objets
Ne jamais exposer ses structures internes sur le site Web
Faire une traduction, et stocker les vraies valeurs dans la session
jeudi 11 novembre 2010
![Page 37: Le terrible audit de sécurité](https://reader037.vdocuments.site/reader037/viewer/2022103016/5560b1bfd8b42a033c8b4670/html5/thumbnails/37.jpg)
Bilan
Accès direct aux objets
jeudi 11 novembre 2010
![Page 38: Le terrible audit de sécurité](https://reader037.vdocuments.site/reader037/viewer/2022103016/5560b1bfd8b42a033c8b4670/html5/thumbnails/38.jpg)
Bilan
Accès direct aux objets
jeudi 11 novembre 2010
![Page 39: Le terrible audit de sécurité](https://reader037.vdocuments.site/reader037/viewer/2022103016/5560b1bfd8b42a033c8b4670/html5/thumbnails/39.jpg)
Accès aux URL
Les URL doivent bien porter des vérifications d’accès (type ACL)
jeudi 11 novembre 2010
![Page 40: Le terrible audit de sécurité](https://reader037.vdocuments.site/reader037/viewer/2022103016/5560b1bfd8b42a033c8b4670/html5/thumbnails/40.jpg)
<?php class Admin_AssetController extends Pimcore_Controller_Action_Admin {
public function init() { parent::init();
// check permissions $notRestrictedActions = array("get-image-thumbnail"); if (!in_array($this->_getParam("action"), $notRestrictedActions)) { if (!$this->getUser()->isAllowed("assets")) {
$this->_redirect("/admin/login"); die(); } } } ?>
jeudi 11 novembre 2010
![Page 41: Le terrible audit de sécurité](https://reader037.vdocuments.site/reader037/viewer/2022103016/5560b1bfd8b42a033c8b4670/html5/thumbnails/41.jpg)
Accès aux URL
16 contrôleurs d’administration
16 dérivation de Pimcore_Controller_Action_Admin
7 utilisations de /admin/login
Vérifier l’héritage ET parent::init
jeudi 11 novembre 2010
![Page 42: Le terrible audit de sécurité](https://reader037.vdocuments.site/reader037/viewer/2022103016/5560b1bfd8b42a033c8b4670/html5/thumbnails/42.jpg)
Bilan
Pas de protection particulière
Évite les outils ZF
jeudi 11 novembre 2010
![Page 43: Le terrible audit de sécurité](https://reader037.vdocuments.site/reader037/viewer/2022103016/5560b1bfd8b42a033c8b4670/html5/thumbnails/43.jpg)
Bilan
Pas de protection particulière
Évite les outils ZF
jeudi 11 novembre 2010
![Page 44: Le terrible audit de sécurité](https://reader037.vdocuments.site/reader037/viewer/2022103016/5560b1bfd8b42a033c8b4670/html5/thumbnails/44.jpg)
CSRF
jeudi 11 novembre 2010
![Page 45: Le terrible audit de sécurité](https://reader037.vdocuments.site/reader037/viewer/2022103016/5560b1bfd8b42a033c8b4670/html5/thumbnails/45.jpg)
CSRF
Utilisation de Zend_Form et l’anti-csrf ?
Non
Test sur /admin/login
Pas de vérification de token
Sur deleteAction? Non
Pas moyen de surveiller facilement
jeudi 11 novembre 2010
![Page 46: Le terrible audit de sécurité](https://reader037.vdocuments.site/reader037/viewer/2022103016/5560b1bfd8b42a033c8b4670/html5/thumbnails/46.jpg)
Bilan
Pas de protection particulière
Évite les outils ZF
jeudi 11 novembre 2010
![Page 47: Le terrible audit de sécurité](https://reader037.vdocuments.site/reader037/viewer/2022103016/5560b1bfd8b42a033c8b4670/html5/thumbnails/47.jpg)
Bilan
Pas de protection particulière
Évite les outils ZF
jeudi 11 novembre 2010
![Page 48: Le terrible audit de sécurité](https://reader037.vdocuments.site/reader037/viewer/2022103016/5560b1bfd8b42a033c8b4670/html5/thumbnails/48.jpg)
XSS
jeudi 11 novembre 2010
![Page 49: Le terrible audit de sécurité](https://reader037.vdocuments.site/reader037/viewer/2022103016/5560b1bfd8b42a033c8b4670/html5/thumbnails/49.jpg)
XSS
Injection de code HTML/Javascript
Etudier les Vues
Etudier les contrôleurs
Grosse partie Javascript de présentation : protection par encodage
jeudi 11 novembre 2010
![Page 50: Le terrible audit de sécurité](https://reader037.vdocuments.site/reader037/viewer/2022103016/5560b1bfd8b42a033c8b4670/html5/thumbnails/50.jpg)
die($document->getPath() . $document->getKey());
$this->removeViewRenderer();
$this->_helper->json(array("docTypes" => $docTypes));
echo Zend_Json::encode( array( "error" => "plugin_dir_error" ));
readfile(PIMCORE_DOCUMENT_ROOT . $image->getThumbnail($thumbnail));
jeudi 11 novembre 2010
![Page 51: Le terrible audit de sécurité](https://reader037.vdocuments.site/reader037/viewer/2022103016/5560b1bfd8b42a033c8b4670/html5/thumbnails/51.jpg)
Bilan
Peu de suivi des conventions Zend Framework
Des die
Utilisation intensive de javascript
Difficile à auditer
jeudi 11 novembre 2010
![Page 52: Le terrible audit de sécurité](https://reader037.vdocuments.site/reader037/viewer/2022103016/5560b1bfd8b42a033c8b4670/html5/thumbnails/52.jpg)
Bilan
Peu de suivi des conventions Zend Framework
Des die
Utilisation intensive de javascript
Difficile à auditer
jeudi 11 novembre 2010
![Page 53: Le terrible audit de sécurité](https://reader037.vdocuments.site/reader037/viewer/2022103016/5560b1bfd8b42a033c8b4670/html5/thumbnails/53.jpg)
Injections CSRF
XSS URL
Sessions Redirections
Accès direct
jeudi 11 novembre 2010
![Page 54: Le terrible audit de sécurité](https://reader037.vdocuments.site/reader037/viewer/2022103016/5560b1bfd8b42a033c8b4670/html5/thumbnails/54.jpg)
Récapitulatif
Rédigez un référentiel
Convertissez-le en code à éviter / recommander
Vérifiez le vous-même
jeudi 11 novembre 2010
![Page 55: Le terrible audit de sécurité](https://reader037.vdocuments.site/reader037/viewer/2022103016/5560b1bfd8b42a033c8b4670/html5/thumbnails/55.jpg)
Mercijeudi 11 novembre 2010