En sécurité sous les drapeaux... du compilateur, ces fameux -fstack-protector-strong et autres -D_FORTIFY_SOURCE=2 que l’on retrouve dans de plus en plus de logs de compilation. Cet article se propose de parcourir quelques-uns des drapeaux les plus célèbres, en observant les artefacts dans le code généré qui peuvent indiquer leur utilisation, tout en discutant de leur support par gcc et clang. Après tout, nombre d’entre eux sont utilisés par défaut sous Debian ou Fedora, ils méritent bien qu’on s’y intéresse un peu.
Quand une faille matérielle sort (au hasard, SPECTRE), plusieurs approches non exclusives sont possibles : attendre la sortie d’une nouvelle génération de processeurs, patienter jusqu’à la sortie d’une mise à jour du micro-code, changer son code source (quand c’est possible), ou demander au compilateur de mettre en place une contre-mesure, sacrifiant ainsi un peu de performance pour une meilleure sécurité. Cet article traite de cette dernière option, en se mettant dans le cadre des compilateurs gcc et clang, sous Linux.
En inspectant les drapeaux de compilation utilisés par défaut pour la construction de paquets par la distribution Fedora, on a sous les yeux une belle illustration de cette maxime de Thomas Fuller (homme d’Église et historien anglais du XVIIème siècle) : Le moyen d'être sauf, c'est de ne pas se croire en sécurité. Voyez plutôt :
