Pratiques de codage C sécurisées

Je suis à la recherche d’un registre complet des pratiques de codage sécurisé en C. Comme je n’ai pas trouvé de liste de ce type dans la liste, nous pourrions tout aussi bien en faire un wiki de communauté, pour référence ultérieure. Je recherche des solutions aux problèmes de sécurité tels que les débordements et les débordements de mémoire tampon liés à la stack et au tas, les débordements entiers et les débordements insuffisants, les attaques par format, le déréférencement par pointeur nul, les attaques par inspection de tas / mémoire, etc.

NB: Outre les pratiques de codage, les bibliothèques sécurisées qui se défendent contre ce type d’attaques méritent également d’être mentionnées.

LE: Comme on le voit dans cette question, pratiques de codage Secure C ++ mais pour C uniquement.

La norme “de facto” CERT C est assez bien connue et aborde ces problèmes dans une certaine mesure:

Norme de codage SEI CERT C

Il devrait y avoir plusieurs parsingurs statiques sur le marché prenant en charge CERT C.

Même réponse Secure Cookbook pour C et C ++: Recettes pour la cryptographie, l’authentification, la validation des entrées, etc.

De la description:

Les lecteurs vont apprendre:

  • Comment éviter les erreurs de programmation courantes, telles que les dépassements de mémoire tampon, les conditions de concurrence et les problèmes de formatage

  • Comment correctement utiliser les applications SSL

  • Comment créer des canaux sécurisés pour la communication client-serveur sans SSL

  • Comment intégrer l’infrastructure à clé publique (PKI) aux applications Meilleures pratiques pour utiliser correctement la cryptographie Techniques et stratégies pour valider correctement les entrées de programmes

  • Comment lancer des programmes en toute sécurité

  • Comment utiliser correctement les mécanismes d’access aux fichiers

  • Techniques de protection des applications contre le reverse engineering