IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

La communauté Rust reconnaît que le langage n'est pas sécurisé au travers d'une récente annonce
De lancement d'une initiative de vérification de 7500 fonctions non sûres de la bibliothèque standard Rust

Le , par Patrick Ruiz

74PARTAGES

6  2 
Amazon Web Services va, dans un effort conjoint avec la Fondation Rust, payer des développeurs pour vérifier 7500 fonctions non sécurisées de la bibliothèque Rust. C’est ce qui ressort d’une récente annonce qui ravive le débat sur la question de savoir si le Rust, initialement présenté comme un meilleur gage de sécurité pour les logiciels que C et C++, est en réalité plus sécurisé.

Rust propose des moyens de contourner ses garanties de sécurité en utilisant le mot-clé "unsafe". La documentation précise à ce propos que « si Rust ne vous permettait pas d'effectuer des opérations non sécurisées, vous ne pourriez pas accomplir certaines tâches, comme interagir directement avec le système d'exploitation, bien qu'elle ajoute que vous utilisez cette possibilité à vos propres risques ». Les risques dont il est question comprennent le déréférencement de pointeurs nuls qui est une source courante de problèmes de sécurité.



C’est aussi ce que rapporte la fondation Rust lorsqu’elle souligne que 20 % des unités de compilation Rust s’appuient sur le mot-clé "unsafe" :

« Bien que Rust soit un outil puissant pour la sûreté de la mémoire et la sécurité, la puissance de ses contrôles de sécurité peut devenir limitante lorsque le programme ne peut pas réellement se tromper mais que le compilateur est incapable de le garantir lui-même ; le programmeur peut prouver l'impossibilité d'un comportement indéfini par des moyens qui ne sont pas à la disposition du compilateur. Dans ces cas, les programmeurs Rust utiliseront le mot-clé unsafe pour indiquer une fonction ou un segment de code ayant a) des considérations de sécurité supplémentaires ou b) des invariants qu'un programmeur doit suivre manuellement pour garantir la sécurité et qui ne sont pas nécessairement exprimés par Rust ou la fonction elle-même. Le mot-clé unsafe permet aux développeurs de déréférencer un pointeur brut, de modifier une variable statique mutable et, surtout, d'appeler des fonctions unsafe. »

La récente publication d’AWS va plus loin en soulignant que même si les développeurs n'utilisent que du code sûr, la plupart des applications dépendent toujours de la bibliothèque standard Rust dans laquelle on retrouve environ 7500 fonctions non sécurisées. Grosso modo, la publication d’Amazon suggère qu’une mauvaise utilisation de Rust peut conduire aux mêmes problèmes en matière de sécurisation de la mémoire des logiciels rencontrés avec des langages concurrents comme le C et le C++. En d’autres termes, la faille ultime se trouverait entre la chaise et le clavier et c’est le programmeur.



Des initiatives comme Fil-C et Safe C++ ont vu le jour pour apporter une meilleure réponse aux problèmes de sécurisation de la mémoire des logiciels en C et C++

Les extensions Safe C++ visent à introduire des fonctionnalités de sécurité mémoire dans le langage C++. Ces extensions incluent des mécanismes comme le vérificateur d’emprunt (borrow checker) pour prévenir les erreurs d’utilisation après libération et des analyses d’initialisation pour garantir la sécurité des types. Ces outils permettent aux développeurs d’écrire du code plus sûr sans sacrifier les performances et la flexibilité du C++.



« Les langages de programmation C et C++ sont merveilleux. Il existe une tonne de codes écrits dans ces deux langages. Mais le C et le C++ sont des langages peu sûrs. De simples erreurs de logique peuvent amener un attaquant à contrôler la zone mémoire un pointeur et ce qui y est écrit, ce qui ouvre la voie à une exploitation facile. Beaucoup d'autres langages (Rust, Java, etc.) n'ont pas ce problème ! Mais j'aime le C. Et j'aime presque autant le C++. J'ai grandi avec eux. C'est une telle joie pour moi de d'utiliser les deux ! C'est pourquoi, pendant mon temps libre, j'ai décidé de créer mes propres langages C et C++ à mémoire sécurisée. Il s'agit d'un projet personnel et d'une expression de mon amour pour le C. Fil-C introduit la sécurité de la mémoire au cœur du C et du C++ », souligne Filip Pizlo de Epic Games à propos de Fil-C.

« Le projet vise une compatibilité à 100 % avec C et C++. Il suffit de compiler son code avec le compilateur pour obtenir du code sécurisé », d’après Pizlo. Ce dernier reconnaît néanmoins que « le principal obstacle à l'utilisation de Fil-C en production est la vitesse. Fil-C est actuellement environ 1,5 à 5 fois plus lent que le C traditionnel. »



Ces initiatives font surface dans un contexte de multiplications des appels au passage à des langages de programmation dits sécurisés et Rust s’impose au point d’être adopté pour lé développement du noyau Linux

Linus Torvalds lui-même est pourtant d’avis que le langage Rust est une solution d’avenir pour le développement du noyau. Il considère la prise en charge de Rust pour le développement du noyau Linux comme une « une étape importante vers la capacité d'écrire les pilotes dans un langage plus sûr. » Rust de Mozilla Research est le type de langage de programmation auquel ceux qui écrivent du code pour des systèmes d’entrée/sortie de base (BIOS), des chargeurs d’amorce, des systèmes d’exploitation, etc. portent un intérêt. D’avis d’observateurs avertis, c’est le futur de la programmation système en lieu et place du langage C. En effet, des experts sont d’avis qu’il offre de meilleures garanties de sécurisation des logiciels que le couple C/C++. Chez AWS on précise que choisir Rust pour ses projets de développement c’est ajouter l’efficacité énergétique et la performance d’exécution du C à l’atout sécurité.

En effet, il y a une liste de griefs qui reviennent à l’encontre du langage C : les problèmes liés à la gestion de la mémoire – dépassements de mémoire tampon, allocations non libérées, accès à des zones mémoire invalides ou libérées, etc. D’après les chiffres du dictionnaire Common Vulnerabilities and Exposure (CVE), 15,9 % des 2288 vulnérabilités qui ont affecté le noyau Linux en 20 ans sont liées à des dépassements de mémoire tampon.

De plus, certains benchmarks suggèrent que les applications Rust sont plus rapides que leurs équivalents en langage C. Et c’est justement pour ces atouts que sont la parité en termes de vitesse d’exécution en comparaison avec le C, mais surtout pour la sécurisation et la fiabilité que de plus en plus d’acteurs de la filière du développement informatique recommandent le Rust plutôt que le C ou le C++.

Ainsi, en adoptant Rust, la communauté autour du noyau Linux devrait mettre à profit ces atouts du langage sur le C. Et elle devrait faire d’une pierre deux coups étant donné que Rust peut faciliter l’arrivée de nouveaux contributeurs. C’est en tout cas ce que laisse entrevoir une étude de l’université de Waterloo.

Source : AWS

Et vous ?

Quel est votre expérience avec Rust en tant que langage de programmation et en particuluer avec les cas d'utilisation du mot-clé "unsafe" ? Les garanties de sécurisation de la mémoire qui sont attribuées à ce langage en comparaison au C et au C++ sont elles exagérées ?
Le potentiel problème avec Rust n’est-il pas le même qu’avec C et C++ : la qualité des programmeurs ?

Voir aussi :

Programmation : une étude révèle les langages les plus voraces en énergie, Perl, Python et Ruby en tête, C, Rust et C++, les langages les plus verts

Linus Torvalds souligne une bonne avancée du langage Rust dans le développement du noyau Linux, et aurait qualifié le C++ de « langage de m... », après le message de Google

Microsoft, Google, AWS, Huawei et Mozilla s'associent pour créer la Fondation Rust, une organisation à but non lucratif chargée de gérer le langage de programmation

Facebook rejoint AWS, Huawei, Google, Microsoft et Mozilla dans la Fondation Rust, et renforce son équipe Rust par des nouveaux talents

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de Uther
Expert éminent sénior https://www.developpez.com
Le 25/11/2024 à 22:26
Amazon Web Services va, dans un effort conjoint avec la Fondation Rust, payer des développeurs pour vérifier 7500 fonctions non sécurisées de la bibliothèque Rust. C’est ce qui ressort d’une récente annonce qui ravive le débat sur la question de savoir si le Rust, initialement présenté comme un meilleur gage de sécurité pour les logiciels que C et C++, est en réalité plus sécurisé.
Ça ne ravive rien du tout. Le Rust n'a jamais prétendu empêcher tous les problèmes dans toutes les situations. Tous les gens un minimum renseignés savent que la bibliothèque standard contient des blocks unsafe (code non garanti par le compilateur) et c'est parfaitement attendu : elle doit fournir des abstraction sures aux appels systèmes fondamentalement unsafe. Ça reste toujours mieux que les lib standards de C et C++ qui n'ont pas de notion des sécurité intégrées au langage et qui laissent volontairement la possibilité d'utiliser certaines de leur abstractions de manière non sécurisée sans avertissement.

Que l'on essaye de vérifier formellement le code unsafe de Rust, reste quand même un plus pour pour améliorer encore la confiance que l'on peut lui accorder. Par contre, ce qui m'intrigue dans la démarche c'est qu'un code vérifié ne le reste que tant qu'il n'est pas modifié, je serais curieux de voir comment ils prévoient de gérer ça vu que la bibliothèque standard évolue en continu.
7  1 
Avatar de Uther
Expert éminent sénior https://www.developpez.com
Le 04/12/2024 à 22:19
Citation Envoyé par d_d_v Voir le message
Je vois que tous les fanatiques pro-rust sont de sortie ici à ce que je vois.
La plupart des gens que vous appelez fanatiques pro-Rust ne prennent la peine de défendre le Rust que parce des gens (que l'ont pourrait tout autant qualifier de "fanatiques du C++" crachent dessus, généralement sans trop savoir de quoi il parlent. Je ne parle normalement pas de Rust dans les news qui ne parlent que de C++ si ce n'est pour rectifier quelqu'un qui dirait des erreur sur Rust.

Citation Envoyé par d_d_v Voir le message
A chaque sortie ou mise en avant d'un "nouveau" langage, on a droit toujours aux mêmes promesses. J'ai vu la même chose avec DotNet, Java (qui a aussi son mode unsafe si je me souviens bien), pour d'autres promesses mais aussi celle de la gestion mémoire.
Le unsafe en DotNet et Java n'est pas forcément comparable car ces langage n'ont pas la prétention d'être des langages systèmes. Je n'ai jamais eu besoin de me pencher sur le unsafe en C#, mais au moins, en ce qui concerne en Java, la notion de unsafe ne fait pas officiellement partie du langage. La plupart des JRE embarquent bien une classe Unsafe, mais elle ne fait pas partie de la bibliothèque standard et elle n'est pas officiellement supportée. En général quand on veut faire proprement en Java ce que l'on ferait avec du unsafe en Rust, on passe par des bibliothèque natives en C/C++/ou maintenant Rust.

Citation Envoyé par d_d_v Voir le message
La première sécurité, c'est d'embaucher des gens compétents, c'est pareil dans tous les domaines. Vous n'avez pas besoin de fournir un couteau avec une lame en plastique à un pâtissier de peur qu'il se blesse
Ces comparaisons sont simplistes notamment car elles impliquent que les problèmes de sécurité ont un impact immédiatement visible chez le producteur. Mais ce qui fait la particularité des failles de sécurité, c'est qu'elle ne sont pas forcément évidents à éviter et à identifier et elles auront un impact bien plus tard sur l'utilisateur du logiciel.
Pour reprendre la cas du pâtissier : il a bien fait son boulot s'il livre un bon gâteau. Il n'a pas a craindre que parce qu'il n'a pas tenu le couteau parfaitement à la verticale quand il a découpé les fraises, le gâteau devienne toxique quand on le mange la tête en bas un Mardi de pleine lune.

S'il suffisait d'avoir à disposition des développeurs chevronnés pour éviter les problèmes on aurait pas tant de failles, y compris dans les logiciels les plus surveillés au monde comme les navigateurs, OS, base de données ...

Citation Envoyé par remi_inconnu Voir le message
Il y a plusieurs décennies, j'ai souvenir d'un langage merveilleux, censé résoudre tous les soucis de sécurité... Java, on connait l'histoire depuis.
Java ne résout clairement pas tous les problèmes possible (Rust non plus d'ailleurs), mais c’était clairement une amélioration comparé au C et C++ au niveau de la sécurité, même si (contrairement au Rust) il implique des concessions sur l'accès au bas niveau et la maitrise des performances.

Citation Envoyé par remi_inconnu Voir le message
Ne jamais oublier que la première cause de défaillance de sécurité, se situe toujours entre la chaise et le clavier, croire qu'avec un langage, on va tout faire disparaître comme par magie, me fait beaucoup rire, surtout quand c'est des personnes gouvernantes qui disent cela en interview, ces mêmes personnes qui n'ont jamais écrit aucune ligne de code de leur vie.
On peut même aller au delà : le programmeur est la seule et unique cause des problèmes de sécurité. Le souci, c'est que quand on a dit ça, on a rien dit parce que malgré l'IA générative(qui est elle aussi faillible), on ne sait toujours pas faire de programmes un minimum complexe sans programmeurs.
Donc si on veut améliorer la sécurité, il faut améliorer le programmeur, et comme malgré toutes les formations et l'expérience accumulée, ça restera toujours un humain faillible, un compilateur qui permettent d’éviter les pratiques de codage problématiques, c'est un gros avantage. Et comme Rust ne résout pas directement les problèmes (comme Java ou C#) ou les ignore (comme parfois en C et C++), mais les explique, c'est également un très bon moyen de formation.
6  1 
Avatar de Uther
Expert éminent sénior https://www.developpez.com
Le 27/11/2024 à 14:39
Citation Envoyé par OuftiBoy Voir le message
Mais comme tout langage, il se doit de posséder une librairie standard. Et comme beaucoup de langages, il s'appuie sur des librairies écritent en 'C'.
Normalement, petit à petit, je pense que l'équipe de Rust tentera de s'affranchir de ces librairies, et c'est un travail énorme qui prendra encore quelques temps.
La bibliothèque standard n'utilise aucune librairie écrite en C en mode core (sans accès à l'OS) et seulement la libc en mode std(avec accès à l'OS).
L'utilisation de la libc n'est pas faite pour économiser du travail : c'est juste parce que la plupart des OS n'ont pas de façon directe et stable de s'interfacer avec eux. La lib C est juste utilisée comme interface stable avec l'OS.

Citation Envoyé par OuftiBoy Voir le message
Mais, la question qui pour moi est la plus importante, c'est de savoir si l'utilisation de ces 20% de bloc "unsafe" sont utilisés pour fournir "rapidement" une librairie standard relativement complète, OU s'il est impossible de se passer de ces blocs "unsafe" pour avoir les fonctionnalités contenues dans ces 20%.
En Rust on utilise clairement pas des bloc unsafe par plaisir, s'ils sont utilisés dans la bibliothèque standard, c'est certainement qu'ils sont nécessaire, soit pour accéder a des fonctionnalités bas niveau que les règles de Rust ne peuvent garantir, soit pour des raisons de performance. Et en soi ça n'a rien de problématique pour l'utilisateur de la bibliothèque vu que ce code unsafe est encapsulé dans des abstraction qui elles sont safe.
Le but du projet est de vérifier que ces blocs de code, bien que marqués unsafe, sont corrects et que l'encapsulation est bien réalisée

Citation Envoyé par Freem Voir le message
Ce qui m'amuse toujours énormément avec le bruit autour de Rust, c'est qu'on dirait que tous les bugs du monde sont des bugs de corruption mémoire... mais c'est loin d'être le cas.
Par acquis de conscience je viens de regarder les dernières vulnérabilités reportées sur glibc (pour rester dans le domaine de la lib standard) : quasiment toutes étaient dues à des problèmes de mémoire. Donc, même si Rust ne garantira jamais l'absence totale de bug, c'est clairement un moyen très efficace pour en diminuer la quantité, surtout les plus dangereux pour la sécurité.

Citation Envoyé par Freem Voir le message
Si la bibliothèque standard de rust évolue encore tant, c'est que le langage est loin d'être mûr, et par conséquent, plein de bugs, et donc, pas safe. Au moins, pour le C et le C++, on dispose de décennies d'expérience
Si la bibliothèque standard évolue c'est que le langage évolue, ce qui est aussi le cas du C++. Le Rust aura bientôt 10 ans, et commence a avoir une utilisation assez conséquente pour échapper au procès en immaturité. Les retour sur l'utilisation du Rust montre clairement une amélioration de la sécurité et pas une dégradation.

Citation Envoyé par Freem Voir le message
les fonctions dangereuses sont bien identifiées, de nombreux outils (gratuits, donc pas de raison de pas les utiliser, mais malheureusement les systèmes de CI/CD déployés sur `git[a-z]{3}` les intègrent rarement... d'ailleurs ils vérifient jamais que chaque commit passe les tests, juste le dernier de la PR... c'est hors sujet.) aident a en éviter l'usage.Ces outils existent uniquement grâce à l'expérience accumulée par les utilisateurs de ces langages.Ces fonctions ne peuvent pas être supprimées (du standard), parce que l'historique, c'est important, quand on travaille sur un projet sérieux et pas du code jetable.
Sauf que l'efficacité des outils de vérification du C sont limitées, justement entre autre parce que le code dangereux nécessaire n'est pas correctement isolé du code sûr. Une grosse partie de la sécurité de Rust ressemble a ce que fait un analyseur statique de code C, mais le langage Rust a été conçu pour rendre cette vérification bien plus efficace.

Le C a certes développé des outils suite aux retours d'expérience, mais il ne faut pas croire que Rust serait reparti de zéro en ignorant l'état de l'art sur les autres langages. D'ailleurs, le nom de la toute première conférence qui a présenté Rust était clair là dessus : "Technology from the past come to save the future from itself".
Rust a complètement pris en compte l'expérience accumulée par d'autre langages (notamment le C et le C++). Et justement, le fait qu'il n'ait pas à gérer plusieurs dizaines d'années l'historique à permis de corriger à la racine beaucoup de problèmes qu'on peut juste essayer de mitiger en C et C++.
4  0 
Avatar de fdecode
Membre habitué https://www.developpez.com
Le 27/11/2024 à 13:45
Citation Envoyé par Freem Voir le message
Personnellement, je ne comprendrais pas l'adoption d'un outil si jeune et qui ne cesse de muter pour réaliser un projet qui serait censé être utilisé pour plus de 10 ans. Non, il ne sera plus maintenu super activement quelques années plus tard, s'il juste marche et n'est pas un projet de type "frontal", faut pas rêver.
Rust était certes un projet de recherche de Mozilla, mais a depuis quelques années des soutiens de poids:
https://foundation.rust-lang.org/members/
Je parie plutôt sur une installation progressive et ferme du langage.

Citation Envoyé par Freem Voir le message
Je suis plutôt un détracteur de rust en général, parce que le battage marketing a souvent un effet contraire sur moi
De quel battage marketing parle-t-on? Le langage est gratuit, et tout ce qui tourne autour. Le langage n'appartient pas à une grande marque. Et pour le coup, il n'a certainement pas été créé par une équipe de marketeurs.
3  1 
Avatar de remi_inconnu
Membre du Club https://www.developpez.com
Le 04/12/2024 à 21:31
Il y a plusieurs décennies, j'ai souvenir d'un langage merveilleux, censé résoudre tous les soucis de sécurité... Java, on connait l'histoire depuis.
Rust ne m'a pas l'air fini et n'est pas évident à prendre en main, et quand on a baigné dans un univers orienté objet, il ne donne pas vraiment envie de devoir s'en passer.
A notre époque on est noyé par des nouveaux langages, tous plus merveilleux que les précédents, et souvent bien éphémère, je ne dis pas que pour Rust sera pareil, mais avant de miser tout sur ce langage, il faut bien réfléchir aux conséquences, et peut être il ne sera qu'une mode passagère, comme beaucoup d'autre avant lui et après lui.
Ne jamais oublier que la première cause de défaillance de sécurité, se situe toujours entre la chaise et le clavier, croire qu'avec un langage, on va tout faire disparaître comme par magie, me fait beaucoup rire, surtout quand c'est des personnes gouvernantes qui disent cela en interview, ces mêmes personnes qui n'ont jamais écrit aucune ligne de code de leur vie.
5  3 
Avatar de prisme60
Membre régulier https://www.developpez.com
Le 26/11/2024 à 14:57
Il n'y a pas photo. La sécurité du code Rust dépasse largement ce que l'on trouve en C et C++. Comme toute chose, il y a des marges d'amélioration, Rust reste un langage jeune, et il ne possède pas encore d'historique lourd à porter.

Le C est trop laxiste sur les appels de fonctions, gestion totalement manuelle des allocations dynamique sur le tas (malloc/free).

Le C++ a comblé quelques manques avec les différentes évolutions (regex, jthread, lambda, async/future, ranges/views), et au passage à rajouter une complexité supplémentaire (opérateur move, démultiplication des constructeurs, constraints/concepts, modules).
2  1 
Avatar de fdecode
Membre habitué https://www.developpez.com
Le 04/12/2024 à 14:45
Citation Envoyé par d_d_v Voir le message
Je vois que tous les fanatiques pro-rust sont de sortie ici à ce que je vois.
Je pensais que cette discussion concernait Rust. Serions-nous par mégarde intervenus fanatiquement dans une discussion concernant C++26?

Citation Envoyé par d_d_v Voir le message
Avec c++26, les contrats logiciels vont (enfin) arriver, c'est ça la vraie sécurité: pouvoir assurer les préconditions/postconditions de chaque fonction, c'est à dire, une partie de son contrat.
Je suis preneur de références à ce sujet. Quelles fonctionnalités de c++26, plus précisément?

À vrai dire, mais on ne parle sans doute pas de la même chose, j'utilise beaucoup les conditionnements de type en Rust (s'assurer qu'un type implémente effectivement un certain nombre de traits et donc de fonctionnalités) pour contrôler l'utilisation de mes fonctions ou de mes librairies.
1  0 
Avatar de fdecode
Membre habitué https://www.developpez.com
Le 05/12/2024 à 11:26
Citation Envoyé par Uther Voir le message
La plupart des gens que vous appelez fanatiques pro-Rust ne prennent la peine de défendre le Rust que parce des gens que l'ont pourrait tout autant qualifier de "fanatiques du C++" crachent dessus, généralement sans trop savoir de quoi il parlent.
[...]
Java ne résout clairement pas tous les problèmes possible (Rust non plus d'ailleurs), mais c’était clairement une amélioration comparé au C et C++ au niveau de la sécurité, même si (contrairement au Rust) il implique des concessions sur l'accès au bas niveau et la maitrise des performances.
D'autant plus qu'une bonne part d'entre nous, j'en ai l'impression, a un parcours dans les langages de programmation et connaissent les langages plus anciens. Ce n'est pas un comportement de fanatique que de s'intéresser à ce qui est nouveau...
Et oui, je me souviens du progrès que java représentait par rapport à C++, dès lors que le JIT a permis une monté en performance raisonnable. Et ce n'était pas qu'une question de sécurité, mais aussi une certaine amélioration de la portabilité, des génériques que j'avais trouvées plus maîtrisables que les template du C++ d'alors. Par la suite ma préférence est allée à C# et Scala, puis à Rust. Ces langages ont apporté chacun leurs améliorations.
Citation Envoyé par d_d_v

A chaque sortie ou mise en avant d'un "nouveau" langage, on a droit toujours aux mêmes promesses.
Citation Envoyé par remi_inconnu

Il y a plusieurs décennies, j'ai souvenir d'un langage merveilleux, censé résoudre tous les soucis de sécurité.
Il n'y a pas de langage terminal qu'il suffira de maîtriser pépère jusqu'à la retraite. Ces nouveaux langages apportent des progrès mais ce ne seront pas les derniers. Quant au C++, la maîtrise des nouveaux paradigmes apportés par les nouveaux standards nécessite aussi une actualisation de ses connaissances.
Explorer les nouveautés ou pas, c'est au choix de chacun.
1  0 
Avatar de denisys
Membre chevronné https://www.developpez.com
Le 25/11/2024 à 21:47
En d’autres termes, la faille ultime se trouverait entre la chaise et le clavier et c’est le programmeur.

Sans compter le porte monnaie du Manageur.
Hélas, hélas, hélas !!!!!
1  1 
Avatar de OuftiBoy
Membre éprouvé https://www.developpez.com
Le 26/11/2024 à 20:32


Citation Envoyé par Uther Voir le message
Ça ne ravive rien du tout. Le Rust n'a jamais prétendu empêcher tous les problèmes dans toutes les situations. Tous les gens un minimum renseignés savent que la bibliothèque standard contient des blocks unsafe (code non garanti par le compilateur) et c'est parfaitement attendu : elle doit fournir des abstraction sures aux appels systèmes fondamentalement unsafe. Ça reste toujours mieux que les lib standards de C et C++ qui n'ont pas de notion des sécurité intégrées au langage et qui laissent volontairement la possibilité d'utiliser certaines de leur abstractions de manière non sécurisée sans avertissement.
Je m'intéresse à Rust depuis un petit moment, sans l'avoir encore "adopté" cependant. Effectivement, Rust permet l'écriture d'un code plus "safe", via divers mécanismes (mais ce n'est pas le sujet). Mais comme tout langage, il se doit de posséder une librairie standard. Et comme beaucoup de langages, il s'appuie sur des librairies écritent en 'C'.

Normalement, petit à petit, je pense que l'équipe de Rust tentera de s'affranchir de ces librairies, et c'est un travail énorme qui prendra encore quelques temps. Mais cela ne retire en rien les mécanismes "safe" de Rust.

Citation Envoyé par Uther Voir le message
Que l'on essaye de vérifier formellement le code unsafe de Rust, reste quand même un plus pour pour améliorer encore la confiance que l'on peut lui accorder. Par contre, ce qui m'intrigue dans la démarche c'est qu'un code vérifié ne le reste que tant qu'il n'est pas modifié, je serais curieux de voir comment ils prévoient de gérer ça vu que la bibliothèque standard évolue en continu.
Oui, l'équipe "Rust" n'a pas la main sur tout. Peut-être faudrait-il arrêter l'évolution de la librairie standard, et faire un audit pour savoir ce qui est "safe" et ce qui ne l'est pas. D'après l'équipe "Rust" elle-même, 20 % du code de la librairie standard utilise des parties "unsafe". Ils devraient communiquer et donner la liste de ce qui est "safe" ou pas. (peut-être l'ont-ils fait, mais je n'en ai pas connaissance).

Mais, la question qui pour moi est la plus importante, c'est de savoir si l'utilisation de ces 20% de bloc "unsafe" sont utilisés pour fournir "rapidement" une librairie standard relativement complète, OU s'il est impossible de se passer de ces blocs "unsafe" pour avoir les fonctionnalités contenues dans ces 20%.

S'il s'avère que Rust ne peut pas transformer/fournir/écrire ces 20% "unsafe", ça serait dommage, car Rust a des atouts et il ne faudrait pas jeter le bébé avec l'eau du bain.

BàV et Peace & Love.
0  0