フォージビジョン Orca Security のサービスサイト がオープンしました。
こんにちは、Orca Security 担当の尾谷です。
昨年 8 月に、以下調査を行ったことがあります。
Orca Security はルートテーブルを見ていないじゃないか? パブリック IP アドレスが付与されているというだけで、Internet Facing と判断していないか?
調査の結果、Orca Security はルートテーブルを正しく理解できませんでした。
ただ、それから半年が経過して、Orca は Attack Path の改修や、Blast Radius の追加などエンハンス開発が行われました。
当時は存在しなかったアセットディテールページには Graph 機能が強化されています。
Graph 機能では、より正確にクラウドのリソースマップを描画できるようになっています。
本ブログでは、昨年の 8 月に調査した課題が解消されているのか?
再検証した結果をアウトプットします。
このサーバーはインターネットに接続できますか?
まずはみなさんに質問させていただきます。以下の図をご覧ください。
みなさんは、以下のサーバー (Instance) がインターネットに接続できると思いますか?
もし AWS に詳しい方でしたら、結果がお分かりなるかと思うので、本ブログの下部にあります ここまでのまとめ まで読み飛ばしてください。
VPC 内のインスタンスがインターネットに接続するための条件
AWS が提供する Amazon VPC は仮想ファイアウォールの役割をします。
そのため、条件をクリアしないとインターネットに接続ができません。
条件 1. インターネットゲートウェイ
VPC にはインターネットゲートウェイという出口をアタッチする必要がある。
上図ではインターネットゲートウェイがアタッチされているので、条件 1 はクリアーできています。
条件 2. サーバーがパブリック IP アドレスを持つ
サーバー (Instance) には一つのネットワークインターフェース (NIC のようなもの) が必ず自動でアタッチされる。 アタッチされたネットワークインターフェースには、プライベート IP アドレスが必ず割り当てされるが、同時にパブリック IP アドレス (= グローバル IP アドレス) がアタッチされていないとインターネットに接続できない。これは、Elastic IP アドレス (固定) でも自動パブリック IP アドレスでも良い。
上図では、Elastic IP アドレスがアタッチされているので、条件 2 もクリアーできています。
条件 3. サブネットにインターネットに接続するためのルートテーブルが必要
サーバーはサブネットに起動するが、サブネットには一つのルートテーブルが必ずアタッチされる。ルートテーブルに、インターネット向けのルーティングが記載されていないとインターネット上にパケットが流れず、結果、インターネットに接続ができない。インターネット向けのルーティングがないサブネットはプライベートサブネットと呼ぶ。
上図では、サーバーがプライベートサブネットに起動しているので、インターネットに接続できません。
以上より、上図の構成ではサーバーはインターネットに接続できません。
Orca Security は上図の構成を Internet Facing と誤って理解する
昨年 8 月に調査をしたとき、Attack Vector は確かにインターネットに接続できる線を描画していました。
当時のスクリーンショットがありましたので貼り付けます。
SideScanning の初動で正しくメタデータを読み込めていないことが原因だと推測されます。
これが改善されているか、実際に環境を用意して確認してみたいと思います!
VPC を起動
- [VPC ダッシュボード] を選択して、表示された [VPC を作成] ボタンをクリックします。
- [VPC を作成] 画面に遷移するので、
- アベイラビリティゾーン (AZ) の数を 1 にして、パブリックサブネットの数を 0、プライベートサブネットの数を 1 にします。
- NAT ゲートウェイも VPC エンドポイントもアタッチしません。 [VPC を作成] ボタンをクリックします。
一発で VPC ができました。
サブネットにアタッチされたルートテーブルには、「0.0.0.0/0 → インターネットゲートウェイ」の外に出るためのルーティングがありません。プライベートサブネットになっています。
こんな感じです。
最初の図に合わせるため、インターネットゲートウェイだけ手動でアタッチします。
ナビゲーションペインから、インターネットゲーウェイを選択して、[インターネットゲートウェイの作成] ボタンをクリックします。
任意の名前をつけて、[インターネットゲートウェイの作成] ボタンをクリックします。
[アクション] ボタンから [VPC にアタッチ] を選択してアタッチします。
サーバー (EC2 インスタンス) を起動する
上記 VPC に EC2 インスタンスを起動しました。本題と逸れるので EC2 の起動手順は省略しますが、確かにパブリック IP アドレスが付与されています。
さらに、Elastic IP アドレスもアタッチしておきました。
これで、図の状態が出来上がりました。
セキュリティグループも全世界に開放しています!
ここまでのまとめ
長々と記載してきましたが、一旦まとめます。
- プライベートサブネットに EC2 インスタンスを起動した。
- Elastic IP アドレスも付与して、パブリック IP アドレスを付与している。
- セキュリティグループも 22 ポートを全世界に開放した。
- 一見、リスクを孕むように見えるがインターネットには接続できないので安全。
Orca Security のスキャン結果
スキャンが完了しました。
残念ながら、Internet Facing は Yes となりました。
また、インターネットから 22 ポートが繋がるという判定になりました。これも誤っています。
まとめ
残念ながら、Orca Security は、未だルートテーブルを考慮した Attack Vector の描画ができないと分かりましたが、検証した環境はそもそも、正しく AWS を利用できていないので、アーキテクチャの見直しを行うべきだと感じました。
また、その気づきになるのは良いと感じました。
以上、最後までお読みくださりありがとうございました。