私は、誰かが C コードを送信できる hackerrank.com に似たプラットフォームを開発しています。そのコードはコンパイルされ、私のサーバーで実行されますが、人が実行できる C 命令セットを制限したいと考えています。私のサーバー。
例: 命令セットを I/O のみに制限します。
私の最初のアプローチは、コードを解析して悪意のあるコードを探すことでしたが、それは簡単にオーバーライドできるため (シェル コード、難読化など)、かなり単純です。
私の2番目のアプローチ(うまくいくと思うもの)は、「不要な」ヘッダーをすべて削除し、stdio.h、math.h、stdlib.hなどを残すことです。
しかし、gcc から C の命令セットを制限することは可能かもしれないと思ったのですが、gcc の man エントリを読んだ後、必要なものに近いものを見つけることができなかったので、それは可能でしょうか?
それが不可能な場合、この問題を安全に解決するにはどうすればよいでしょうか? 不要なライブラリを取り除く以外。
ありがとう!