DevSecOps:古いセキュリティ・バグが新しいトリックを実行している

2019年3月27日発行
ピーテル・ダンヒョウ著
ケーススタディ

DevSecOps:古いセキュリティ・バグが新しいトリックを実行している

2019年3月27日発行
ピーテル・ダンヒョウ著
リソースを見る
リソースを見る

原文はこちら DevOps.com.

サイバーセキュリティの世界では、私たちはしばしばハンターのようなものです。私たちの目は地平線にしっかりと釘付けになり、次に流行する脆弱性と、それを阻止するための適切な設計ツール、技術、戦術を探しています。しかし、このような前向きな姿勢は、私たちの全体的なセキュリティ意識を低下させ、身の回りに存在し、攻撃者が喜んで悪用するような根深い危険性に気づかなくなるという意外な効果をもたらします。

私はよく、現代のサイバーセキュリティをケブラー素材の鎧に例えます。ケブラーの一見不思議な特性は、高速度の弾丸やあらゆる種類の現代の強力な武器を防ぐことができます。着用者は無敵であるかのように感じられるかもしれません。しかし、紀元前1000年頃に作られたとされる比較的古い弓矢の武器システムは、その防御を突き破ることができます。また、岩石に次いで世界最古の武器とされる鋭いナイフは、綿のスウェットシャツを切り裂くように簡単にケブラーを切り裂くことができます。さらに、ケブラーは人体を1ミリ単位で保護することはできません。攻撃者がダメージを与えるための隙間を見つけることができれば、それはソフトウェアにおける小さな攻略可能な領域のようなものです。

サイバーセキュリティの分野では、多くの組織が、8年、10年前のシステムの欠陥に対して同様の脆弱性を持っています。これは、現代のコンピュータ用語で言えば、金の時計と年金を受け取る資格があるようなものです。しかし、このような古いシステムの欠陥を無害だと考えているのであれば、将来的にブルースクリーン・オブ・デスを経験することになるでしょう。

退役軍人の弱点

jQueryは、オープンソースのライブラリで、イベント処理、DOMツリーのトラバーサルや操作、アニメーションの生成など、あらゆる作業に役立ち、最も古くから使われているJavaScriptライブラリの一つです。イベント処理からDOMツリーのトラバースや操作、アニメーションの生成まで、あらゆることに役立つオープンソースのリソースです。これは非常に強力で、長年にわたって使用されています。このように確立されたライブラリですから、脆弱性は完全に除去されているのではないかと思われがちです。

悲しいことに、これは事実ではありません。デフォルトでは、jQueryに依存しているほとんどのアプリケーションは、認証のために内部ライブラリの指示を使用します。例えば、Apacheサーバでは、.htaccessファイルをチェックすることになる。Apacheを使用するプログラムを設計している開発者で、Apacheサーバーのアップデートに.htaccessが含まれているかどうかを確認しようと思った人はほとんどいないだろう。結局のところ、長年にわたってセキュリティの基盤となってきた重要なコンポーネントを、なぜApacheが削除するのでしょうか?

奇妙に思えるかもしれませんが、これはまさにApacheがバージョン2.3.9で行ったことです。どうやら、プログラムの実行が必要になるたびに、.htaccess設定ファイルをチェックしなければならないことが、あまりにも物事を遅くしていたようです。これを削除すると、Apache全体のパフォーマンスが向上しましたが、ほとんどの人が知らない脆弱性が生まれました。開発者が自分のアプリケーションが.htaccessファイルに到達できるかどうかをわざわざ確認しなければ、ほとんどのリクエストは精査されることなく単に受け入れられてしまいます。

最近、専門家がその欠陥を発見し、これを使用すると、安全であるはずのシステム上で、権限のないユーザーがシェルやほとんどすべての種類のコードをアップロードして実行することができると指摘しました。これにより、10月にCVE-2018-9206と名付けられた脆弱性の警告が作成されました。しかし、この脆弱性がセキュリティ研究者によって簡単に発見されたということは、このような脆弱性を探すことを唯一の目的としているプロのハッカーたちは、おそらくすでにこの脆弱性を発見しているということを意味しています。結局のところ、この事件の後、宣伝やパッチ、修正が行われたにもかかわらず、その数週間後には、毎週数百万人がダウンロードする人気のNPM libにビットコインを盗むマルウェアが放たれ、同様の大きな影響を与える攻撃が発生しました。

The Butler Did It

jQueryと同様、Jenkinsもオープンソースで提供されており、最も人気のある種類の一つである。サーバントのような名前を持つJenkinsが、オートメーションサーバとして多くの業界の開発チームに利用されているのも納得できる。Jenkinsが正常に機能している場合、それは非常に便利なツールです。しかし、新たに発見された欠陥や、最近発見された実に大規模な暗号採掘作業などから、Jenkinsが悪者のために多くの仕事をしていたことがうかがえます。

最も危険なJenkinsの脆弱性の1つは、CVE-2017-1000353に指定されているJavaデシリアライゼーションと呼ばれるものです。複雑な攻撃ですが、以前から存在していたものです。攻撃者は2つのリクエストを送信する必要があります。最初のものは、ダウンロード用の双方向チャネルを開始しますが、これは最初はサーバーによって拒否されます。しかし、2つ目のリクエストでは、攻撃者が望むあらゆるコマンドを含むペイロードを含むアップロードチャネルが追加され、payload.jarスクリプトが使用されます。2つ目のリクエストが送信されると、パッチが適用されていないJenkinsサーバでは通信が許可されます。

パッチが適用されたサーバであっても、エクスプロイトは存在します。例えば、Jenkins を Windows 環境で実行する場合、デフォルトでは NT AUTHORITY\SYSTEM アカウントを使用してユーザを認証します。これは、SYSTEMにはWindowsサーバ上での完全な権限が与えられているため、危険です。開発者は権限アカウントを変更することができますが、多くの場合変更しません。変更しない理由は、Jenkinsがずっと昔から存在しているので、どんな脆弱性もずっと前にパッチが当てられていると考えているからです。

最近では、ハッカーがこれらのJenkinsの老朽化した脆弱性を利用して、複数のサーバを危険にさらしました。その目的は、脆弱なJenkinsインスタンスを見つけるたびに、暗号化されたマイナープログラムを追加することでした。このマイナーは、常に暗号通貨を探すために貴重なコンピューティングリソースを使用していました。これまでのところ、約10,800枚のMoneroの暗号コインを発見し、その価値は約350万ドルにもなります。

古いものは新しいもの

これらの例では、多くの人が安全だと考えているプラットフォームの脆弱性が、日和見的な攻撃者によって悪用されています。防御側では、セキュリティを意識した開発が行われていないため、ハッカーたちは古い手口に新たな息吹を吹き込んでいます。そして、古い脆弱性を利用した新たな成功例があるにもかかわらず、多くの組織はこの悪循環を止めるための計画を持っていません。

古いものだからといって、それが無害であるとは限りません。また、一般的なライブラリやリソースが何年も前から存在しているからといって、それらが完全に安全であるとは限りません(例えば、現在のOWASPトップ10の第9位は、「既知の脆弱性を持つコンポーネントの使用」への対応に充てられています)。勤勉さと継続的なセキュリティトレーニングがあってこそ、地平線上に忍び寄る危険な脅威だけでなく、すでに自分の家の裏庭に潜んでいる危険な脅威からも身を守ることができるのです。

リソースを見る
リソースを見る

著者

ピーテル・ダンヒユー

Pieter Danhieuxは、セキュリティコンサルタントとして12年以上の経験を持ち、SANSの主席講師として8年間、組織、システム、個人をターゲットにしてセキュリティの弱点を評価する方法に関する攻撃的なテクニックを教えている、世界的に有名なセキュリティエキスパートです。2016年には、オーストラリアで最もクールな技術者の一人として認められ(Business Insider)、Cyber Security Professional of the Yearを受賞(AISA - Australian Information Security Association)、GSE、CISSP、GCIH、GCFA、GSEC、GPEN、GWAPT、GCIA認定を保有している。

もっと知りたい?

セキュアコーディングに関する最新の知見をブログでご紹介しています。

当社の豊富なリソースライブラリは、安全なコーディングアップスキルに対する人間的なアプローチを強化することを目的としています。

ブログを見る
もっと知りたい?

開発者主導のセキュリティに関する最新の研究成果を入手する

ホワイトペーパーからウェビナーまで、開発者主導のセキュアコーディングを始めるために役立つリソースが満載のリソースライブラリです。今すぐご覧ください。

リソース・ハブ

DevSecOps:古いセキュリティ・バグが新しいトリックを実行している

2019年3月27日発行
Pieter Danhieux著

原文はこちら DevOps.com.

サイバーセキュリティの世界では、私たちはしばしばハンターのようなものです。私たちの目は地平線にしっかりと釘付けになり、次に流行する脆弱性と、それを阻止するための適切な設計ツール、技術、戦術を探しています。しかし、このような前向きな姿勢は、私たちの全体的なセキュリティ意識を低下させ、身の回りに存在し、攻撃者が喜んで悪用するような根深い危険性に気づかなくなるという意外な効果をもたらします。

私はよく、現代のサイバーセキュリティをケブラー素材の鎧に例えます。ケブラーの一見不思議な特性は、高速度の弾丸やあらゆる種類の現代の強力な武器を防ぐことができます。着用者は無敵であるかのように感じられるかもしれません。しかし、紀元前1000年頃に作られたとされる比較的古い弓矢の武器システムは、その防御を突き破ることができます。また、岩石に次いで世界最古の武器とされる鋭いナイフは、綿のスウェットシャツを切り裂くように簡単にケブラーを切り裂くことができます。さらに、ケブラーは人体を1ミリ単位で保護することはできません。攻撃者がダメージを与えるための隙間を見つけることができれば、それはソフトウェアにおける小さな攻略可能な領域のようなものです。

サイバーセキュリティの分野では、多くの組織が、8年、10年前のシステムの欠陥に対して同様の脆弱性を持っています。これは、現代のコンピュータ用語で言えば、金の時計と年金を受け取る資格があるようなものです。しかし、このような古いシステムの欠陥を無害だと考えているのであれば、将来的にブルースクリーン・オブ・デスを経験することになるでしょう。

退役軍人の弱点

jQueryは、オープンソースのライブラリで、イベント処理、DOMツリーのトラバーサルや操作、アニメーションの生成など、あらゆる作業に役立ち、最も古くから使われているJavaScriptライブラリの一つです。イベント処理からDOMツリーのトラバースや操作、アニメーションの生成まで、あらゆることに役立つオープンソースのリソースです。これは非常に強力で、長年にわたって使用されています。このように確立されたライブラリですから、脆弱性は完全に除去されているのではないかと思われがちです。

悲しいことに、これは事実ではありません。デフォルトでは、jQueryに依存しているほとんどのアプリケーションは、認証のために内部ライブラリの指示を使用します。例えば、Apacheサーバでは、.htaccessファイルをチェックすることになる。Apacheを使用するプログラムを設計している開発者で、Apacheサーバーのアップデートに.htaccessが含まれているかどうかを確認しようと思った人はほとんどいないだろう。結局のところ、長年にわたってセキュリティの基盤となってきた重要なコンポーネントを、なぜApacheが削除するのでしょうか?

奇妙に思えるかもしれませんが、これはまさにApacheがバージョン2.3.9で行ったことです。どうやら、プログラムの実行が必要になるたびに、.htaccess設定ファイルをチェックしなければならないことが、あまりにも物事を遅くしていたようです。これを削除すると、Apache全体のパフォーマンスが向上しましたが、ほとんどの人が知らない脆弱性が生まれました。開発者が自分のアプリケーションが.htaccessファイルに到達できるかどうかをわざわざ確認しなければ、ほとんどのリクエストは精査されることなく単に受け入れられてしまいます。

最近、専門家がその欠陥を発見し、これを使用すると、安全であるはずのシステム上で、権限のないユーザーがシェルやほとんどすべての種類のコードをアップロードして実行することができると指摘しました。これにより、10月にCVE-2018-9206と名付けられた脆弱性の警告が作成されました。しかし、この脆弱性がセキュリティ研究者によって簡単に発見されたということは、このような脆弱性を探すことを唯一の目的としているプロのハッカーたちは、おそらくすでにこの脆弱性を発見しているということを意味しています。結局のところ、この事件の後、宣伝やパッチ、修正が行われたにもかかわらず、その数週間後には、毎週数百万人がダウンロードする人気のNPM libにビットコインを盗むマルウェアが放たれ、同様の大きな影響を与える攻撃が発生しました。

The Butler Did It

jQueryと同様、Jenkinsもオープンソースで提供されており、最も人気のある種類の一つである。サーバントのような名前を持つJenkinsが、オートメーションサーバとして多くの業界の開発チームに利用されているのも納得できる。Jenkinsが正常に機能している場合、それは非常に便利なツールです。しかし、新たに発見された欠陥や、最近発見された実に大規模な暗号採掘作業などから、Jenkinsが悪者のために多くの仕事をしていたことがうかがえます。

最も危険なJenkinsの脆弱性の1つは、CVE-2017-1000353に指定されているJavaデシリアライゼーションと呼ばれるものです。複雑な攻撃ですが、以前から存在していたものです。攻撃者は2つのリクエストを送信する必要があります。最初のものは、ダウンロード用の双方向チャネルを開始しますが、これは最初はサーバーによって拒否されます。しかし、2つ目のリクエストでは、攻撃者が望むあらゆるコマンドを含むペイロードを含むアップロードチャネルが追加され、payload.jarスクリプトが使用されます。2つ目のリクエストが送信されると、パッチが適用されていないJenkinsサーバでは通信が許可されます。

パッチが適用されたサーバであっても、エクスプロイトは存在します。例えば、Jenkins を Windows 環境で実行する場合、デフォルトでは NT AUTHORITY\SYSTEM アカウントを使用してユーザを認証します。これは、SYSTEMにはWindowsサーバ上での完全な権限が与えられているため、危険です。開発者は権限アカウントを変更することができますが、多くの場合変更しません。変更しない理由は、Jenkinsがずっと昔から存在しているので、どんな脆弱性もずっと前にパッチが当てられていると考えているからです。

最近では、ハッカーがこれらのJenkinsの老朽化した脆弱性を利用して、複数のサーバを危険にさらしました。その目的は、脆弱なJenkinsインスタンスを見つけるたびに、暗号化されたマイナープログラムを追加することでした。このマイナーは、常に暗号通貨を探すために貴重なコンピューティングリソースを使用していました。これまでのところ、約10,800枚のMoneroの暗号コインを発見し、その価値は約350万ドルにもなります。

古いものは新しいもの

これらの例では、多くの人が安全だと考えているプラットフォームの脆弱性が、日和見的な攻撃者によって悪用されています。防御側では、セキュリティを意識した開発が行われていないため、ハッカーたちは古い手口に新たな息吹を吹き込んでいます。そして、古い脆弱性を利用した新たな成功例があるにもかかわらず、多くの組織はこの悪循環を止めるための計画を持っていません。

古いものだからといって、それが無害であるとは限りません。また、一般的なライブラリやリソースが何年も前から存在しているからといって、それらが完全に安全であるとは限りません(例えば、現在のOWASPトップ10の第9位は、「既知の脆弱性を持つコンポーネントの使用」への対応に充てられています)。勤勉さと継続的なセキュリティトレーニングがあってこそ、地平線上に忍び寄る危険な脅威だけでなく、すでに自分の家の裏庭に潜んでいる危険な脅威からも身を守ることができるのです。

弊社製品や関連するセキュアコーディングのトピックに関する情報をお送りする許可をお願いします。当社は、お客様の個人情報を細心の注意を払って取り扱い、マーケティング目的で他社に販売することは決してありません。

送信
フォームを送信するには、「Analytics」のCookieを有効にしてください。完了したら、再度無効にしてください。