連載
» 2019年05月07日 05時00分 公開

セキュリティ・アディッショナルタイム(31):君のコンパイラや開発環境は侵害されていないか?――開発者が「サプライチェーン攻撃」に加担しないためにすべきこと

セキュアな開発やコードスキャンに取り組むだけでは防ぎ切れないリスクとして「サプライチェーン攻撃」がある。Kaspersky Labは、2019年4月9〜10日に開催した「Security Analyst Summit 2019」で、その実態を紹介した。

[高橋睦美,@IT]

 あらゆる企業にとってソフトウェアが競争力の源泉になる時代が到来しつつある。顧客のニーズに応えるサービスを素早く開発し、リリースし、改良していけるかどうかがビジネスの行方を左右するが、もう一つ重要な観点がある。それが、ソフトウェアのセキュリティだ。自社が提供するソフトウェアにせよ、自社が採用して活用するソフトウェアにせよ、そこに深刻な脆弱(ぜいじゃく)性が含まれ、サイバー攻撃に悪用されることがあれば影響は計り知れない。

 こうした事態を避けるには、企画、設計といった開発プロセスの早い段階からセキュリティを考慮し、脆弱性チェックを組み入れながら開発を進めるアプローチが有効だ。そこで今、「シフトレフト」「セキュアコーディング」といった動きが開発者コミュニティーでも徐々に広がりつつあり、リリース後に深刻な脆弱性が明らかになって慌てて修正する事態を防ごうと考える企業が増え始めた。

 だが残念ながら、セキュアな開発やコードスキャンに取り組むだけでは防ぎ切れないリスクもある。それが「サプライチェーン攻撃」だ。ロシアのKaspersky Labが2019年4月9〜10日に開催した「Security Analyst Summit 2019」では、その実態が紹介された。

正規のプロセスで調達したハードやソフトに「バックドア」が?

 日本でサプライチェーン攻撃というと、自社のみならずパートナーや委託先など、製造や商流に関わる複数の組織の中でもセキュリティ対策が手薄なところが攻撃を受け、情報漏えいなどの事故につながる事態を指すことが多いようだ。情報処理推進機構(IPA)がまとめている「十大脅威」でも、組織の脅威の第4位に「サプライチェーンの弱点を悪用した攻撃の高まり」が挙げられており、業務委託先も含めたガバナンス、セキュリティ対策を徹底するといった対策が示されている(参考)。

 一方、Security Analyst Summit 2019で取り上げられた「サプライチェーン攻撃」は、もう少し狭義のイメージだ。企業や組織が外部のベンダーから調達して利用しているハードウェアやソフトウェアに製造段階でバックドアが作り込まれ、攻撃者に悪用されるケースを指す。

 ハードウェア製品ならば、複数の企業にまたがる製造/流通過程のどこかでチップに細工を施したり、基盤に「余計なもの」を埋め込んだりするといった方法がある。ソフトウェア製品ならば、不正なコードを埋め込んだアプリやアップデートを配布するといった具合だ。導入する企業としては、マルウェアならばともかく、よもや正規のプロセスで調達、インストールしたソリューションに問題があるとは思いもよらず、発見が遅れることも多い。

 Kaspersky Labのグローバル調査分析チーム「GReAT」はカンファレンス開催に先立って、そんなサプライチェーン攻撃の一つ「ShadowHammer」について報告していたが、講演ではそのさらに先の動きが紹介された。

ASUSのケースだけではない、他にも発見されたサプライチェーン攻撃

 ShadowHammerについては、台湾のハードウェアメーカー、ASUSTeK Computer(ASUS)のコンピュータにプリインストールされているユーティリティーツール「ASUS Live Update Utility」が攻撃者に乗っ取られた事例がある。この結果、2018年6〜11月に、のべ5万7000人以上のユーザーに対し、正規アップデートに見せ掛けてマルウェアがインストールされてしまった。一連の攻撃では、窃取された正規の証明書を用いてソフトウェアにコードサイニングが施され、正規のサーバから配信されていたこともあり、ユーザーが気付くのは難しかったと思われる。ASUSは2019年3月26日、この問題を修正したアップデートを配布して対処した。

 これだけでも深刻な問題だが、GReATのリサーチャーらは、並行して展開されている複数のサプライチェーン攻撃にも着目しているという。

GReATの調査によると、並行して複数のサプライチェーン攻撃が展開されているという GReATの調査によると、並行して複数のサプライチェーン攻撃が展開されているという

 まずは2017年に明らかになった「ShadowPad」だ。2017年9月、AvastのWindows向けユーティリティー「CCleaner」にバックドアが混入され、マルウェアに感染する仕掛けになっていたことが明らかになった。またその前の2017年8月には、韓国のNetSarang Computerが提供するサーバ管理ソフトウェアにもバックドアが仕掛けられ、マルウェアを通じて外部に情報が送信されていたことが判明している。

 Kaspersky Labの分析によると、これらShadowPadで用いられた攻撃ツールや手法には、中国をベースとする攻撃者グループ「Winnti」(別名:Barium)や、彼らが使うマルウェア「PlugX」との関連が見られるという。

 だが、GReATのリサーチャーであるVitaly Kamluk氏によると「これだけで終わりではない」という。Kaspersky LabがShadowHammerについて発表したわずか1週間後、まだ名前はないが、別のサプライチェーン攻撃を発見。この攻撃では韓国のゲーム企業3社が被害に遭い、ASUSのケースに似たバックドアが仕込まれた。この結果、ShadowHammerのケースよりもはるかに多い約9万2000台が影響を受けたという。

韓国のゲーム企業3社をターゲットにしたサプライチェーン攻撃では、ASUSのケースよりはるかに多い約9万2000台が被害に遭った 韓国のゲーム企業3社をターゲットにしたサプライチェーン攻撃では、ASUSのケースよりはるかに多い約9万2000台が被害に遭った

※追記:Kaspersky Labは2019年4月23日にブログを更新し、この新たなサプライチェーン攻撃の足掛かりとして自社のバイナリにマルウェアを注入されたのは、Electronics Extreme、Innovative Extremist、Zepettoの3社であると明らかにした。またこの結果、韓国の別のビデオゲーム企業とコングロマリット持株会社、製薬会社の3社が被害に遭い、ユーザー名やOSのバージョンなど、システムに関する情報を収集するマルウェアが送り込まれたという。

 ただ、違いもある。ASUSのケースで用いられたバックドアは2015年にコンパイルされたものであることが判明した。これに対し、新しいサプライチェーン攻撃では最近コンパイルされたバックドアが利用されていた。またASUSのケースでは、特定のMACアドレスを持った端末が標的となり、MACアドレスに応じて異なるシェルコードを含むマルウェアが送り込まれていたが、「新しい攻撃では、特定の端末を狙うわけではない。万遍なくターゲットにしており、その点でもASUSのときとは異なる」(Kamluk氏)。

 そして、「いまや開発者が攻撃のターゲットになっている。ソースコードをコンパイルするとき、もしコンパイラが開発者をだますようなことがあれば大問題だ」と結論付けた。

C言語の親が言及していた「コンパイラ」に潜むリスク

 双子のエンジニアとして活躍する、Kaspersky Labのセキュリティアナリスト、Noushin Shabab氏とPS&C GroupのNegar Shabab氏も「In a search for the poisonous seed」と題するセッションでサプライチェーン攻撃の解析結果を紹介した。

 Noushin Shabab氏はまず「いまや、全てのアプリケーションが信頼できるかというとそうではない。では、どうすれば信頼できるといえるだろうか。信頼できるソースからダウンロードするだけで十分といえるだろうか」と会場に問い掛けた。

 たとえ信頼できるところからソースコードをダウンロードし、コードの内容をチェックしてからコンパイルしたとしても、もしコンパイラ自身に問題があれば、生成されたバイナリに悪意あるコードやバックドアなどが挿入されてしまう恐れがある。

Noushin Shabab氏とNegar Shabab氏は、正規のソースコードに悪意あるライブラリがリンクされてしまう仕掛けを説明した Noushin Shabab氏とNegar Shabab氏は、正規のソースコードに悪意あるライブラリがリンクされてしまう仕掛けを説明した

 そのコンセプトを初めて示したのが、C言語の生みの親であるケン・トンプソン氏だ。同氏はチューリング賞を受賞した際の講演で、「トンプソン・ハック」と呼ばれる、バックドアを仕込むコンパイラの仕組みについて言及した。両氏はこうした過去のいきさつを説明した上で、「ソースコードだけではなく、コンパイラ自身も、悪意あるものを注入しないクリーンなものでなければいけない」と述べた。

 一方で、悪意あるコンパイラ、悪意ある開発環境が使われてしまったケースが発生している。一例が、2015年9月に明らかになった海賊版開発ツール「XcodeGhost」だ。Appleが提供する開発ツール「Xcode」に改ざんを加えたもので、XcodeGhostで開発されたアプリには、開発者も知らないうちに不正なモジュールが追加されてしまう。結果として、それと知らずにインストールしたユーザーや端末の情報を収集するようになっていた。

 またShadowPadにしても、コンパイル時に不正なライブラリへのリンクが張られ、それと知らずに実行すると悪意あるDLLファイルが呼び出されて不正なコードが実行される仕組みになっていたという。

 「XcodeGhostやCCleaner、ShadowPadといったサプライチェーン攻撃によって、たとえソースコードが正しくても、開発環境やコンパイラの完全性が損なわれていると攻撃の影響を受けてしまうし、盗み取られた正規の証明書で署名されてしまうと警告は表示されない。開発ライフサイクル全体を安全に保つことが重要だ」(Noushin Shabab氏)

正規の署名も悪用するサプライチェーン攻撃、モニタリングによる検出が対策の一つに

 Kaspersky Labでは2019年のサイバー脅威予測の中で、「サプライチェーン攻撃の継続」を挙げている。Kamluk氏はこの予測が当たりつつあるとし、次のように述べた。

 「開発のサプライチェーンを狙うトレンドは以前からあったが、頻度は1年に1件程度で、CCleanerのように企業向け管理ツールのコードが侵害されるケースが多かった。だが2019年は、こうした大手ベンダーだけではなく、より小規模な企業もサプライチェーン攻撃に悪用されるようになっている」(Kamluk氏)

「ハンマー」を手にShadowHammerをはじめとするサプライチェーン攻撃の動向を説明したGReATのリサーチャー、Vitaly Kamluk氏 「ハンマー」を手にShadowHammerをはじめとするサプライチェーン攻撃の動向を説明したGReATのリサーチャー、Vitaly Kamluk氏

 その一例が、韓国のゲーム企業を狙った最新の攻撃だ。「ターゲットの変化は、攻撃目的の変化も示唆している。サプライチェーン攻撃は、特定のターゲットを狙ったスパイ行為から、金銭目的に変化しつつある可能性がある。知的財産やオリジナルのソースコード、アクセスキーなどを盗み取ってコピーし、海賊版で金銭を稼ぐといった具合に、金銭的な動機に動かされているのではないか」(Kamluk氏)

 またNoushin Shabab氏は、攻撃者がサプライチェーン攻撃に注目する理由として、次のように述べる。「『ダウンロードしてきたソフトウェアには悪意あるものは含まれていないはず』という、無意識の信頼が悪用されている。また、少数のソフトウェアを侵害するだけで、より多くのカスタマー、より多くのシステムにトロイの木馬入りのソフトウェアを簡単に配布し、感染を広げられることも理由の一つだ」

 ASUSのソフトウェアが侵害されたShadowHammerでは、何らかの手段で、ASUSに発行されていた正規の証明書を用いて、バックドア入りのソフトウェアにソフトウェア署名が施されていた。ここでも、ソフトウェア署名に対する「信頼」が悪用されたといえるだろう。攻撃者がどうやって証明書を詐取したかの手口は不明だが、署名を検証してもアラートが表示されない以上、悪意あるコードが含まれていることを見抜くのは難しい。

 ソフトウェアを利用する企業側にできる一つの手段として、「モニタリング」があるとNoushin Shabab氏は話す。「以前ShadowPadの被害に遭った企業の1社は金融機関で、ネットワークトラフィックのモニタリングや分析、監査の体制を整えていた。その中で不審なDNSリクエストに気付き、その発信元がソフトウェアパッケージであることを突き止めることができた。自社の環境やシステム構成、ネットワークを正確に知り、どんなアプリを利用しているかを把握し、今何が起きているかを知ることで、疑わしい動きに気付くことができるだろう。場合によってはホワイトリスト式の対策も手助けになる」

 またKamluk氏は、サプライチェーン攻撃という手法があることを認識し、何かおかしい兆候、いつもと異なる振る舞いがあれば、これまで前提としてきたソフトウェアへの「信頼」を疑うことも必要だとした。たとえデジタル署名が施されていても、場合によってはバイナリそのものを疑い、チェックすることも手段の一つだという。

高まるプレッシャーの中、開発者が講じるべき対策は?

 では、ソフトウェアを提供する側、開発する側はサプライチェーン攻撃にどのように備え、どのように利用者を侵害から守るべきだろうか。

 この問いにNoushin Shabab氏は、「この攻撃は、どれか特定のプログラミング言語が危険というわけではない。サプライチェーン攻撃は開発環境やコンパイラを侵害した上で、正規のソースコードと結び付いて行われるため、自分たちが使っている開発環境の完全性が保たれているかどうかをチェックし、点検することが重要だ」と回答した。

 ゲーム開発など動きの速い業界では、最新の機能をより早く使うために新たなプラグインなどを導入しがちだが、そうした部分でも配慮を忘れないことが大切だ。また、出どころの不確かなものではなく、正規の開発ツールを入手することもポイントだという。

 アプリケーションセキュリティに詳しいNegar Shabab氏は、「GitHubで公開されているオープンソースソフトウェアを使うな、と言っているわけではない。オープンソースソフトウェアは非常に素晴らしいものであり、積極的に利用すべきだ。ただ、安易に信頼すべきではない。何を使うかを吟味し、きちんと精査した上で活用すべきだ」と述べた。

「ソースコードそのものだけではなく、開発環境やコンパイラにも目を向けなければならない」と述べたNoushin Shabab氏とNegar Shabab氏。「今回は2人の見分けが付かないような格好をしてみた」 「ソースコードそのものだけではなく、開発環境やコンパイラにも目を向けなければならない」と述べたNoushin Shabab氏とNegar Shabab氏。「今回は2人の見分けが付かないような格好をしてみた」

 Kamluk氏も同様に「開発者は、セキュアコーディングを実施しているかということだけではなく、使っている開発環境は信頼できるソースから入手したものか、入手する際には(中間者攻撃のようなリスクのない)安全な状態でデリバリーされたか、そして導入した後も、ライブラリやコンポーネントも含め、開発環境の完全性が保たれているかを自身に問うべきだ」と述べている。

 なお、開発環境やコンパイラが侵害される手口は不明だが、フィッシングによってアカウント情報を盗み取られたり、別のマルウェアを用いて情報が詐取されたりする可能性がある。開発者は「攻撃者のターゲットになっている」という認識を強化し、エンドポイント保護や認証の強化をはじめとする基本的な対策を講じることも手助けになるという。

 デジタルトランスフォーメーションが叫ばれる中、企業は激しい競争にさらされ、開発者にかかるプレッシャーも増している。こうした状況では、どうしてもサービスやプロダクトを市場に素早く出すことに頭が行き、セキュリティの優先度が下がりがちだ。

 「だが、ソフトウェアエンジニアやプログラマーはいまやサプライチェーン攻撃のターゲットになっている。ASUSのような大手企業ですら侵害されたのだから、スタートアップはなおさらターゲットになりやすい。開発環境のセキュリティ確保に予算を投じるだけではなく、ナレッジを広げ、完全性をチェックしていくことが重要だ」(Kamluk氏)

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。