Les codes fantastiques : jouons à casse-cache
Continuons cette série sur les codes fantastiques avec une histoire de cache et de compilateur
Bienvenue sur la base documentaire des Éditions Diamond !
Continuons cette série sur les codes fantastiques avec une histoire de cache et de compilateur
En C et en C++, les variables déclarées sur la pile sans initialisation n’ont pas de valeur par défaut. Accéder à leur valeur est à la fois une source de comportement indéfini et une source de fuite de données reconnue. De telles situations sont complexes à détecter à la compilation et coûteuses à détecter à l’exécution. Cet article propose d’explorer une alternative disponible dans les compilateurs clang et gcc : -ftrivial-auto-var-init=<value>.
Continuons cette série sur les codes fantastiques avec un code exceptionnel et inattendu
Continuons cette série sur les codes fantastiques avec une implémentation POSIX de dirname assez élégante.
Continuons cette série sur les codes fantastiques avec un exemple tiré d’une histoire vécue : retrouver les sources d’un plug-in Python obfusqué...
Pour commencer cette série sur les codes fantastiques, nous allons faire un petit tour dans la page de manuel de dlopen et (re)découvrir une forme d’introspection au niveau bibliothèque partagée.
Aux dernières vacances de février, j'ai eu l'opportunité de contribuer au CTF d'Insomnihack sous la forme d'un challenge de reverse. Si j'ai eu beaucoup de joie lors de son écriture, et malgré des retours positifs de la part des participants, celui-ci souffrait d'un défaut majeur. Cet article est donc une sorte de rapport de chall' par l'auteur, commentaire de texte inclus !
Le premier novembre 2021, les CVE-2021-42574 et CVE-2021-42694 étaient rendues publiques. Ces deux CVE rendent comptent des limitations de l’utilisation de caractères Unicode dans les identifiants, commentaires et/ou chaînes de caractères littérales de codes sources. Elles sont intéressantes par deux aspects : elles sont relativement agnostiques au langage de programmation sous-jacent, et elles utilisent comme cheval de Troie le rendu fait par certains outils, notamment les forges logicielles en ligne, de certains caractères Unicode.
Machines et développeurs ont parfois du mal à communiquer. D’un côté l’esprit humain, avec sa volonté d’abstraire et de penser fonctionnel. De l’autre côté, la machine et sa froide rigueur électronique. Entre les deux, il y a un pont : le compilateur. Mais comment prend-il en compte les aspects sécurité ?