Table des matières
Abandonnez C et C++, tournez-vous vers Rust, juste pour la sécurité de la mémoire
En plus de Rust, quels autres langages de programmation sécurisés en mémoire​​existe-t-il ?
Maison Périphériques technologiques IA La Maison Blanche a publié un document appelant les développeurs à abandonner C et C++ : Rust a été « trié sur le volet » pour la sécurité de la mémoire

La Maison Blanche a publié un document appelant les développeurs à abandonner C et C++ : Rust a été « trié sur le volet » pour la sécurité de la mémoire

Mar 01, 2024 pm 10:16 PM
ai 模型 overflow

Récemment, le bureau du National Cyber ​​​​Director (ONCD) de la Maison Blanche a souligné un point important dans un rapport de 19 pages : les développeurs devraient adopter des langages de programmation sécurisés en mémoire, tels que le langage Rust. Le rapport souligne que le choix d'un langage de programmation sécurisé en mémoire est un moyen essentiel de garantir que les logiciels sont développés de manière sécurisée dès leur conception.

ONCD a également souligné que les recommandations du rapport ont été élaborées en collaboration avec des entreprises technologiques, des universités et d'autres institutions, et bénéficient du soutien d'un certain nombre d'entreprises technologiques bien connues, notamment HP, Accenture et Palantir.

La Maison Blanche a publié un document appelant les développeurs à abandonner C et C++ : Rust a été « trié sur le volet » pour la sécurité de la mémoire

Adresse du rapport : https://www.whitehouse.gov/wp-content/uploads/2024/02/Final-ONCD-Technical-Report.pdf

En fait, ce n'est pas officiel de Aux États-Unis Pour la première fois, les organisations appellent à s'éloigner du C et du C++.

En décembre de l'année dernière, l'Agence américaine de cybersécurité et d'infrastructure (CISA), en collaboration avec d'autres agences, a publié un « Guide de feuille de route pour la sécurité de la mémoire », désignant C et C++ comme des langages de programmation dangereux pour la mémoire, mettant l'accent sur le développement de logiciels. adoptez d'autres langages de programmation sécurisés en mémoire tels que Rust et Java. L'objectif de ce guide est de sensibiliser aux problèmes de sécurité de la mémoire dans le développement de logiciels et d'encourager l'adoption de langages de programmation plus fiables afin de réduire les vulnérabilités de sécurité potentielles. CISA souligne spécifiquement l'importance d'adopter des langages de programmation sécurisés en mémoire, car cela contribue à réduire le risque d'attaques malveillantes et de fuites de données. Cette décision vise également à promouvoir le développement de l'industrie du développement de logiciels dans une direction plus sûre et plus fiable,

La Maison Blanche a publié un document appelant les développeurs à abandonner C et C++ : Rust a été « trié sur le volet » pour la sécurité de la mémoire

Source : https://www.cisa.gov/sites/default/files/2023-12/ The-Case -for-Memory-Safe-Roadmaps-508c.pdf

Abandonnez C et C++, tournez-vous vers Rust, juste pour la sécurité de la mémoire

Il est important de mettre l'accent sur l'utilisation de langages de programmation sécurisés en mémoire, car la sécurité de la mémoire peut empêcher des événements tels que la mise en mémoire tampon. Des problèmes tels qu'un débordement de zone et des pointeurs suspendus peuvent entraîner des bogues et des vulnérabilités. Il est donc crucial de comprendre le concept de sécurité de la mémoire.

Dans quelle mesure l'insécurité de la mémoire est-elle nocive ? En 2019, les ingénieurs en sécurité de Microsoft ont signalé qu'environ 70 % des problèmes de sécurité étaient causés par des problèmes de sécurité de la mémoire. En 2020, Google a signalé des données similaires pour les bugs découverts dans le navigateur Chromium.

Pour les langages de programmation, C et C++ autorisent l'arithmétique de pointeur arbitraire en utilisant des adresses mémoire directes sans vérification des limites. Le rapport souligne que les experts ont constaté que certains langages de programmation, représentés par C et C++, manquent tous deux de fonctionnalités liées à la sécurité de la mémoire et sont très répandus dans certains systèmes critiques. Par conséquent, C et C++ sont considérés comme des langages de programmation « dangereux ».

Correspondant au C et au C++, Rust est considéré comme un exemple classique de langage de programmation sécurisé en mémoire. Rust est un langage de programmation système axé sur la sécurité, en particulier la sécurité de la concurrence. Il prend en charge les langages multi-paradigmes tels que les paradigmes de programmation fonctionnels, impératifs et génériques, et les frameworks d'apprentissage en profondeur tels que TensorFlow l'utilisent également comme un excellent langage frontal.

La Maison Blanche a publié un document appelant les développeurs à abandonner C et C++ : Rust a été « trié sur le volet » pour la sécurité de la mémoire

Dans le rapport d'enquête auprès des développeurs 2021 du site Web de questions et réponses des programmeurs Stack Overflow, le langage Rust est devenu le langage de programmation le plus populaire parmi les développeurs. L’une des raisons pour lesquelles Rust est populaire dans le monde de la programmation système est qu’il peut aider à éliminer les vulnérabilités de sécurité liées à la mémoire.

La Maison Blanche a publié un document appelant les développeurs à abandonner C et C++ : Rust a été « trié sur le volet » pour la sécurité de la mémoire

Les fonctionnalités de sécurité de la mémoire de Rust sont vérifiées depuis longtemps par l'industrie. En avril 2021, Google a annoncé qu'Android ajouterait la prise en charge du langage Rust. La raison en est que les bogues de sécurité de la mémoire en C et C++ sont les sources d'erreurs les plus difficiles à résoudre. Google a investi beaucoup d'efforts et de ressources pour détecter, corriger et atténuer ces bogues, et empêcher efficacement un grand nombre de bogues d'entrer dans le système. Version Android.

Cependant, malgré ces efforts, les bugs de sécurité de la mémoire restent la principale cause de problèmes de stabilité, représentant environ 70 % des vulnérabilités de sécurité critiques d'Android au fil du temps. Par conséquent, Google a ajouté une troisième option, Rust, pour les développeurs de systèmes d'exploitation.

Dan Grossman, professeur d'informatique à l'Université de Washington, a déclaré que tout le monde est conscient des dangers du C et du C++ depuis des décennies, et que c'est enfin le bon moment pour promouvoir les langages de programmation sécurisés en mémoire, après tout, là-bas sont des alternatives pratiques et matures.

Il estime également que se débarrasser du C et du C++ ne peut pas se faire du jour au lendemain, en particulier dans les systèmes embarqués. Cependant, ce processus devrait s'accélérer à mesure que d'autres langages de programmation tels que Rust seront de plus en plus utilisés dans les logiciels système.

De plus en plus de gens ne semblent pas adhérer à l'attitude officielle envers le C et le C++.

Certaines personnes pensent que le C++ moderne est sécurisé pour la mémoire et que tous les systèmes d'exploitation utilisent le C ou le C++ pour la programmation. Certaines personnes pensent également que même si le C++ n'est pas sûr pour la mémoire, le C++ moderne a plus de « garde-fous » et est peu coûteux, voire gratuit.

La Maison Blanche a publié un document appelant les développeurs à abandonner C et C++ : Rust a été « trié sur le volet » pour la sécurité de la mémoire

La Maison Blanche a publié un document appelant les développeurs à abandonner C et C++ : Rust a été « trié sur le volet » pour la sécurité de la mémoire

Pour Rust, qui a été « trié sur le volet » pour la sécurité de la mémoire, certaines personnes estiment que son niveau de soutien n'est pas si élevé et qu'il ne mérite pas d'être intégré dans les systèmes gouvernementaux.

La Maison Blanche a publié un document appelant les développeurs à abandonner C et C++ : Rust a été « trié sur le volet » pour la sécurité de la mémoire

En plus de Rust, quels autres langages de programmation sécurisés en mémoire​​existe-t-il ?

En novembre 2022, la National Security Agency (NSA) a publié une fiche d'information sur la cybersécurité détaillant ce qu'elle considère langages de programmation sécurisés en mémoire.

  • Ruby
  • Python
  • Delphi/Object Pascal
  • Ada
  • Quelle est la popularité des langages de programmation ci-dessus ? L'indice de popularité des langages de programmation TIOBE de février 2024 montre qu'en termes de programmation, Python se classe premier, C# se classe cinquième, Java se classe quatrième, JavaScript se classe sixième, Go se classe huitième et Delphi/Object Pascal Swift se classe 16e, Rust se classe 16e. 18e et Ruby se classe à peine 20e.
  • Comme vous pouvez le constater, la plupart des langues sélectionnées par la NSA sont dans le top 20, seule Ada n'y est pas, mais il n'y en a que 5 dans le top dix.
  • Source : https://www.tiobe.com/tiobe-index/
  • Le rapport appelle également à une meilleure mesure de la sécurité des logiciels. L'ONCD estime que : De meilleurs indicateurs permettent aux fournisseurs de technologies de mieux planifier, prédire et atténuer les vulnérabilités avant qu'elles ne deviennent un problème.
  • Ce rapport passe également en revue la mission Apollo 13, que la NASA a classée comme un « échec réussi ». La mission elle-même a connu un échec catastrophique et les trois astronautes ont effectué des réparations temporaires et atténué certains problèmes afin de rentrer chez eux en toute sécurité. Le rapport déclare : Les codes de sécurité de la mémoire sont très importants pour le programme spatial. L'exploration humaine de l'espace doit utiliser un langage sécurisé en mémoire, un langage aussi proche que possible du noyau pour éviter de futurs accidents.

À mesure que le monde devient de plus en plus numérique, un meilleur codage devient de plus en plus important et un mauvais code peut être utilisé de manière malveillante.

Rust Language

La Maison Blanche a publié un document appelant les développeurs à abandonner C et C++ : Rust a été « trié sur le volet » pour la sécurité de la mémoireLe langage Rust est un langage de programmation compilé à usage général dirigé par Mozilla. Les critères de conception sont « la sécurité, la concurrence et l'aspect pratique » et prennent en charge les styles de programmation fonctionnels, concurrents, procéduraux et orientés objet.

L'avantage le plus important du langage Rust est qu'il peut fournir des garanties de sécurité de la mémoire sans perte de performances supplémentaire. Dans le processus de développement des langages de programmation traditionnels au niveau du système (C/C++), des plantages ou des bugs se produisent souvent en raison de diverses erreurs de mémoire, telles que des pointeurs nuls, des pointeurs sauvages, des fuites de mémoire, une mémoire hors limites, des erreurs de segmentation, courses de données et itérations panne de périphérique, etc.

Les problèmes de mémoire constituent un danger caché majeur affectant la stabilité et la sécurité du programme, et constituent un facteur majeur affectant l'efficacité du développement. Les deux grands géants de la technologie Google et Microsoft ont déclaré que 70 % des problèmes de sécurité des programmes dans leurs produits importants sont causés par des problèmes de mémoire, et les deux géants envisagent d'utiliser le langage Rust pour résoudre les problèmes de sécurité de la mémoire.

De plus, Rust possède également d'excellentes capacités multiplateformes, prend en charge la compilation croisée et est également convivial pour les environnements embarqués.

Cependant, le langage Rust présente également quelques défauts délicats.

Tout d'abord, parce que Rust a une syntaxe spéciale, il est un peu difficile pour les débutants de démarrer, comme "à vie". En comparaison, des langages tels que Python et Java sont plus simples et plus faciles à apprendre. Mais si vous connaissez déjà le langage C++, apprendre le langage Rust est bien plus simple car il emprunte beaucoup de syntaxe C++.

Deuxièmement, la vérification du compilateur du langage Rust est très stricte et la majeure partie du processus de développement est consacrée à la résolution de problèmes de compilation. Cependant, une fois la compilation terminée, les développeurs n'ont pas à se soucier de la sécurité de la mémoire, des fuites de mémoire et d'autres problèmes, et doivent uniquement se concentrer sur la logique métier.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment résoudre MySQL ne peut pas être démarré Comment résoudre MySQL ne peut pas être démarré Apr 08, 2025 pm 02:21 PM

Il existe de nombreuses raisons pour lesquelles la startup MySQL échoue, et elle peut être diagnostiquée en vérifiant le journal des erreurs. Les causes courantes incluent les conflits de port (vérifier l'occupation du port et la configuration de modification), les problèmes d'autorisation (vérifier le service exécutant les autorisations des utilisateurs), les erreurs de fichier de configuration (vérifier les paramètres des paramètres), la corruption du répertoire de données (restaurer les données ou reconstruire l'espace de la table), les problèmes d'espace de la table InNODB (vérifier les fichiers IBDATA1), la défaillance du chargement du plug-in (vérification du journal des erreurs). Lors de la résolution de problèmes, vous devez les analyser en fonction du journal d'erreur, trouver la cause profonde du problème et développer l'habitude de sauvegarder régulièrement les données pour prévenir et résoudre des problèmes.

Mysql peut-il renvoyer JSON Mysql peut-il renvoyer JSON Apr 08, 2025 pm 03:09 PM

MySQL peut renvoyer les données JSON. La fonction JSON_Extract extrait les valeurs de champ. Pour les requêtes complexes, envisagez d'utiliser la clause pour filtrer les données JSON, mais faites attention à son impact sur les performances. Le support de MySQL pour JSON augmente constamment, et il est recommandé de faire attention aux dernières versions et fonctionnalités.

Comprendre les propriétés acides: les piliers d'une base de données fiable Comprendre les propriétés acides: les piliers d'une base de données fiable Apr 08, 2025 pm 06:33 PM

Une explication détaillée des attributs d'acide de base de données Les attributs acides sont un ensemble de règles pour garantir la fiabilité et la cohérence des transactions de base de données. Ils définissent comment les systèmes de bases de données gérent les transactions et garantissent l'intégrité et la précision des données même en cas de plantages système, d'interruptions d'alimentation ou de plusieurs utilisateurs d'accès simultanément. Présentation de l'attribut acide Atomicité: une transaction est considérée comme une unité indivisible. Toute pièce échoue, la transaction entière est reculée et la base de données ne conserve aucune modification. Par exemple, si un transfert bancaire est déduit d'un compte mais pas augmenté à un autre, toute l'opération est révoquée. BeginTransaction; UpdateAccountSsetBalance = Balance-100Wh

Master SQL Limit Clause: Contrôlez le nombre de lignes dans une requête Master SQL Limit Clause: Contrôlez le nombre de lignes dans une requête Apr 08, 2025 pm 07:00 PM

Clause SQLLIMIT: Contrôlez le nombre de lignes dans les résultats de la requête. La clause limite dans SQL est utilisée pour limiter le nombre de lignes renvoyées par la requête. Ceci est très utile lors du traitement de grands ensembles de données, des affichages paginés et des données de test, et peut améliorer efficacement l'efficacité de la requête. Syntaxe de base de la syntaxe: selectColumn1, Column2, ... FromTable_NamelimitNumber_Of_Rows; Number_OF_ROWS: Spécifiez le nombre de lignes renvoyées. Syntaxe avec décalage: selectColumn1, Column2, ... FromTable_Namelimitoffset, numéro_of_rows; décalage: sauter

Comment optimiser les performances MySQL pour les applications de haute charge? Comment optimiser les performances MySQL pour les applications de haute charge? Apr 08, 2025 pm 06:03 PM

Guide d'optimisation des performances de la base de données MySQL dans les applications à forte intensité de ressources, la base de données MySQL joue un rôle crucial et est responsable de la gestion des transactions massives. Cependant, à mesure que l'échelle de l'application se développe, les goulots d'étranglement des performances de la base de données deviennent souvent une contrainte. Cet article explorera une série de stratégies efficaces d'optimisation des performances MySQL pour garantir que votre application reste efficace et réactive dans des charges élevées. Nous combinerons des cas réels pour expliquer les technologies clés approfondies telles que l'indexation, l'optimisation des requêtes, la conception de la base de données et la mise en cache. 1. La conception de l'architecture de la base de données et l'architecture optimisée de la base de données sont la pierre angulaire de l'optimisation des performances MySQL. Voici quelques principes de base: sélectionner le bon type de données et sélectionner le plus petit type de données qui répond aux besoins peut non seulement économiser un espace de stockage, mais également améliorer la vitesse de traitement des données.

La clé principale de MySQL peut être nul La clé principale de MySQL peut être nul Apr 08, 2025 pm 03:03 PM

La clé primaire MySQL ne peut pas être vide car la clé principale est un attribut de clé qui identifie de manière unique chaque ligne dans la base de données. Si la clé primaire peut être vide, l'enregistrement ne peut pas être identifié de manière unique, ce qui entraînera une confusion des données. Lorsque vous utilisez des colonnes entières ou des UUIdes auto-incrémentales comme clés principales, vous devez considérer des facteurs tels que l'efficacité et l'occupation de l'espace et choisir une solution appropriée.

Méthode de Navicat pour afficher le mot de passe de la base de données MongoDB Méthode de Navicat pour afficher le mot de passe de la base de données MongoDB Apr 08, 2025 pm 09:39 PM

Il est impossible de visualiser le mot de passe MongoDB directement via NAVICAT car il est stocké sous forme de valeurs de hachage. Comment récupérer les mots de passe perdus: 1. Réinitialiser les mots de passe; 2. Vérifiez les fichiers de configuration (peut contenir des valeurs de hachage); 3. Vérifiez les codes (May Code Hardcode).

Surveillez les gouttelettes MySQL et MariaDB avec Exportateur de Prometheus Mysql Surveillez les gouttelettes MySQL et MariaDB avec Exportateur de Prometheus Mysql Apr 08, 2025 pm 02:42 PM

Une surveillance efficace des bases de données MySQL et MARIADB est essentielle pour maintenir des performances optimales, identifier les goulots d'étranglement potentiels et assurer la fiabilité globale du système. Prometheus Mysql Exportateur est un outil puissant qui fournit des informations détaillées sur les mesures de base de données qui sont essentielles pour la gestion et le dépannage proactifs.

See all articles