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 prise en charge de Rust pour le développement du noyau Linux commence à prendre forme
Le langage fait un premier pas vers la branche "Linux-Next"

Le , par Bill Fassinou

234PARTAGES

13  0 
Rust fait enfin son entrée dans le développement du noyau Linux, après plusieurs années d'analyses et de dialogue sur les avantages. Discuté à nouveau lors de la conférence Linux Plumbers l'année dernière, le tout premier support de Rust est apparu la semaine passée dans la branche Linux-Next. Même si les auteurs de ce travail jugent qu'il ne s'agit pas d'un ajout significatif, cela jette les bases de la construction des fonctionnalités du noyau Rust pour l'avenir. Ce support est conditionné par la présence d'un compilateur Rust (rustc) sur le système. De ce fait, les architectures actuellement visées sont ARM64 et x86_64.

Les développeurs de Linux discutent depuis un moment de la perspective de permettre l'utilisation du langage développé par Mozilla Research pour écrire de nouveaux pilotes de périphériques pour le noyau. L'année dernière, les développeurs du noyau Linux semblent s'être mis d'accord sur le sujet. Pour mémoire, Rust est plébiscité, car il offre plusieurs avantages, notamment en ce qui concerne la mémoire. Les partisans de Rust ont cité des travaux qui montrent qu'environ deux tiers des vulnérabilités du noyau auxquelles ont été attribués des CVE sur Android et Ubuntu sont tous liés à des problèmes de sécurité de la mémoire.



Par exemple, 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 la mémoire tampon. C’est un défi à relever pour le futur en matière de programmation système. En outre, les géants de l'industrie, d'Apple à Amazon en passant par Facebook et Microsoft, se sont lancés ces dernières années dans le recrutement de développeurs Rust. D'ailleurs, selon la firme de Redmond, Rust est la meilleure chance de l’industrie informatique pour la mise sur pied d’applications système sécurisées.

Selon les partisans de Rust, il peut permettre d'éviter complètement cette classe d'erreurs à l'avenir grâce à des API plus sûres activées par son type de système et son vérificateur d'emprunt. D'autres avantages ont aussi été cités par ces derniers pour justifier la proposition de continuer le développement du noyau avec Rust. Comme premier pas vers ce rêve, le support initial de Rust a été annoncé jeudi sur rust-for-linux dans Linux-Next. « Cela ne signifie pas que nous allons le faire dans la version principale, bien sûr, mais c'est une bonne étape pour rendre les choses aussi faciles que possible », a prévenu Miguel Ojeda, qui est impliqué dans cet effort.

« C'est, malgré tout, une étape importante vers la capacité d'écrire les pilotes dans un langage plus sûr », a-t-il ajouté. Notons que la branche Linux-Next est la zone d'attente pour les correctifs destinés à la prochaine fenêtre de fusion du noyau. Ainsi, si vous faites du développement de noyau de pointe, vous voudrez peut-être travailler à partir de cet arbre plutôt que de la branche principale de Linus Torvalds. Selon les explications d'Ojeda, ce support nécessite la présence d'un compilateur Rust (rustc) sur le système. Ainsi, les architectures actuellement visées sont ARM64 et x86_64.

Actuellement, le support du noyau a besoin d'une chaîne d'outils Rust nightly récente pour la construction. En outre, bien qu'aucun pilote de noyau Rust ne soit encore prêt, la fusion initiale vers Linux-Next inclut un exemple de module de noyau écrit en Rust. Par ailleurs, alors que Rust est maintenant dans Linux-Next, il n'est pas encore clair si/quand il sera intégré à la branche principale. En général, le travail dans Linux-Next est peaufiné jusqu'au prochain cycle, mais il peut parfois rester dans Linux-Next plus longtemps s'il s'agit d'un travail en cours. Le code doit encore passer par toutes les formalités de demande d'extraction de la fenêtre de fusion.

Quoi qu'il en soit, l'effort progresse et il pourrait être intéressant de voir si cette infrastructure Rust initiale pour le noyau Linux parvient à être intégrée à la version 5.13 ou à une autre version du noyau cette année. Enfin, comme souligné plus haut, une partie de l'attrait pour Rust vient des caractéristiques de sécurité de la mémoire de Rust, en particulier par rapport au C, dans lequel le noyau Linux est actuellement codé. Une partie du problème, cependant, est que Rust est compilé sur la base de LLVM, par opposition à GCC, et supporte donc moins d'architectures.

C'est un problème auquel la communauté a assisté récemment lorsque la bibliothèque de chiffrement Python a remplacé une partie de l'ancien code C par Rust. En effet, cela a conduit à une situation où certaines architectures ne seront pas prises en charge. Actuellement, la proposition d'inclure Rust dans le noyau Linux limite ce problème en disant que Rust serait utilisé, au moins initialement, pour écrire des pilotes qui « ne seraient de toute façon jamais utilisés sur les architectures les plus obscures ».

Certaines entreprises n'ont toutefois pas attendu que l'équipe de développement du noyau Linux donne son aval pour la prise en charge de Rust, avant de commencer leurs propres efforts. Si vous cherchez un exemple de l'utilisation et de l'utilité de Rust dans le développement du noyau Linux, vous pouvez consulter les travaux d'Amazon Web Services avec Bottlerocket, une distribution Linux pour les conteneurs qui est largement écrite en Rust.

Sources : rust-for-linux, AWS Bottlerocket

Et vous ?

Quel est votre avis sur le sujet ?

Voir aussi

Les développeurs semblent d'accord à l'unanimité pour la prise en charge de Rust pour le développement du noyau Linux lors de la conférence Linux Plumbers

L'année 2020 est-elle celle de Rust au sein du noyau Linux ? C'est ce que suggère une sortie de Linus Torvalds, qui donne des instructions sur l'introduction de son support au système de build

« Il est vraiment difficile de trouver des mainteneurs » : Linus Torvalds parle de la prochaine génération de responsables du développement de Linux à l'occasion de la conférence Open Source Summit

Rust : les développeurs révèlent pourquoi ils ne sont pas plus nombreux à utiliser le langage de programmation, en pointant du doigt un manque d'adoption en entreprise, d'après un sondage

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

Avatar de Uther
Expert éminent sénior https://www.developpez.com
Le 19/04/2021 à 7:12
Citation Envoyé par Bruno Voir le message
La déclaration de Linus Torvalds ne serait pas un exagéré au sujet du langage C++ ?
Elle manque de nuance, mais en même temps c'est une réponse à une déclaration qui en manquait tout autant, et Linus Torvalds n'est pas connu pour être un fin diplomate.
Le C++ a son intérêt, mais le but premier de l'intégration de Rust étant de fournir une meilleure sécurité, le C++ est clairement en dessous sur le sujet.
19  0 
Avatar de Uther
Expert éminent sénior https://www.developpez.com
Le 22/03/2021 à 15:57
Personne n'a dit que Rust était de la poudre magique qui résout tous les problèmes possibles et imaginables. Rust est juste un langage moderne qui permet le genre de chose permises par le C++ avec de bien meilleures garanties de sécurité, ni plus ni moins.
13  0 
Avatar de KsassPeuk
Membre confirmé https://www.developpez.com
Le 01/11/2022 à 13:43
Citation Envoyé par bmoraut Voir le message
J'ai bien conscience que c'est une réponse de normand.
Non, c'est une réponse de menteur.

La vérification de programmes et la quête du programme sans bug, c'est un sujet dans le monde de la recherche et du transfert technologique depuis des décennies. Chaque année des thèses et des papiers sur le sujet, on en publie des camions. C'est des milliers de personnes à travers le monde qui bossent dessus avec des succès et des échecs, et le domaine est assez fier des progrès qui ont été faits ces dernières années sur le sujet. Bizarrement, aucun de ces succès n'avance du "on a de la garantie de correction pour plusieurs millions de lignes de code C++". Alors quand type débarque du fond d'un forum en balançant du "non mais moi je suis trop fort, d'ailleurs j'ai réglé le problème sur lequel des milliers de personnes se sont cassés les dents pendant 40 ans, par contre je ne vous fournirai aucune preuve". Oui, on est en droit de dire que cette personne ment, purement et simplement.

A titre personnel, ça me gonfle d'autant plus que je bosse précisément sur ce type de sujet depuis 10 ans. Ce genre de discours, par son absence totale de sérieux, est prompt à créer une réaction chez les développeurs du genre "Haha ! C'est n'importe quoi, on ne pourra jamais ne serait-ce qu'approcher la possibilité d'un logiciel sans bug". Le genre de trucs qui peuvent flinguer le travail de sensibilisation qu'on fait auprès d'eux. et qui efface toutes les subtilités réelles du problème (notamment les liens entre la spécification du logiciel, du langage utilisé, et de l'implémentation du système, et ce qu'on inclut ou non dans la confiance d'un logiciel). Ces développeurs auront d'autant moins de facilité à prendre au sérieux les gens qui bossent réellement sur le sujet, autant pour produire de nouvelles solutions que pour amener ces connaissances dans le monde académique et industriel, et pousser ces solutions vers des usages de moins en moins critiques. Aujourd'hui l'ANSSI a durcis les critères nécessaires pour obtenir certaines certifications (par exemple CC EAL6/7), c'est en grande partie grâce à l'effort important qui a été fournis pendant la dernière décennie pour faciliter la mise en place d'outil de vérification formelle et qui fait qu'aujourd'hui il devient possible de sortir des garanties formelles de correction à code-level pour des softs de l'ordre de quelques dizaines de milliers de lignes. Sans parler du fait que sans aller jusqu'à de tels niveau de fiabilité, on a aujourd'hui un large panel d'outils capable de détecter des problèmes ou garantir leur absence et ce en fonction du type de problème ou de système visé.
10  0 
Avatar de
https://www.developpez.com
Le 22/03/2021 à 17:21
Citation Envoyé par MetalFlower Voir le message
C'est un faux problème, cette histoire de Rust dans le kernel. En quoi ça va aider pour avoir un meilleur Linux ? Rust ou pas, on aura toujours des drivers graphiques en carton-pâte qui ne supporte pas la v-sync en 2021, 3/4 des imprimantes qui ne seront pas compatible Linux et le reste. Après, c'est chouette de pouvoir faire un driver de Voodoo FX en Rust mais ça va servir à qui ?
Pas mal... mais on t'a reconnu, Fleur en plastique.
9  0 
Avatar de walfrat
Membre émérite https://www.developpez.com
Le 20/04/2021 à 10:02
Disons que si on lit a travers les insultes, moi je comprend ça :

  • Ca critique concerne le C++ dans le cas de problème pointu de très bas niveau.
  • Cette critique affirme que ce langage ne résout pas des problèmes qui existent déjà en C DANS le cadre de ce besoin mais en rajoutent même.
  • L'usage des librairies STL/Boost dans le cadre de ce que fait Linus n'est pas nécessairement approprié quand tu vises un très haut niveau de performance sur des problématiques de bas niveau. Hors il y a beaucoup de développeurs qui se contentent d'utiliser les fonctions des librairies sans vraiment en comprendre les limites, ce qui est gênant quand tu veux faire quelque chose de vraiment pointu. En soi ce n'est pas la faute du C++ mais pour Linus c'était une façon de filtrer plus facilement des développeurs.


C'est ce qu'il affirme, les aficionados savent mieux que moi ce qu'il en est.
9  1 
Avatar de Pogzy
Membre à l'essai https://www.developpez.com
Le 19/04/2021 à 10:39
Faut reconnaître que C++ est vraiment casse gueule pour des systèmes critiques.
7  0 
Avatar de Uther
Expert éminent sénior https://www.developpez.com
Le 01/11/2022 à 14:21
Citation Envoyé par bmoraut Voir le message
D'affirmer que j'ai un manques de connaissances dans ce domaine relève que vous êtes bien prétentieux pour vous permettre de juger les autres.
Écoutez je me base sur le fait que je n'ai entendu aucun expert en sécurité préconiser ça comme première action fondamentale pour sécuriser un code C++. Alors soit vous êtes quelqu'un de très novateur et dans ce cas je m'excuse et j'aimerais beaucoup que vous détaillez comment vous faites, soit il vous manque effectivement des connaissances sur le sujet. Sachez que ça n'a rien d'une insulte : tout le monde à des sujets qu'il connait mieux que d'autres, moi le premier.

Citation Envoyé par bmoraut Voir le message
Mais pas de chance, j'ai définie un thèse qui pour écrire un application entièrement sécurisée,
avec des principes révolutionnaires pour le développement de logiciels qui utilise un certains nombre de chose,
comme les modes de débogages, qui permettent d'informer sur l'auto-vérification des logiciels,
(afin de ne pas le ralentir en mode final).
Si c'est vraiment le cas, je serais très curieux de lire votre thèse et d'avoir plus de renseignements sur le sujet. A ma connaissance, les systèmes de vérification s'appuient soit sur des preuves formelles, soit de l'analyse statique du code, soit sur de la détection des comportements dangereux à l’exécution, mais qui ne requièrent pas pour autant le fonctionnement en mode débogage.
Si votre système est si efficace grâce aux informations de débogage, je serais très curieux d'en apprendre plus.

Citation Envoyé par bmoraut Voir le message
Dans mes plus 10 millions de lignes de codes validées, j'ai actuellement Zéro bugs.
Pour le coup, ça m'inquiète plus que ça me rassure. Un logiciel avec zéro failles de sécurité signalées, c'est plus souvent signe d'une mauvaise surveillance des problèmes de sécurité ou d'une rétention des informations de vulnérabilité que d'une grande fiabilité.

Citation Envoyé par bmoraut Voir le message
Alors désolé, moi aussi je relève dans tes propos que tu es un de ceux qui jouent aux experts, mais qui n'en sont pas.
Je ne prétend pas être un expert, juste connaitre assez le problème de la sécurité en C++ pour savoir que les assertions et surtout le débogage ne sont clairement pas les éléments considérés comme prioritaires pour sa sécurisation.

Citation Envoyé par bmoraut Voir le message
Alors reste modeste, et ne préjuge pas des gens, car cela nuit au forum.
Je préjuge pas des gens, par contre je juge vos préconisations en matière de sécurisation du code qui sont ... peu orthodoxes pour rester poli. Si vous pouvez m'expliquer réellement comment vous pouvez éviter les failles de sécurité grâce mode débogage, je serais on ne peu plus ravi de revoir mon jugement, mais comme je n'ai jamais entendu parler de rien de tel pour le moment dans le domaine de la sécurité du code, vous me permettrez de rester on ne peu plus sceptique en attendant.

Citation Envoyé par bmoraut Voir le message
Et bien moi aussi, je n'ai rien à prouver, et par souci de protection de mon travail,
je n'ai donc rien publié.
Il me semble que sauf cas particulier, un travail de thèse est censé être public non ?

Citation Envoyé par bmoraut Voir le message
J'ai bien conscience que c'est une réponse de normand.
En effet c'est une réponse de normand, mais c'est quand même une réponse qui contredit le propos de base. Vous affirmiez que le C++ est sécurisé, mais comme c'est grâce a une méthode qui ne semble pas vraiment connue des gens du métier, et dont vous ne souhaitez pas nous parler. Même à considérer que vous êtes de bonne foi, il n'en reste pas moins qu'elle n'est à l'heure actuelle pas une solution utilisable par le commun des mortels pour sécuriser ses application C++.

Le peu que vous dites sur votre méthode est basé sur de vielles techniques, très superficielles, qui ont montré leurs limites et dont on est revenu depuis longtemps. C'est très loin de ce qui se fait actuellement dans la sécurité. Si le but était de convaincre de la qualité de vos connaissances en matière de sécurité du code C++, c'est vraiment raté.
7  0 
Avatar de Uther
Expert éminent sénior https://www.developpez.com
Le 09/11/2022 à 11:55
Citation Envoyé par bmoraut Voir le message
C'est ce que je dis, vous pré-jugé les autres pour toujours avoir le dernier mot, avec de superbes sophismes:

"très superficielles" --> Comment peut tu le savoir, alors que je n'ai rien révélé

"sur de vielles techniques" --> Tous ce qui ancien n'est pas mauvais !

J'ai bien précisé que mes commentaires ne s'appliquaient qu'au peu que vous avez dit, à savoir : les assertions, le débogage, puis la notation hongroise. Car ces méthodes ne visent pas particulièrement la sécurité de l'application mais plutôt à gérer les bugs en général.

D'ailleurs, je pense que le gros du malentendu vient du fait que l'on parle de faille de sécurité alors que vous parlez de bugs généralistes. Les assertions et le débogage sont en effet de très bons outils pour traiter les bugs classiques, mais les failles de sécurité sont des problèmes qui restent généralement cachés, ce qui fait qu'ils nécessitent plutôt des outils pour être détectés (sanitizers, fuzzer, ...) ou les éviter (preuve formelle, analyse statique, restriction du langage,...).

Citation Envoyé par bmoraut Voir le message
Voila pourquoi j'en ai marre sur les forums, des gens comme toi, qui préjugent des autres, et qui polluent les forums en voulant toujours avoir raison.
Je ne demande qu'a avoir tort. Si le débogage permettait d'améliorer la sécurité de mes programme je serais le premier heureux. C'est pour ça que je vous ai invité a partager votre thèse, tout aussi poliment que LittleWhite, car si votre approche est valide elle serait particulièrement novatrice. Mais tant que ça reste une méthode que vous seul savez utiliser, le débogage ne peut clairement pas être considéré comme un moyen d'assurer la sécurité d'un programme.

Citation Envoyé par bmoraut Voir le message
En as tu conscience que tu veux toujours avoir le dernier mot, en agressant ton interlocuteur, alors que si tu était vraiment intelligent comme LittleWhite,
tu aurais répondu comme lui, en étant plus communicatif.

Lui, si je dis des fadaises, il a été plus intelligent que toi, car sans m'agresser, je vais devoir prouver ce que je dis.
A aucun moment je n'ai voulu être agressif, si c'est l'impression que j'ai donné, je m'en excuse, mais je pense que cette critique peut aussi vous être retournée. Le seul moment ou j'estime être critiquable c'est sur mon message qui disait que vous ne "maitrisiez" pas C++. Il visait uniquement à faire écho à votre "Il est aussi sécurisé si on le connait bien" or votre explication de la sécurité posait problème. Je pense que j'aurais pu le formuler mieux ou même m'éviter cette figure de style.

Sachez que pour moi "ne pas maitriser" n'est pas une attaque. Je ne prétends pas moi même maitriser le C++. Je ne doute pas que, sur la globalité du langage, vous le connaissiez bien mieux que moi. Par contre, je maintiens que les préconisations que vous donniez en matière de sécurité n'étaient clairement pas adaptées.

Je ne vous ai à aucun moment, contrairement à d'autres, accusé de mentir, mais je ne peux pas non plus prendre ce que vous dites sur la détection de faille par débogage pour argent comptant. Le fait que vous refusiez de partager un travail de thèse dans un domaine ou la communication est la norme, n'aide pas à votre crédibilité.

Citation Envoyé par bmoraut Voir le message
Alors que toi, tu agresses constamment, en reprenant méticuleusement chaque point,
non pas en ouvrant la discussion, mais en la fermant avec tes pré-suppositions négatives.
C'est dommage que vous voyez ça comme une agression alors que je vois ça, au contraire, comme une façon d'avoir un débat sain. Si le but était de gagner un débat d'opinion je ferais au contraire une grande tirade majestueuse, pleine de procès d'intention, dont au final la véracité du contenu importerait peu.
En prenant les points précisément, on peut essayer de voir plus clairement sur lesquels on peut être d'accord et pour ceux sur lesquels on n'est pas d'accord, essayer de comprendre pourquoi.
7  0 
Avatar de smarties
Membre expert https://www.developpez.com
Le 22/03/2021 à 17:10
Citation Envoyé par MetalFlower Voir le message
..., on aura toujours des drivers graphiques en carton-pâte qui ne supporte pas la v-sync en 2021, 3/4 des imprimantes qui ne seront pas compatible Linux et le reste. Après, c'est chouette de pouvoir faire un driver de Voodoo FX en Rust mais ça va servir à qui ?
C'est pas la faute des développeurs du noyau forcément, c'est de la faut des constructeurs qui ne publient pas/ne maintienne pas leurs drivers ou ne fournissent pas une documentation pour le programmer. Le développeur du noyau n'a pas tous les matériels sous la main pour les réaliser lui même.
6  0 
Avatar de coder_changer_vie
Inactif https://www.developpez.com
Le 08/07/2021 à 19:02
"Google sponsorise Ojeda pour qu'il travaille à temps plein sur le projet pendant un an"

Suis-je le seul à penser que venant d'un grand groupe, ce type d'investissement semble démesurément ridicule aux regard des enjeux / bénéfices techniques ?

C'est pas comme si le noyau était largement utilisé par Google pour Android (à vérifier mais je dois pas être loin si c'est un fork).

j'ai pas suivi en détail, mais c'est le reflexe pavlovien que ça inspire en première lecture
6  0