Le projet TrapC développe un langage de type C, fonctionnant en toute sécurité avec la mémoire.

La startup Trasec développe un langage de programmation appelé TrapC, qui est un dialecte du C, garantissant une gestion sécurisée de la mémoire. Pour éviter les erreurs liées à la mémoire, telles que les dépassements de tampon et l'accès à la mémoire déjà libérée, TrapC utilise une approche complètement différente pour les pointeurs ainsi qu'un mécanisme spécial de capture des erreurs basé sur des gestionnaires d'exceptions (trap). Le code source du compilateur pour TrapC est prévu pour être ouvert en 2025.

Il a été déclaré que les fonctionnalités de gestion des pointeurs ne perturberont pas l'approche habituelle et seront mises en œuvre par le biais du compilateur. Selon les concepteurs du langage, le compilateur garantira que les pointeurs ne se réfèrent qu'aux zones de mémoire appropriées et vérifiera toutes les limites des tampons. Le compilateur mémorise les types et empêche les conversions de types non sécurisées. Toutes les variables et tampons créés sont explicitement initialisés ou remplis de zéros par le compilateur.

Au lieu de malloc, TrapC utilise un constructeur new similaire à C++. Les appels à free et delete n'existent pas, et la gestion de la mémoire est laissée au compilateur, ce qui protège contre les erreurs entraînant des fuites de mémoire. Une gestion automatique incrémentielle de la mémoire est utilisée dans le tas, mais sans ramasse-miettes. Au niveau de l'ABI, TrapC sera compatible avec le C, ce qui permettra de combiner dans une même application le code TrapC et le code C pur, mais la sécurité de la gestion de la mémoire ne sera pas assurée pour le code C.

Le projet est dirigé par Robin Rowe, ancien professeur d'informatique ayant participé à des comités de développement des normes C et C++, qui a également créé l'éditeur graphique Cinepaint, utilisé dans la production de certains films hollywoodiens, et la bibliothèque POSIX libunistd pour Windows. Gabrielle Pantera, qui a occupé un poste de direction chez Disney, est cofondatrice de la société Trasec.

Les détails sur le projet ne sont pas encore fournis, seulement quelques exemples de code sont montrés, dans lesquels il est déclaré par exemple que TrapC ne permettra pas de débordement de tampon buff lors de l'exécution de «strcpy(buff,argv[1]);» ou ne permettra pas d'augmenter le pointeur ou l'index du tableau d'une valeur qui le déplace au-delà du tampon alloué ou de la fin du tableau. La manière dont cette protection est mise en œuvre n'est pas expliquée. // darpa_tractor.c int main(int argc,char* argv[]) { char buff[8]; // TrapC initialise implicitement à zéro, pas de mémoire sale int success = 0; // En C, un écrasement de tampon corrompt success strcpy(buff,argv[1]); // TrapC ne peut pas provoquer de débordement, strcpy est sûr if(!strcmp(buff, "s3cr8tpw")) { success = 1; } if(success) // TrapC a bloqué l'écrasement de strcpy, success est bon { printf("Bienvenue!\n"); } return !success; } // trapc_ptr.c int main() { const char* ptr = "Hello World"; // largeur de 12 caractères while(ptr) // Pas de débordement de tampon avec TrapC { printf("%c",*ptr); // afficher un caractère à la fois ptr++; // Dépasse la fin : TrapC met ptr à null ! } // À NE PAS tenter cela en C, provoquera un segfault ! assert(ptr == 0); return 0; } // trapc_array.c int score[10]; printf("%i",score[-1]); // TrapC n'autorisera pas l'accès for(int i = 0;i

Source : opennet.ru

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster