Replies: 2 comments 2 replies
-
Yes, this is the exact reason. Basically, if the application has a lot of different configurations based on command-line args, then the runtime behavior of the application may vary widely. For example, Redis server has tons of command-line options, see https://redis.io/docs/management/config/. Typically, you want to run a very particular configuration of the application with SGX. Otherwise the attacker can choose to run a configuration of the app that does something weird/unexpected, and it will not be reflected in the SGX remote attestation in any way. E.g., Redis is safe to be used with the
If you design/modify the application yourself, then you can weigh the risks of different command-line arguments. If you find that the configuration space due to command-line args is safe, then feel free to use
I'm not sure about your particular scenario, but you could have a requirement on a particular filename. E.g. the file passed as an input to Gramine must be named |
Beta Was this translation helpful? Give feedback.
-
As always, very quick and detailed answer! I appreciate it, thank you! |
Beta Was this translation helpful? Give feedback.
-
I've been experimenting a lot with Gramine lately, especially. with manifest files and noticed that it is not recommended to pass arbitrary file and command line arguments to applications launched with
gramine-sgx
. This is what I get when there are some unsafe options in the manifest file:What is the rationale for that? How does it impact security (or remote attestation in particular)? Is this because
MRENCLAVE
doesn't take into account command line files/arguments that were not provided upfront? I don't have a clear understanding of the potential risks.What is the safest/recommended way to design an application if I have to accept user input? Let's say I need to sign a user-supplied input file/string and I want to do it in an SGX enclave.
Beta Was this translation helpful? Give feedback.
All reactions