javierhonduco 9 hours ago

I am incredibly happy that Apple has added MTE support to the latest iPhones and perhaps the M5 chips as well (?). If that’s the case I don’t think any other personal computers have anything close to Apple machines in terms of memory safety and related topics (Secure Enclave etc).

Hope other vendors will ship MTE in their laptop and desktop chips soon enough. While I’m very positive about x86_64 adding support for this (ChkTag), it’ll definitely take a while…

In my opinion a worthwhile enough reason to upgrade but feels like a waste given my current devices work great.

  • abalone 8 hours ago

    Not only does M5 have MTE, it has an "enhanced" version of it.

    "We conducted a deep evaluation and research process to determine whether MTE, as designed, would meet our goals for hardware-assisted memory safety. Our analysis found that, when employed as a real-time defensive measure, the original Arm MTE release exhibited weaknesses that were unacceptable to us, and we worked with Arm to address these shortcomings in the new Enhanced Memory Tagging Extension (EMTE) specification, released in 2022."[1]

    The enhancements add:[2]

    * Canonical tag checking

    * Reporting of all non-address bits on a fault

    * Store-only Tag checking

    * Memory tagging with Address tagging disabled

    [1] https://security.apple.com/blog/memory-integrity-enforcement...

    [2] https://developer.arm.com/documentation/109697/0100/Feature-...

    • summa_tech 7 hours ago

      It's MTE4. The "enhancements" mostly make it easier for Apple developers to hack XNU into continuing to operate with MTE.

      • astrange 4 hours ago

        It's more like MTE was originally intended as a debugging tool (like ASan), and MTE4 makes it work as a security hardening measure.

    • commandersaki 8 hours ago

      Do you know if macos has the changes needed to make use of MIE with M5? I assume that it has with iPadOS.

    • contact9879 5 hours ago

      do you have a citation for M5 having MTE?

  • accelbred an hour ago

    Pixels with GrapheneOS also use MTE for security hardening

  • musicale 8 hours ago

    Compiler/runtime support via clang and llvm should help I hope.

    I'd like to get to the point where web browsers (for example) always run with memory-safe compilation and runtime features on every platform. OS kernels would be nice as well.

    It will be nice to see more OSes ship with memory safety on by default for everything. Maybe OpenBSD is next?

    • throwawaymaths 6 hours ago

      sel4 ships with memory safety on by default.

tempaccount420 8 hours ago

Sooo, less reasons (more excuses) for people to move from C++ to Rust?

  • dagmx 5 hours ago

    If you don’t mind moving the whole issue to runtime, then sure. The value of rust is that you catch these issues at compile time so you’re not releasing these sorts of bugs in the first place and aren’t reliant on the capabilities of the users machine to catch it for you.

    • rustdebacletime 19 minutes ago

      There are some caveats to that. If types like RefCell, Rc or Arc in Rust are used, there is runtime overhead. And if unsafe is used, as is often necessary for efficiency, there are no longer memory safety guarantees [0]. And the memory safety guarantees also do not hold when #![no_std] is used.

      That unsafe is harder than C and C++, as many in the Rust community agrees with, only worsens the issue. Topics like pinning are also considered difficult to teach [1].

      [0]: https://materialize.com/blog/rust-concurrency-bug-unbounded-...

      [1]: https://lwn.net/Articles/1030517/ "Pinning continues to be the most difficult aspect of Rust to understand"

  • 1718627440 7 hours ago

    Honestly it feels at the right abstraction layer too. With Rust you rely on correctness in translation, it is much better to have defense in depth than in breadth.

    • kibwen 5 hours ago

      Rust is already part of defense-in-depth. Despite its memory safety, Rust still turns on ASLR, guard pages, stack probes, etc.

e-dant 3 hours ago

It disappoints me to see hardware compensate for the failures of software. We should have done better.

  • Panzerschrek 19 minutes ago

    I agree. The underlying hardware should be as simple as needed and thus be cheap and consume little power. Fixing bad software practices (like using an unsafe language) via hardware hacks is a terrible mistake.

a-dub 8 hours ago

wouldn't it be like a crime against the crown to not have a cheri like thing in arm?

  • commandersaki 7 hours ago

    I always see cheri brought up and admittedly I know very little about it, except that the ergonomics appear poor requiring twice the storage for each pointer and ground up rearchitecting of the OS, making it quite unappealing from an engineering standpoint.

    • wahern 3 hours ago

      FreeBSD, kernel and base, was ported to CHERI, along with PostgreSQL.

      > We have adapted a complete C, C++, and assembly-language software stack, including the opensource FreeBSD OS (nearly 800 UNIX programs and more than 200 libraries including OpenSSH, OpenSSL, and bsnmpd) and PostgreSQL database, to employ ubiquitous capability-based pointer and virtual-address protection.

      Most programs didn't require any changes at all. Even most pointer-integer-pointer conversions can be automatically handled by the toolchain and runtime. See https://www.cl.cam.ac.uk/research/security/ctsrd/pdfs/201904...

      • commandersaki an hour ago

        Sounds good for a clean slate but you couldn't seamlessly transition to it, which is why I said it was unappealing.

    • checker659 an hour ago

      > making it quite unappealing from an engineering standpoint

      The other option being rewriting everything under the sun from scratch.

      • commandersaki an hour ago

        Um, there's also Memory Tagging which is the topic of this post.

        Apple's implemented it as part of the umbrella MIE and eliminates a class of bugs, at least on the surface of their own software, and allows for incremental adoption and doesn't break compatibility with older binaries.