-
Notifications
You must be signed in to change notification settings - Fork 69
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Promote tier 3 arm64e-apple-ios
target to tier 2
#793
Comments
This issue is not meant to be used for technical discussion. There is a Zulip stream for that. Use this issue to leave procedural comments, such as volunteering to review, indicating that you second the proposal (or third, etc), or raising a concern that you would like to be addressed. Concerns or objections to the proposal should be discussed on Zulip and formally registered here by adding a comment with the following syntax:
Concerns can be lifted with:
See documentation at https://forge.rust-lang.org cc @rust-lang/compiler @rust-lang/compiler-contributors |
@rustbot concern insecure The purpose of arm64e targets is to be the same as aarch64 but with pointer authentication enabled for calls and returns. Since the last time this was tried, it appears that LLVM upstream has finished implementing authenticated calls and returns, but there is still a frontend component that rustc is missing. Specifically:
As far as I can tell, nobody has implemented this for rustc, so the generated assembly (as of rust-lang/rust@17a19e684cd) still doesn't use pointer authentication at all. I expect that the code will still work, but with some compatibility problems (passing function pointers to C code won't work), and critical security problems. Authenticated calls and returns forms a sort of chain of trust: you start from a valid entry point, and every jump from there should either be a direct jump to an address known to be valid, or an indirect jump which uses authentication to ensure the target address is valid. So if any unauthenticated return or indirect call exists in any function ever called, it breaks the chain of trust for the whole process. Until that's fixed, my opinion is that this target shouldn't be considered production-ready. To be fair, as far as the tier policy goes, pointer authentication is not a "propert[y] needed to ensure safe Rust code cannot cause undefined behavior". It seems closer to "arbitrary security enhancements or mitigations provided by code generation backends", which are not required in order for a target to be tier 2. But silently degrading security for the whole process seems like a pretty big flaw that perhaps wasn't envisioned when writing this policy. |
Hi @comex, Thank you so much for your feedback. Of course, we need to implement it. I would appreciate it if you could open a ticket for this. I believe this feature could be useful for any AArch64 targets. The According to this article, some attacks against ARM pointer authentication have been demonstrated. Additionally, the Threat Analysis Group (TAG) has noted that there have been years of exploits targeting
I completely agree with this. There's still a lot of work to be done before this target is production-ready. However, it could be valuable for research purposes. We can also avoid regressions for this architecture by integrating it into CI. According to the Rust target policy, this target has the potential to be promoted. I hope this will attract more contributors to these targets and help us achieve our goals faster. |
I have summarized the known issues. I understand there are some concerns, so I believe we should revisit this topic once all these tickets are resolved. |
Promote
arm64e-apple-ios
target to tier 2.I believe that the
arm64e-apple-ios
target has the same meaning asaarch64-apple-ios
. It can be used alongside aarch64-apple-ios, but with some limitations at the moment.I am a maintainer of this target, so I believe we can extend the team to include *-apple-ios.
I have been working on this, so I have a backlog related to it.
This target is almost the same as
aarch64-apple-ios
which is tier 2, so there shouldn't be any burden.Cross compilation and testing are explained on the targets page.
The target specifies that it can work on
iOS
11+.No change.
It doesn't.
It supports the C calling convention with some limitations.
I can build this target using the same methods as in CI.
No problem.
It should be more or less the same speed as
aarch64-apple-ios
. I usually build this target in CI for up to 2 hours.This is supported without any issues.
I believe that since it is more or less the same as
aarch64-apple-ios
, there shouldn't be any issues.No problem.
Agree.
Agree.
Process
The main points of the Major Change Process are as follows:
@rustbot second
.-C flag
, then full team check-off is required.@rfcbot fcp merge
on either the MCP or the PR.You can read more about Major Change Proposals on forge.
Comments
This issue is not meant to be used for technical discussion. There is a Zulip stream for that. Use this issue to leave procedural comments, such as volunteering to review, indicating that you second the proposal (or third, etc), or raising a concern that you would like to be addressed.
You can read more about Major Change Proposals on forge.
See #717
See rust-lang/rust#73628
The text was updated successfully, but these errors were encountered: