SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Developers Summit 2022 レポート(AD)

コンテナ・サーバレス環境において、開発者こそセキュリティを意識すべき理由とは? 【デブサミ2022】

【18-D-2】セキュリティの専門家が教える、コンテナ・FaaS環境に潜むリスクと対策

  • このエントリーをはてなブックマークに追加

 トレンドマイクロの調査によれば、日本企業におけるセキュリティインシデントの発生率は78.5%、年間平均被害額は1億4800万円にもなる。一方攻撃対象となるIT環境のトレンドとしては、コンテナやサーバレスなどのクラウドネイティブ技術の普及がある。世界では既に76%が本番環境でコンテナを使用し、サーバレスの利用も7割を超える。今後日本でも主流となるこれらを構築し、開発する人こそ、これからはセキュリティを意識する必要があるだろう。そこで、トレンドマイクロ株式会社 クラウドビジネス&アライアンスグループ グループ長 マネージャーの福田俊介氏が、開発者向けにコンテナ、FaaS環境の脅威動向とそれにどう対処すれば良いかを解説してくれた。

  • このエントリーをはてなブックマークに追加

Snyk株式会社 シニアソリューションズエンジニア 相澤俊幸氏
トレンドマイクロ株式会社 クラウドビジネス&アライアンスグループ グループ長 マネージャー 福田俊介氏

開発生産性の脅威ともなる、コンテナ・サーバレス環境の脆弱性

 日本においても、いずれは欧米と同様にコンテナやサーバレスの環境が利用されるようになるだろう。そのため、これからコンテナやサーバレス環境を開発する人、あるいはサーバレス環境でアプリケーションを開発する人にこそ「今のうちにセキュリティを意識しておいてほしい」と福田氏。それが、セキュリティの専門家であるトレンドマイクロが開発者向けのDevelopers Summitで話をする理由だと言う。

 ところで、サーバレス環境のセキュリティは誰が責任を持つべきなのか。トレンドマイクロの調査によると、この問いに対して、ITオペレーション担当者だとの回答が34%と高いが、DevOpsおよびアプリケーションの開発者だとの回答も16%ある。今後は、アプリケーションを開発する中でセキュリティを検討するケースがより増えていくだろうと福田氏は予測する。

 一般論として、コンテナ環境の構成で起こる被害パターンとしてどのようなものがあるだろうか。1つが攻撃者によりパブリックなレポジトリに悪意のあるコンテナイメージが登録され、それを取得し展開したサイトで、攻撃者がそれを利用するケースがある。またはユーザーのレジストリに不正侵入され、悪意のあるイメージを登録されるケースもあるだろう。

 コンテナイメージのスキャン機能を搭載したクラウドベンダーもあるが、「脆弱性発覚のタイミングの問題や不正プログラム対策機能の有無などによって見逃してしまい、悪意のあるイメージがデプロイされ、ファイル実行がされることも起こり得ます」と福田氏。このような流れの攻撃は、トレンドマイクロでも既に観測している。その例として仮想通貨を発掘する不正なDockerコンテナ、コンテナ経由でホスト侵害するコンテナエスケープの例が示された。

 さらに攻撃の様子が、デモでも紹介された。攻撃者が脆弱性のあるサイトにアクセスし、コマンドを実行してサイトがLinux、Kubernetesで動いていることを確認。wgetコマンドでkube-controller-managerをダウンロードし、それを使い権限を付与して攻撃者がPodを作れる状況や、侵入したPodからホストの制御ができ、ランサムウェアによってファイルが暗号化される様子までもが紹介された。これらは、Kubernetes環境に不要な権限が付与されていることで攻撃を許している例だ。

 多くのコンテナ環境にはKubernetesという特有の環境があり、それがうまく設定されていないために悪用されることがある。結果的にホストごと乗っ取られ攻撃者に操作されてしまう。こういったコンテナ環境の脅威があることを、開発者もしっかり認識してほしいと言う。

 さらに福田氏は、AWS LambdaなどのFaaS(Function as a Service)環境の脅威も説明した。クラウドサービスの利用では、責任共有モデルという考え方があり、FaaSではアプリケーションとデータは顧客側が守る必要がある。FaaSで動くアプリケーションに脆弱性がないか、そこで取り扱うデータの正確性に関する責任はユーザーにあるのだ。

 FaaS環境の脅威の原因は、インジェクション攻撃が多い。アプリケーションの脆弱性を利用したインジェクション攻撃で、不正アクセスが起きないようにする必要がある。福田氏は、FaaS環境が攻撃される様子についてもデモで紹介した。Amazon API Gateway、AWS Lambdaで動いているWebサーバがあり、Amazon Simple Storage Service(以下、Amazon S3)がバックエンドにある構成で、アプリケーションの不備を利用してクレデンシャルを奪い、それを使って権限昇格を行いAmazon S3の機密情報を抜き出すものだ。

 AWS Lambdaで提供されている脆弱性のあるWebサイトのURIに、特定の文字列を入れるとAWS Lambdaの情報が見られる。さらにAWS Lambdaの環境変数を見るスクリプトを入れると、クレデンシャルの情報も見られてしまう。それを使い管理者権限を付与すれば、Amazon S3に入っている情報も見られるようになるのだ。これには、従来のソフトウェアをサーバにインストールしてサーバごと守る方法は通用しない。責任共有モデルに則り、利用者はサーバレイヤにソフトウェアをインストールできないからだ。サーバレス環境では、セキュリティもサーバレスに即した対策を行く必要がある。それを開発者も認識してほしいと福田氏は言う。

 コンテナやサーバレスを使うのは、DevOpsやアジャイル開発で迅速なアプリケーション開発を実現するためだろう。素早く開発しても、デプロイ段階で脆弱性が見つかれば、開発に後戻りして対策するしかない。結果的に速く開発する目的は達成できない。これを福田氏は即席麺の作り方で説明した。

 カップのかき揚げうどんであれば、先にかき揚げを取り出し後から載せてうどんを完成させる。しかしきつねうどんの場合は、蓋を開けてすぐにお湯を入れる。「かき揚げうどんは後載せだからサクサク、一方きつねは先入れし、それによりしっとり食べられる。IaaS中心のクラウド環境はかき揚げうどん方式で、セキュリティの後載せでうまく回っていたケースもあります。サーバレスではこれだとうまくいきません。後載せではセキュリティのせいで開発、設計のし直しが発生しかねません」と福田氏。サーバレスでは、シフトレフトでなるべく前段階でセキュリティを組み込み、セキュリティ対策がサーバレスのメリットを阻害しないよう設計すべきだと説明する。

クラウド環境におけるセキュリティの考え方
クラウド環境におけるセキュリティの考え方

 責任共有モデルによりコンテナ、FaaSでは、IaaSとはセキュリティが実装できるレイヤが異なる。そのためアプリケーションレイヤでのセキュリティ実装が必要であり、開発パイプラインにセキュリティを組み込むDevSecOpsの取り組みが重要となる。

次のページ
コンテナやFaaSでは、アプリケーション自体へのセキュリティ実装を

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
Developers Summit 2022 レポート連載記事一覧

もっと読む

この記事の著者

谷川 耕一(タニカワ コウイチ)

 かつてAI、エキスパートシステムが流行っていたころに、開発エンジニアとしてIT業界に。その後UNIXの専門雑誌の編集者を経て、外資系ソフトウェアベンダーの製品マーケティング、広告、広報などの業務を経験。現在はフリーランスのITジャーナリストとして、クラウド、データベース、ビッグデータ活用などをキー...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/15662 2022/05/26 12:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング