• 0 Posts
  • 3 Comments
Joined 4 months ago
cake
Cake day: February 17th, 2025

help-circle
  • There was this recent attack to XZ utils, which shows that more attention is needed on the code being merged and compiled.

    XZ was made possible largely because there was unaudited binary data. One part as test data in the repo, and the other part within the pre-built releases. Bootstrapping everything from source would have required that these binaries had an auditable source, thus allowing public eyes to review the code and likely stopping the attack. Granted, reproducibility almost certainly would have too, unless the malware wasn’t directly present in the code.

    Pulled from here:

    Every unauditable binary also leaves us vulnerable to compiler backdoors as described by Ken Thompson in the 1984 paper Reflections on Trusting Trust and beautifully explained by Carl Dong in his Bitcoin Build System Security talk.

    It is therefore equally important that we continue towards our final goal: A Full Source bootstrap; removing all unauditable binary seeds.

    Sure you might have the code that was input into GCC to create the binary, and sure the code can be absolutely safe, and you can even compile it yourself to see that you arrive at the same bit-for-bit binary as the official release binary. But was GCC safe? Did some other compilation dependency infect the compiled binary? Bootstrapping from an auditable seed can answer this question.



  • Yes. Memory allocated, but not written to, still counts toward your limit, unlike in overcommit modes 0 or 1.

    The default is to hope that not enough applications on the system cash out on their memory and force the system OOM. You get more efficient use of memory, but I don’t like this approach.

    And as a bonus, if you use overcommit 2, you get access to vm.admin_reserve_kbytes which allows you to reserve memory only for admin users. Quite nice.