Skip to content

Binaries compiled with musl not having NX bit set #30824

Closed
@aliclark

Description

@aliclark

After following the Static Linking guide and creating binaries with rustc (https://doc.rust-lang.org/book/advanced-linking.html#static-linking), the compiled x86_64-unknown-linux-musl binaries currently do not have the NX set on the stack.

This can be checked using the following script: http://www.trapkit.de/tools/checksec.html

This seems to be a regression given that binaries compiled with the vanilla rustc do have NX set on the stack (it is also common practice for C programs these days).

I created a small demonstration project here, simulating exploitation after an ASLR bypass: aliclark/rust-musl-nx-issue@a5a37fe

with normal rustc:

cargo run
Running target/debug/snap
Calling out to buggy C code
An unknown error occurred

with musl rustc:

cargo run --target x86_64-unknown-linux-musl
Running target/x86_64-unknown-linux-musl/debug/snap
Calling out to buggy C code
sh-4.3$

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions