Skip to content

Commit 27e4d7a

Browse files
klemensnMic92
authored andcommitted
Restrict system operations on OpenBSD
Use pledge(2)[0] to limit patchelf(1) to read, write and create files. It never deals with TTY, network, process management or other subsystems. Do so immediately in main() since mainWrapped() itself parses files whilst parsing command line arguments (--rename-dynamic-symbols). This is to reduce patchelf's attack surface and potential damage when dealing with untrusted ELF programs. No behaviour change in tests or real world usage observed on OpenBSD/amd64 7.4 (0.18.0 tests: 56/52/2/2 TOTAL/PASS/FAIL/SKIP). 0: https://man.openbsd.org/pledge.2
1 parent 1c443aa commit 27e4d7a

File tree

1 file changed

+5
-0
lines changed

1 file changed

+5
-0
lines changed

src/patchelf.cc

+5
Original file line numberDiff line numberDiff line change
@@ -2697,6 +2697,11 @@ static int mainWrapped(int argc, char * * argv)
26972697

26982698
int main(int argc, char * * argv)
26992699
{
2700+
#ifdef __OpenBSD__
2701+
if (pledge("stdio rpath wpath cpath", NULL) == -1)
2702+
error("pledge");
2703+
#endif
2704+
27002705
try {
27012706
return mainWrapped(argc, argv);
27022707
} catch (std::exception & e) {

0 commit comments

Comments
 (0)