システム防御の守備範囲?
「セキュリティってコロコロ変わる」とか「聞くたびに話が違う」という指摘、確かにあります。なぜそんなことになるのか。セキュリティの話以前に、ものづくりの変化に注目してみましょう。
LAMPスタックのように、モノリシックなアーキテクチャーでの構築は、エンジニアはフルスタックの視点で気を配る必要がありました。仮想化されていても、デフォルトのままで動かないからいじったりして…というところも含めてシステム構築作業、プログラミング作業の一貫、という流れがあったと思うんです。ですから、セキュリティについての知識のレベルが、サーバとアプリケーションの両方に影響しました。つまり、エンジニアの守備範囲が広く、セキュリティへの責任もフルスタックで存在した、ということです。
そこから時代が進み、分担、分業が進みます。API連携、マイクロサービスといった疎結合のシステムが組み合わされてシステムが成り立つようになりました。
つまり、リスクの高い、たとえば決済、物流などは、ECサイトや銀行のサイト、証券といったところで使われるようになってきました。大事なものについてはココに投げて、それのレスポンスでやりとりしてください、…などと、構造が変わっていきました。今でも一部同様のアーキテクチャーがあるかと思いますが。
これはインターネットの進化に伴って、作り方も使う技術も変わってきたということです。みなさんも手に馴染んだツールが変わってきたことを認識されてらっしゃるかと思います。
それと同時に、セキュリティのあり方も変わってきます。どの部分が攻撃されるのか? どの部分が邪魔されたらSingle Point of Failure(急所)になるのか?などが変わってきました。
コロナ禍で進んだものもあると思いますが、いま、Cloud Nativeであるがゆえに起きている出来事があります。たとえば、利用しているサービスごとにそれぞれ攻撃され、連携しているシステムが影響を受けるということです。
そうすると、システムの成立要件が複雑になります。ひとりのエンジニアで守備できる範囲も限られてきます。何が不安で心配なことなんだっけ?というところも変わってくる。作り方が変わると、確認の仕方も変わる ーとも言えます。Monolithicな時代に成り立っていた防御の考え方は、通じなくなってきました。
攻撃サイドは?
一方、攻撃サイドは、こうした情勢も変化も研究しつくしているでしょうか。
以下に、EU政府のファンドしているENISAという研究機関が、毎年Threat Landscape(脅威の状況)を発表しているものを引用しました。
これを見ると、システムを悪用したり、システムを使っている人に対する攻撃の手口がたくさんあること、また、毎年、少しずつ順位が変わっていることにも気が付きます。
トップクラスの攻撃手法には、Webの仕組みを利用した攻撃、Webアプリケーションの攻撃、ID盗難などがあります。改ざん、システム停止、情報窃取(せっしゅ)など、セキュリティを脅かしつつ確実にシステムを意のままにあやつり、技術的リソースとして乗っ取ったり、経済的な収益を得たりする手立てが列挙されていますね。
こうした手口を使っているのは、単に趣味やいやがらせで個人的にハッキング行為をする個人や少人数の集団ではなく、もっと組織された集団や国家のサポートを得る軍隊の一部だったりもします。
システムを便利に作れるようになっても、手放しで喜ぶことができません。システムは意図をもって脅威に晒されているわけです。
システムづくりでは、どうすれば良いか。
ここで、ものづくりの側に立ち返り、システム側のほうで生じる問題の、最近の傾向を少し見てみましょう。
システムをやられた結果大騒ぎになっています。インパクトもものすごいし、それなりに被害を受けている人たちや会社もある、母体のビジネスが立ち行かなくなるということも当然ながらあります。インシデントによって、被害のありさまはさまざまです。
しかし、ユーザー、データ、そしてプラットフォームがキモです。
まず、ユーザーの認証、そして認可です。攻撃の目的は、すでに存在するユーザに”なりすます” ことで、データにアクセスします。これが暗号化されていなかったり、あるいは余計なデータをたくさん含んでいると、窃取する側の効率が上がってしまいます。また簡単に破壊できると、これもシステムに悪影響が大きく及びます。さらに、ミドルウェアや、はたまたクラウドサービスなど、そのユーザーとデータが配置されているプラットフォームを、設定の不備などを突いて上手く乗っ取ると、システム全体を掌握できてしまいます。
たとえ小さなサービスでも、他の大きなサービスがそれに依存しているかもしれませんし、また、システムそのものが悪用価値がなくても、インターネットに接続されているリソースを乗っ取ると、それは彼らの攻撃のためのリソースの拡大につながります。インターネットに接続されているサービスは、重要度、あるいは有名かどうかにかかわらず、高いリスクにさらされていると考えるべきでしょう。もっとも、重要なサービスにはより標的になりやすく、強い攻撃を受けるリスクがある、ということも無視できませんが。
どんなものづくりをする場合でも、皆さんはこうした危険に無防備である必要はないのです。
「アプリケーションを作るときは、ユーザ、データ、プラットフォームのそれぞれの仕組みに、事前に対策を作り込んでいくこと」ーこれがスタートポイント、です。