パール木本のPerlテックブログ

世界的プロジェクトに携わるPerlプログラマー「パール木本」のテックブログ。書籍「業務に役立つPerl」,ユーチューバー, 木本システム代表取締役社長。

SPVMはセキュアなプログラム実行環境を提供できるようにする

SPVMはセキュアなプログラム実行環境を提供できるようにする。

セキュアという考え方には、任意のコマンドを実行されてしまったり、ファイルを書き換えられてしまったりする、処理に対してセキュアというのがあります。

もう一つは、リソース制限がかからないままプロセスを実行してしまう、リソースに対してセキュアというのがあります。

セキュアなプロセス環境を提供するという場合に、この二つをいっぺんに満たすような、ボックス環境を作るというのが、コンテナという技術で、現在行われているように思います。

コンテナ技術は、あらゆるプログラムに対して、処理に対してセキュアかつ、リソースに対してセキュアなことが目標です。例外的に、ローカルファイルをマウントしたりと、アンセキュアなことができるようになっています。

プログラミング言語がセキュアではない理由

外部コマンド実行

外部コマンド実行ができると、処理に対してセキュアではありません。

ファイル入出力・ソケットなどのネットワークアクセス

ファイル入出力・ソケットなどのネットワークアクセスができると処理に対してセキュアではありません。

コンパイル時に完全な静的解析ができない

コンパイル時に完全な静的解析が可能な場合は、外部コマンド実行や、ファイル入出力・ネットワークアクセス可能なモジュールを、除外することが可能です。

これができないプログラミング言語は、処理に対してセキュアになりません。

アンセキュアな処理をモジュールとして分離できて、実行できる機能が必要です。

処理に対してセキュアであればulimitでリソース制限をするだけ

処理に対してセキュアであれば、リソースに対するセキュアは、ulimitでリソース制限をするだけで可能なように思えます。

このようにして、セキュアな実行環境を提供できるように思えます。