Skip to content
  • Hjem
  • Seneste
  • Etiketter
  • Populære
  • Verden
  • Bruger
  • Grupper
Temaer
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Kollaps
FARVEL BIG TECH
  1. Forside
  2. Ikke-kategoriseret
  3. The coreutils Rust rewrite story is pretty funny.

The coreutils Rust rewrite story is pretty funny.

Planlagt Fastgjort Låst Flyttet Ikke-kategoriseret
198 Indlæg 103 Posters 146 Visninger
  • Ældste til nyeste
  • Nyeste til ældste
  • Most Votes
Svar
  • Svar som emne
Login for at svare
Denne tråd er blevet slettet. Kun brugere med emne behandlings privilegier kan se den.
  • lcamtuf@infosec.exchangeL lcamtuf@infosec.exchange

    The coreutils Rust rewrite story is pretty funny.

    Coreutils are tools like rm, mv, mkdir, etc. Unlike binutils, this isn't a fertile ground for memory safety bugs. But, the rewrite was completed, and in the spirit of progress, Canonical decided to switch.

    But do you know what coreutils are a fertile ground for? Race conditions around file creation, deletion, permission setting, and so on. The original code accounted for decades of hard-learned lessons in that space. The Rust rewrite did not:

    https://seclists.org/oss-sec/2026/q2/332

    PS. I'm not dunking on Rust. It's just that... starting over from scratch has its hidden costs.

    klausman@mas.toK This user is from outside of this forum
    klausman@mas.toK This user is from outside of this forum
    klausman@mas.to
    wrote sidst redigeret af
    #27

    @lcamtuf There's also that human habit of getting complacent about all bugs when _some_ types of bugs are either impossible or very very hard to make because of language structure and tooling.

    orb2069@mastodon.onlineO 1 Reply Last reply
    0
    • lcamtuf@infosec.exchangeL lcamtuf@infosec.exchange

      The coreutils Rust rewrite story is pretty funny.

      Coreutils are tools like rm, mv, mkdir, etc. Unlike binutils, this isn't a fertile ground for memory safety bugs. But, the rewrite was completed, and in the spirit of progress, Canonical decided to switch.

      But do you know what coreutils are a fertile ground for? Race conditions around file creation, deletion, permission setting, and so on. The original code accounted for decades of hard-learned lessons in that space. The Rust rewrite did not:

      https://seclists.org/oss-sec/2026/q2/332

      PS. I'm not dunking on Rust. It's just that... starting over from scratch has its hidden costs.

      groxx@hachyderm.ioG This user is from outside of this forum
      groxx@hachyderm.ioG This user is from outside of this forum
      groxx@hachyderm.io
      wrote sidst redigeret af
      #28

      @lcamtuf a related observation would probably be: why did important, security-critical edge cases get handled without enough documentation to prevent them from reoccurring?

      orb2069@mastodon.onlineO fivetonsflax@tilde.zoneF 2 Replies Last reply
      0
      • lcamtuf@infosec.exchangeL lcamtuf@infosec.exchange

        The coreutils Rust rewrite story is pretty funny.

        Coreutils are tools like rm, mv, mkdir, etc. Unlike binutils, this isn't a fertile ground for memory safety bugs. But, the rewrite was completed, and in the spirit of progress, Canonical decided to switch.

        But do you know what coreutils are a fertile ground for? Race conditions around file creation, deletion, permission setting, and so on. The original code accounted for decades of hard-learned lessons in that space. The Rust rewrite did not:

        https://seclists.org/oss-sec/2026/q2/332

        PS. I'm not dunking on Rust. It's just that... starting over from scratch has its hidden costs.

        arcaik@hachyderm.ioA This user is from outside of this forum
        arcaik@hachyderm.ioA This user is from outside of this forum
        arcaik@hachyderm.io
        wrote sidst redigeret af
        #29

        @lcamtuf Why do we keep calling uutils coreutils a rewrite?

        1 Reply Last reply
        0
        • rmq@toot.ioR rmq@toot.io

          @synlogic4242 Uutils started as someone’s personal project to learn rust, and “write a system utility” is frequently used as a basic exercise for learning. Uutils is doing exactly what it set out to do.

          It’s not the fault of uutils that Canonical is dumb.

          @lcamtuf

          synlogic4242@social.vivaldi.netS This user is from outside of this forum
          synlogic4242@social.vivaldi.netS This user is from outside of this forum
          synlogic4242@social.vivaldi.net
          wrote sidst redigeret af
          #30

          @rmq @lcamtuf I view it as both their fault. I'm pissed that after having to deal with Copy.Fail I now have to wipe other people's butts again for them. and I worry this will happen with more frequency as more vibe-coded software spreads around

          1 Reply Last reply
          0
          • lcamtuf@infosec.exchangeL lcamtuf@infosec.exchange

            The coreutils Rust rewrite story is pretty funny.

            Coreutils are tools like rm, mv, mkdir, etc. Unlike binutils, this isn't a fertile ground for memory safety bugs. But, the rewrite was completed, and in the spirit of progress, Canonical decided to switch.

            But do you know what coreutils are a fertile ground for? Race conditions around file creation, deletion, permission setting, and so on. The original code accounted for decades of hard-learned lessons in that space. The Rust rewrite did not:

            https://seclists.org/oss-sec/2026/q2/332

            PS. I'm not dunking on Rust. It's just that... starting over from scratch has its hidden costs.

            E This user is from outside of this forum
            E This user is from outside of this forum
            equity7804@hostux.social
            wrote sidst redigeret af
            #31

            @lcamtuf Hey, would you care to elaborate or point me to resources explaining why the coreutils aren't fertile ground for memory safety issues? It's the first time I heard of this

            not2b@sfba.socialN 1 Reply Last reply
            0
            • lcamtuf@infosec.exchangeL lcamtuf@infosec.exchange

              The coreutils Rust rewrite story is pretty funny.

              Coreutils are tools like rm, mv, mkdir, etc. Unlike binutils, this isn't a fertile ground for memory safety bugs. But, the rewrite was completed, and in the spirit of progress, Canonical decided to switch.

              But do you know what coreutils are a fertile ground for? Race conditions around file creation, deletion, permission setting, and so on. The original code accounted for decades of hard-learned lessons in that space. The Rust rewrite did not:

              https://seclists.org/oss-sec/2026/q2/332

              PS. I'm not dunking on Rust. It's just that... starting over from scratch has its hidden costs.

              sten@chaos.socialS This user is from outside of this forum
              sten@chaos.socialS This user is from outside of this forum
              sten@chaos.social
              wrote sidst redigeret af
              #32

              @lcamtuf Not only that, some of the utils were not command line-compatible with their non-Rust counterparts.

              Honestly, I don't understand why these utils were rewritten. They didn't need rewriting.

              m33@mastodon.socialM oblomov@sociale.networkO 2 Replies Last reply
              0
              • darkuncle@infosec.exchangeD darkuncle@infosec.exchange

                @ChuckMcManis @lcamtuf sometimes that's the only way to learn, but it's also often the most effective way to learn

                sten@chaos.socialS This user is from outside of this forum
                sten@chaos.socialS This user is from outside of this forum
                sten@chaos.social
                wrote sidst redigeret af
                #33

                @darkuncle @ChuckMcManis @lcamtuf Sure, but perhaps don't do your learning in production? 🙂

                darkuncle@infosec.exchangeD m33@mastodon.socialM raven667@hachyderm.ioR wolf480pl@mstdn.ioW lispi314@udongein.xyzL 5 Replies Last reply
                0
                • synlogic4242@social.vivaldi.netS synlogic4242@social.vivaldi.net

                  @hyc @lcamtuf ie. be like LEGO not Death Stars

                  wonka@chaos.socialW This user is from outside of this forum
                  wonka@chaos.socialW This user is from outside of this forum
                  wonka@chaos.social
                  wrote sidst redigeret af
                  #34

                  https://www.lego.com/en-us/product/death-star-75419 would like a word. 😇

                  @synlogic4242 @hyc @lcamtuf

                  synlogic4242@social.vivaldi.netS 1 Reply Last reply
                  0
                  • sten@chaos.socialS sten@chaos.social

                    @darkuncle @ChuckMcManis @lcamtuf Sure, but perhaps don't do your learning in production? 🙂

                    darkuncle@infosec.exchangeD This user is from outside of this forum
                    darkuncle@infosec.exchangeD This user is from outside of this forum
                    darkuncle@infosec.exchange
                    wrote sidst redigeret af
                    #35

                    @sten @ChuckMcManis @lcamtuf sometimes you have to get burned to learn not to touch the stove 😂

                    1 Reply Last reply
                    0
                    • lcamtuf@infosec.exchangeL lcamtuf@infosec.exchange

                      The coreutils Rust rewrite story is pretty funny.

                      Coreutils are tools like rm, mv, mkdir, etc. Unlike binutils, this isn't a fertile ground for memory safety bugs. But, the rewrite was completed, and in the spirit of progress, Canonical decided to switch.

                      But do you know what coreutils are a fertile ground for? Race conditions around file creation, deletion, permission setting, and so on. The original code accounted for decades of hard-learned lessons in that space. The Rust rewrite did not:

                      https://seclists.org/oss-sec/2026/q2/332

                      PS. I'm not dunking on Rust. It's just that... starting over from scratch has its hidden costs.

                      inguin@nerdculture.deI This user is from outside of this forum
                      inguin@nerdculture.deI This user is from outside of this forum
                      inguin@nerdculture.de
                      wrote sidst redigeret af
                      #36

                      @lcamtuf
                      Many of those seemingly trivial utilities are surprisingly complex: sort runs in multiple concurrent threads, "cp -a" must build a lookup table to detect hardlinks, and ps parses obscure files in /proc. There's plenty of ways to screw up that a type- and memory-safe language would catch.

                      That said, the list of CVEs in the post is really impressive. Ditching the good old GNU coreutils might have been a tad overhasty.

                      1 Reply Last reply
                      0
                      • wonka@chaos.socialW wonka@chaos.social

                        https://www.lego.com/en-us/product/death-star-75419 would like a word. 😇

                        @synlogic4242 @hyc @lcamtuf

                        synlogic4242@social.vivaldi.netS This user is from outside of this forum
                        synlogic4242@social.vivaldi.netS This user is from outside of this forum
                        synlogic4242@social.vivaldi.net
                        wrote sidst redigeret af
                        #37

                        @wonka @hyc @lcamtuf TBF if I knew I might have to keep rebuilding my Death Star from scratch every time the Rebellion blew it up for plot reasons I'd much prefer to do it in LEGO

                        1 Reply Last reply
                        0
                        • prozacchiwawa@functional.cafeP prozacchiwawa@functional.cafe

                          @lcamtuf i do find that the crates dedicated to atomic file handling and temp files, in the interest of providing a uniform platform interface aren't as good as what's reachable in c.

                          it's not a fault of the rust language per se, but writing a safe interface at that level isn't easy, so it makes sense (and is in some sense a better default) to have high level, platform neutral access here.

                          L This user is from outside of this forum
                          L This user is from outside of this forum
                          lukasz2@social.vivaldi.net
                          wrote sidst redigeret af
                          #38

                          @prozacchiwawa @lcamtuf yeah, but coreutils is an interface for shell languages. The shell doesn't care if underlying "util" was written in C or Rust

                          1 Reply Last reply
                          0
                          • sten@chaos.socialS sten@chaos.social

                            @darkuncle @ChuckMcManis @lcamtuf Sure, but perhaps don't do your learning in production? 🙂

                            m33@mastodon.socialM This user is from outside of this forum
                            m33@mastodon.socialM This user is from outside of this forum
                            m33@mastodon.social
                            wrote sidst redigeret af
                            #39

                            @sten @darkuncle @ChuckMcManis @lcamtuf is it really production if it's not on my machine ?

                            mikalai@privacysafe.socialM chuckmcmanis@chaos.socialC sten@chaos.socialS 3 Replies Last reply
                            0
                            • m33@mastodon.socialM m33@mastodon.social

                              @sten @darkuncle @ChuckMcManis @lcamtuf is it really production if it's not on my machine ?

                              mikalai@privacysafe.socialM This user is from outside of this forum
                              mikalai@privacysafe.socialM This user is from outside of this forum
                              mikalai@privacysafe.social
                              wrote sidst redigeret af
                              #40

                              @m33 @sten @darkuncle @ChuckMcManis @lcamtuf
                              yep, production is for debugging

                              1 Reply Last reply
                              0
                              • sten@chaos.socialS sten@chaos.social

                                @lcamtuf Not only that, some of the utils were not command line-compatible with their non-Rust counterparts.

                                Honestly, I don't understand why these utils were rewritten. They didn't need rewriting.

                                m33@mastodon.socialM This user is from outside of this forum
                                m33@mastodon.socialM This user is from outside of this forum
                                m33@mastodon.social
                                wrote sidst redigeret af
                                #41

                                @sten @lcamtuf Someone said vigorously "don't break userspace". Now we need "don't break userland" or something

                                1 Reply Last reply
                                0
                                • m33@mastodon.socialM m33@mastodon.social

                                  @sten @darkuncle @ChuckMcManis @lcamtuf is it really production if it's not on my machine ?

                                  chuckmcmanis@chaos.socialC This user is from outside of this forum
                                  chuckmcmanis@chaos.socialC This user is from outside of this forum
                                  chuckmcmanis@chaos.social
                                  wrote sidst redigeret af
                                  #42

                                  @m33
                                  I discovered at Google a tremendous laziness and lack of rigor because "well if it doesn't work or has problems we can roll it back." I came to think of it as The Google Principle and it can be more easily written as:

                                  The amount of care and thought that goes into a software change is proportional to the perceived difficulty of pushing that change into production.

                                  @sten @darkuncle @lcamtuf

                                  darkuncle@infosec.exchangeD 1 Reply Last reply
                                  0
                                  • sten@chaos.socialS sten@chaos.social

                                    @lcamtuf Not only that, some of the utils were not command line-compatible with their non-Rust counterparts.

                                    Honestly, I don't understand why these utils were rewritten. They didn't need rewriting.

                                    oblomov@sociale.networkO This user is from outside of this forum
                                    oblomov@sociale.networkO This user is from outside of this forum
                                    oblomov@sociale.network
                                    wrote sidst redigeret af
                                    #43

                                    @sten @lcamtuf

                                    MIT licensing vs GPL.

                                    (I'm not joking.)

                                    sten@chaos.socialS argv_minus_one@mastodon.sdf.orgA 2 Replies Last reply
                                    0
                                    • groxx@hachyderm.ioG groxx@hachyderm.io

                                      @lcamtuf a related observation would probably be: why did important, security-critical edge cases get handled without enough documentation to prevent them from reoccurring?

                                      orb2069@mastodon.onlineO This user is from outside of this forum
                                      orb2069@mastodon.onlineO This user is from outside of this forum
                                      orb2069@mastodon.online
                                      wrote sidst redigeret af
                                      #44

                                      @groxx

                                      ...I like how you assume people read comments. It gives me hope.

                                      @lcamtuf

                                      S 1 Reply Last reply
                                      0
                                      • klausman@mas.toK klausman@mas.to

                                        @lcamtuf There's also that human habit of getting complacent about all bugs when _some_ types of bugs are either impossible or very very hard to make because of language structure and tooling.

                                        orb2069@mastodon.onlineO This user is from outside of this forum
                                        orb2069@mastodon.onlineO This user is from outside of this forum
                                        orb2069@mastodon.online
                                        wrote sidst redigeret af
                                        #45

                                        @klausman

                                        See: Unit tests making talking about regression taboo.

                                        @lcamtuf

                                        1 Reply Last reply
                                        0
                                        • lcamtuf@infosec.exchangeL lcamtuf@infosec.exchange

                                          The coreutils Rust rewrite story is pretty funny.

                                          Coreutils are tools like rm, mv, mkdir, etc. Unlike binutils, this isn't a fertile ground for memory safety bugs. But, the rewrite was completed, and in the spirit of progress, Canonical decided to switch.

                                          But do you know what coreutils are a fertile ground for? Race conditions around file creation, deletion, permission setting, and so on. The original code accounted for decades of hard-learned lessons in that space. The Rust rewrite did not:

                                          https://seclists.org/oss-sec/2026/q2/332

                                          PS. I'm not dunking on Rust. It's just that... starting over from scratch has its hidden costs.

                                          miss_rodent@girlcock.clubM This user is from outside of this forum
                                          miss_rodent@girlcock.clubM This user is from outside of this forum
                                          miss_rodent@girlcock.club
                                          wrote sidst redigeret af
                                          #46

                                          @lcamtuf Yeah, but they got to license-wash the coreutils, the gnu coreutils are GPL3, the rust uutils use the much more corporate-overlord and user-abuse friendly MIT license.

                                          grumpybozo@toad.socialG S 2 Replies Last reply
                                          0
                                          Svar
                                          • Svar som emne
                                          Login for at svare
                                          • Ældste til nyeste
                                          • Nyeste til ældste
                                          • Most Votes


                                          • Log ind

                                          • Har du ikke en konto? Tilmeld

                                          • Login or register to search.
                                          Powered by NodeBB Contributors
                                          Graciously hosted by data.coop
                                          • First post
                                            Last post
                                          0
                                          • Hjem
                                          • Seneste
                                          • Etiketter
                                          • Populære
                                          • Verden
                                          • Bruger
                                          • Grupper