banner
Centre d'Information
Livraison instantanée

Groupe de réflexion sur la sécurité : pour sécuriser efficacement le code, vérifiez à chaque étape

Jun 23, 2023

Maksim Kabakou - Le meilleur de Maksim Kabakou

Cela fait un bon moment que je n'ai pas ajouté de codage réel et pendant que j'ai fait du codage au niveau machine, on m'a d'abord enseigné Algol et Fortran, tous deux étant des langages de haut niveau.

Au cours de mes 20 années et plus dans la sécurité et l'assurance de l'information, la question du codage sécurisé a pris de l'importance. C'est grâce à de mauvaises procédures de codage et d'entretien que de nombreuses failles de sécurité réussies se sont produites, mais le rôle de l'environnement opérationnel et de toutes les fonctions d'entretien en arrière-plan ne doit pas être négligé, ils peuvent en effet être critiques.

Une grande partie du codage sécurisé consiste à s'assurer que toute entrée dans un morceau de code ne peut provenir que d'une source connue - vérifiée - et que l'entrée est soumise à une vérification rigoureuse des limites et du contenu et, si l'entrée n'est pas conforme, alors ces données sont complètement détruites.

De même, la sortie d'un morceau de code ne devrait provenir que du code lui-même et être envoyée à des destinations connues - vérifiées - et non autorisées à utiliser de la mémoire en dehors de ce qui a été alloué. Le code lui-même ne doit accéder et utiliser que les emplacements de mémoire alloués et les E / S système, les fonctions de maintenance doivent également nettoyer tous les emplacements de mémoire temporaires après utilisation.

Le système d'exploitation sous lequel tout code s'exécute doit allouer, surveiller et contrôler l'utilisation de la mémoire afin d'empêcher un morceau de code de violer la mémoire allouée à d'autres morceaux de code.

Le système d'exploitation ne doit autoriser que le code vérifié (certifié ou signalé) à s'exécuter, le code non vérifié doit être isolé, empêché de s'exécuter et une sortie d'erreur.

Il convient de noter qu'il peut s'agir d'une opération à plusieurs niveaux où, par exemple, vous avez un système hôte et un système d'exploitation qui exécutent un certain nombre d'hôtes virtuels ou prennent en charge un certain nombre de conteneurs - sans oublier qu'un hôte virtuel peut également être en cours d'exécution. un certain nombre de conteneurs créant un environnement très complexe.

Il existe un certain nombre d'outils de test de logiciels, de conteneurs et de systèmes d'exploitation sur le marché, mais à moins que votre organisation ne dispose de son propre service informatique qui développe, maintient et déploie du code, vous envisagerez probablement de sous-traiter tout travail de test et d'examen nécessaire à une agence compétente.