Help with LANDLOCK_ACCESS_FS_EXECUTE
Andrea Cervesato <[email protected]> Mon, 1 Jul 2024 16:25:53 +0200
| Newsgroups | dev.linux.lists.landlock |
|---|---|
| Message-ID | <[email protected]> |
This is a multi-part message in MIME format. --------------PCrgJ8wN8qQXFKpc5lh0fr2s Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi all, I'm actually writing a test for LANDLOCK_ACCESS_FS_EXECUTE flag in LTP [1]. The test is really simple: it applies the EXECUTE landlock rule inside a folder and it verifies that a binary inside it can be executed. A similar test applies the rule only to the specific binary and check again its execution. But while I was writing the test, I encountered an issue with the specific rule setup, since EACCES is raised unexpectedly during binary execution. So I wrote a reproducer, assuming that LTP might be the issue, but it's not. The reproducer actually shows that binary can't be executed after applying the EXECUTE rule. I will attach the source code to this email. Can you please tell me if there's something wrong with it? Best regards, Andrea Cervesato [1] https://linux-test-project.readthedocs.io/en/latest/ --------------PCrgJ8wN8qQXFKpc5lh0fr2s Content-Type: text/x-csrc; charset=UTF-8; name="exec-tester.c" Content-Disposition: attachment; filename="exec-tester.c" Content-Transfer-Encoding: base64 LyoKICogQ29tcGlsZSB3aXRoOgogKiAgICBnY2MgLWxjIGV4ZWMtdGVzdGVyLmMgLW8gZXhl Yy10ZXN0ZXIKICoKICogRW5zdXJlIHRoYXQgImxhbmRsb2NrX2V4ZWMiIGlzIHByZXNlbnQg YW5kIGl0J3MgZXhlY3V0YWJsZSB2aWEgImV4ZWN2ZSIuCiAqIENhbiBiZSBhIGNvbXBpbGVk IHNvdXJjZSBsaWtlOgogKgogKiAgICBpbnQgbWFpbih2b2lkKSB7IHJldHVybiAwOyB9CiAq LwoKI2RlZmluZSBfR05VX1NPVVJDRQoKI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxm Y250bC5oPgojaW5jbHVkZSA8ZXJybm8uaD4KI2luY2x1ZGUgPHN0cmluZy5oPgojaW5jbHVk ZSA8c3RkaW50Lmg+CiNpbmNsdWRlIDx1bmlzdGQuaD4KI2luY2x1ZGUgPHN5cy93YWl0Lmg+ CiNpbmNsdWRlIDxzeXMvcHJjdGwuaD4KI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+CiNpbmNs dWRlIDxsaW51eC9sYW5kbG9jay5oPgoKI2RlZmluZSBGSUxFX0VYRUMgImxhbmRsb2NrX2V4 ZWMiCgpzdGF0aWMgaW5saW5lIGludCBsYW5kbG9ja19jcmVhdGVfcnVsZXNldChjb25zdCBz dHJ1Y3QgbGFuZGxvY2tfcnVsZXNldF9hdHRyICphdHRyLAoJc2l6ZV90IHNpemUsIHVpbnQz Ml90IGZsYWdzKQp7CglyZXR1cm4gc3lzY2FsbChTWVNfbGFuZGxvY2tfY3JlYXRlX3J1bGVz ZXQsCgkJYXR0ciwgc2l6ZSwgZmxhZ3MpOwp9CgpzdGF0aWMgaW5saW5lIGludCBsYW5kbG9j a19hZGRfcnVsZShpbnQgcnVsZXNldF9mZCwgZW51bSBsYW5kbG9ja19ydWxlX3R5cGUgcnVs ZV90eXBlLAoJY29uc3Qgdm9pZCAqcnVsZV9hdHRyLCB1aW50MzJfdCBmbGFncykKewoJcmV0 dXJuIHN5c2NhbGwoU1lTX2xhbmRsb2NrX2FkZF9ydWxlLAoJCXJ1bGVzZXRfZmQsIHJ1bGVf dHlwZSwgcnVsZV9hdHRyLCBmbGFncyk7Cn0KCnN0YXRpYyBpbmxpbmUgaW50IGxhbmRsb2Nr X3Jlc3RyaWN0X3NlbGYoaW50IHJ1bGVzZXRfZmQsIGludCBmbGFncykKewoJcmV0dXJuIHN5 c2NhbGwoU1lTX2xhbmRsb2NrX3Jlc3RyaWN0X3NlbGYsCgkJcnVsZXNldF9mZCwgZmxhZ3Mp Owp9CgpzdGF0aWMgdm9pZCBydW5fdGVzdChjb25zdCBpbnQgd2l0aF9sYW5kbG9jaykKewoJ aW50IHJ2YWw7CglwaWRfdCBwaWQ7CglpbnQgc3RhdHVzOwoJaW50IGZkID0gLTE7CglpbnQg cnVsZXNldF9mZCA9IC0xOwoKCWlmICh3aXRoX2xhbmRsb2NrKSB7CgkJc3RydWN0IGxhbmRs b2NrX3J1bGVzZXRfYXR0ciBydWxlc2V0X2F0dHIgPSB7CgkJCS5oYW5kbGVkX2FjY2Vzc19m cyA9CgkJCQlMQU5ETE9DS19BQ0NFU1NfRlNfRVhFQ1VURSB8CgkJCQlMQU5ETE9DS19BQ0NF U1NfRlNfV1JJVEVfRklMRSB8CgkJCQlMQU5ETE9DS19BQ0NFU1NfRlNfUkVBRF9GSUxFCgkJ fTsKCgkJcnVsZXNldF9mZCA9IGxhbmRsb2NrX2NyZWF0ZV9ydWxlc2V0KAoJCQkmcnVsZXNl dF9hdHRyLCBzaXplb2Yoc3RydWN0IGxhbmRsb2NrX3J1bGVzZXRfYXR0ciksIDApOwoJCWlm IChydWxlc2V0X2ZkID09IC0xKSB7CgkJCXByaW50ZigibGFuZGxvY2tfY3JlYXRlX3J1bGVz ZXQoKSBlcnJvciAlc1xuIiwgc3RyZXJyb3IoZXJybm8pKTsKCQkJZ290byBlbmQ7CgkJfQoK CQlmZCA9IG9wZW4oRklMRV9FWEVDLCBPX1BBVEggfCBPX0NMT0VYRUMsIDA3NDQpOwoJCWlm IChmZCA9PSAtMSkgewoJCQlwcmludGYoIkNhbid0IG9wZW4gZmlsZSAnJXMnXG4iLCBGSUxF X0VYRUMpOwoJCQlnb3RvIGVuZDsKCQl9CgoJCXN0cnVjdCBsYW5kbG9ja19wYXRoX2JlbmVh dGhfYXR0ciBwYXRoX2JlbmVhdGhfYXR0ciA9IHsKCQkJLmFsbG93ZWRfYWNjZXNzID0gTEFO RExPQ0tfQUNDRVNTX0ZTX0VYRUNVVEUsCgkJCS5wYXJlbnRfZmQgPSBmZCwKCQl9OwoKCQly dmFsID0gbGFuZGxvY2tfYWRkX3J1bGUoCgkJCXJ1bGVzZXRfZmQsCgkJCUxBTkRMT0NLX1JV TEVfUEFUSF9CRU5FQVRILAoJCQkmcGF0aF9iZW5lYXRoX2F0dHIsCgkJCTApOwoJCWlmIChy dmFsID09IC0xKSB7CgkJCXByaW50ZigibGFuZGxvY2tfYWRkX3J1bGUgZXJyb3I6ICVzXG4i LCBzdHJlcnJvcihlcnJubykpOwoJCQlnb3RvIGVuZDsKCQl9CgoJCXJ2YWwgPSBwcmN0bChQ Ul9TRVRfTk9fTkVXX1BSSVZTLCAxLCAwLCAwLCAwKTsKCQlpZiAocnZhbCA9PSAtMSkgewoJ CQlwcmludGYoInByY3RsIGVycm9yXG4iKTsKCQkJZ290byBlbmQ7CgkJfQoKCQlydmFsID0g bGFuZGxvY2tfcmVzdHJpY3Rfc2VsZihydWxlc2V0X2ZkLCAwKTsKCQlpZiAocnZhbCA9PSAt MSkgewoJCQlwcmludGYoImxhbmRsb2NrX3Jlc3RyaWN0X3NlbGYgZXJyb3I6ICVzXG4iLCBz dHJlcnJvcihlcnJubykpOwoJCQlnb3RvIGVuZDsKCQl9Cgl9CgoJcGlkID0gZm9yaygpOwoJ aWYgKHBpZCA9PSAtMSkgewoJCXByaW50ZigiZXhlY3ZlKCkgZXJyb3I6ICVzXG4iLCBzdHJl cnJvcihlcnJubykpOwoJCWdvdG8gZW5kOwoJfQoKCWlmICghcGlkKSB7CgkJY2hhciAqYXJn c1tdID0geyhjaGFyICopRklMRV9FWEVDLCBOVUxMfTsKCgkJcnZhbCA9IGV4ZWN2ZShGSUxF X0VYRUMsIGFyZ3MsIE5VTEwpOwoJCWlmIChydmFsID09IC0xKQoJCQlwcmludGYoIkZhaWxl ZCB0byBleGVjdXRlIHRlc3QgYmluYXJ5OiAlc1xuIiwgc3RyZXJyb3IoZXJybm8pKTsKCgkJ X2V4aXQoMSk7Cgl9CgoJd2FpdHBpZChwaWQsICZzdGF0dXMsIDApOwoJaWYgKCFXSUZFWElU RUQoc3RhdHVzKSB8fCBXRVhJVFNUQVRVUyhzdGF0dXMpICE9IDApCgkJZ290byBlbmQ7CgoJ cHJpbnRmKCJCaW5hcnkgZXhlY3V0ZWRcbiIpOwoKZW5kOgoJaWYgKHJ1bGVzZXRfZmQgIT0g LTEpCgkJY2xvc2UocnVsZXNldF9mZCk7CgoJaWYgKGZkICE9IC0xKQoJCWNsb3NlKGZkKTsK fQoKaW50IG1haW4odm9pZCkKewoJcHJpbnRmKCJcblRlc3RpbmcgTEFORExPQ0tfQUNDRVNT X0ZTX0VYRUNVVEUgZnVuY3Rpb25hbGl0eVxuXG4iKTsKCXByaW50ZigiLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIik7CglwcmludGYoIlx0UnVubmluZyB0 ZXN0IHdpdGhvdXQgbGFuZGxvY2tcbiIpOwoJcHJpbnRmKCJcdCIpOwoJcnVuX3Rlc3QoMCk7 CglwcmludGYoIlxuIik7CgoJcHJpbnRmKCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tXG4iKTsKCXByaW50ZigiXHRSdW5uaW5nIHRlc3Qgd2l0aCBsYW5kbG9j ayBhY3RpdmF0ZWRcbiIpOwoJcHJpbnRmKCJcdCIpOwoJcnVuX3Rlc3QoMSk7CglwcmludGYo IlxuIik7CgoJcmV0dXJuIDA7Cn0K --------------PCrgJ8wN8qQXFKpc5lh0fr2s--