• [^] # Re: Petite question à ceux qui "baignent" encore dans le C

    Posté par (site web personnel) . En réponse au journal Vulnérabilités multiples dans sudo-rs. Évalué à 1.

    Mais l'écosystème de C et C++ ce sont aussi des milliers de projets différents avec encore plus de développeurs derrière qu'on ne connaît pas.

    Oui, mais concrètement, tu prends SDL, glib, glibc, openssl.

    T'a le gros des dépendances utilisé, par la plupart des projets C.

    Tu peux rajouter des lib métier comme FFMpeg, json-c ou 2/3 autres.
    Mais tu dépasses rarement la 10éne de libs.

    En C t'a souvent des libs à tout faire, et rien que SDL, t'a des htable, des threads, une gestion du filesystem.
    glibc, ta queue.h de BSD, hsearch_r pour les htable et regex.h.

    Ça fait, que tu te retrouves avec des projets comme FAudio qui ne se base que sur SDL, et même pas la libc (même si indirectement si).

    En Rust pour avoir l'intégralité des fonctionnalités de SDL, tu vas avec 2/3 libs pour chaque élèvement.

    Si tu considères que chaque libs maintenues pas une personne différente est un vecteur d'attaque pour des supply-chaines attaques, Rust est juste plus vulnérable.

    Bref, des attaques par supply chain tu peux en avoir partout dans ces écosystèmes techniquement, le C n'apporte aucune garantie de ce côté.

    Bof, c'est comme dire que Rust n'apporte pas de garantie sur la gestion de mémoire, car tu peu faire que du code unsafe.
    Cargo pousse à utiliser beaucoup de lib, make/cmake pousse à rester conservateur sur le nombre de lib utilisé, quitte à recoder des choses que tu pourrais trouver en libs.
    Ça rajoute des chances de rajouter ces bugs, mais enlevés des chances de tomber sur une lib corrompue.

    Et les lib dynamique sont une garantie que si une lib casse, on n'a pas besoins de rebuild ton binaire pour fix ta faille de sécu.