Snykの 年次レポート 「State of Open Source Security 2019」へ ようこそ。 本レポートは 複数の 記事に 分けて お届けします。
これらの 情報を まとめた、 手作りの 素敵な PDFレポートも ダウンロードできます。 さらに 詳しい 内容も 掲載しています。
「State of Open Source Security 2019」 レポートを ダウンロード
正規表現によるサービス拒否(ReDoS) Node.jsランタイムには 多くの 強みが ありますが、 その 一つである シングルスレッドの イベントループは、 正しく 使わなければ 最大の 弱点にも なり得ます。 これは 思っている 以上に 頻繁に 起きています。
正規表現に よる サービス拒否 (ReDoS) 攻撃は、 一部の 正規表現パターンが 引き起こす、 最悪の ケースで 計算量が 非線形に 増大する 脆弱性を 悪用します。 シングルスレッドの ランタイムでは 深刻な 影響を もたらす 可能性が あり、 Node.jsは この 種の 脆弱性の 影響を 特に 受けやすいのです。
過去 3年間で 公表された ReDoS脆弱性は 増加傾向に あり、 2018年だけで 143%増加しました。
XSS脆弱性 クロスサイトスクリプティング (XSS) 攻撃 は、 Webアプリケーションに とって 長年増加し続ける 課題です。 Snykが 監視している すべての エコシステムで、 201 8年に XSS脆弱性が 急増する 傾向が 見られました。
OWASPが 15年以上に わたって 主要な 懸念事項と して 挙げているにも かかわらず、 オープンソースライブラリの XSS脆弱性は 増加し続けている
これらの エコシステムの 中で 最も 多くの XSS脆弱性が 確認されたのは npmで、 合計225件が 公表されました。 次いで Maven Central Repositoryが 167件、 PyPIが 163件でした。 201 8年に 最も 多くの XSS脆弱性が 公表されたのは PHP Packagistエコシステムで 56件、 次いで npmが 54件、 Maven Centralが 29件でした。
パストラバーサル パスおよびディレクトリトラバーサルの 脆弱性は npmエコシステムで 突出しており、 201 7年に 146件、 201 8年に 143件と、 いずれも 過去最多の 報告数と なりました。 他の エコシステムでは 大幅に 少なく、 これは 喜ばしい ことです。
その 理由と して、 本番環境と 開発環境の 両方で Node.jsを 使って 構築された 静的・動的Webサーバーが 数多く 存在し、 こうした 脆弱性が 見つかる 可能性の ある パッケージも 多いことが 考えられます。
SQLインジェクション脆弱性 過去1 0年に わたり OWASP Top 10に 一貫して 取り上げられてきた、 もう 一つの 一般的な 攻撃手法が CWE-89です。 これは 一般に SQLインジェクション と して 知られています。
過去 3年間を 調べると、 レビュー対象とした 主要3エコシステムでは、 それぞれ異なる 年に ピークを 迎えています。 201 6年と 201 7年は Mavenの ライブラリで 公表された SQLインジェクション脆弱性が 最多と なり、 201 8年には PHP Packagistの ライブラリで 最多と なりました。
機密情報の漏えい Maven Centralと PHP Packagistの レジストリを 調べた ところ、 情報露出に 関連する 脆弱性が 最も 多く、 どちらの エコシステムも 201 8年に ピークを 迎えていました。
情報露出は 意図せず 起きることが よく あります。 プログラムや システムが、 環境変数の 名前や 値など、 機密性の 高い 情報を 開示してしまう 場合に 発生します。 また、 URLパラメーターに 機密データを 含めるなど、 「設計上」の 理由で 起きることもあります。
Maven Centralレジストリに おける 情報露出脆弱性の 例と して、 apache spark 、jenkins core 、keyclock-saml-core の 各パッケージが あります。 たとえば Jenkinsの ssh-agent CI プラグインでは、 Read権限を 持つ ユーザーが ビルドログを 閲覧すると SSH秘密鍵が 漏えいする 状態でした。
PyPIレジストリにも、 情報露出脆弱性が 見つかった ライブラリが 多数あります。 たとえば django パッケージでは、 View権限しか 持たない 管理者ユーザーに ユーザーの パスワードハッシュが 表示されていました。 また、 djangorestframework-api-key パッケージは APIキーを 平文で 保存していました。
機密情報の平文送信 最後に、 npmエコシステム特有の、 触れておくべき 脆弱性が あります。 CWE-319、 別名 「機密情報の 平文送信」です。 これは 安全でない プロトコルを 介して リソースに アクセスする 脆弱性です。 201 6年に パッケージで 新たに 報告された 脆弱性は 44件でしたが、 201 7年には 合計110パッケージに 増え、 250%の 増加と なりました。
「エコシステムの セキュリティの 実態と 世間の 認識は、 大きく 異なることが よく あります。 JavaScriptは 型付けが ないため、 型の 操作に よって 安全でない 言語だと いう イメージが 広まっています。 しかし、 ここ 数年に npmモジュールで 発見された 脆弱性の 数は、 Maven Centralで 発見された 数を 依然と して 下回っています。 一方で、 Node.jsが 今も シングルスレッドである ために、 深刻化する 脆弱性も あります。 Node.jsの 世界でより 一般的な ReDoS (または その 他の CPU枯渇型DoS)は その 一例です。 こうした リスクを 軽減できるよう、 Worker Threadsが 近いうちに Node.jsで 利用可能に なる ことを 期待しています。 ここ 数年、 Node.jsの セキュリティコミュニティは ますます 活発に なっています。 今後も エコシステムの 安全性を 高める ため、 努力を 続けていけるでしょう。」
注目トピック:悪意のあるパッケージ 悪意の ある パッケージに ついては、 悪意の ある Dockerコンテナや、 さまざまな エコシステムの 公開レジストリに 登録された 悪意の ある パッケージなど、 いろいろな 文脈で 耳に したことがあるでしょう。 開発者が マルウェアの 配布経路と して 悪用された 事例も、 Delphiコンパイラに 感染した Inducマルウェアや、 iOSおよびOS Xの 開発者を 標的に した XCodeGhostなど、 これまでに 取り上げてきました。
ただし、 悪意の ある パッケージは すべて 同じ 種類ではありません。 エコシステムの レジストリに ついては、 大きく 次のように 分類できます。
人気の 高い パッケージに よく 似た 名前を 使う、 タイポスクワッティング攻撃
メンテナーの CIアカウントや レジストリアカウントが 侵害されて 悪意の ある バージョンが 公開される ケース、 または プロジェクトの 依存関係リストに 悪意の ある パッケージが 含まれる ケース
ソーシャルエンジニアリングに よって、 悪意の ある パッケージ (または 依存関係に 追加された 後に 悪意を 持つ パッケージ)を プロジェクトの 依存関係リストに 含める ケース
201 8年には、 悪意の ある パッケージの 被害が 他の レジストリより 多い ことで 知られる npmエコシステムで、 これら すべての 種類が 確認されました。 201 8年12月に 話題に なった event-streamパッケージは、 一見 無害な オープンソースへの 貢献を 装った 手口 で 配布された、 悪意の ある 依存関係を 利用していました。
この 攻撃に よって、 わずか 2か月で 悪意の ある パッケージが 驚異の 800 万回ダウンロードされました。 201 8年の 別の 事例と して、 メンテナーの アカウントが 侵害された ESLint-scopeパッケージが あります。 また、 201 8年には npmレジストリで 悪意の ある パッケージの タイポスクワッティング攻撃が 合計11件 確認されました。
201 8年、 悪意の ある パッケージの ダウンロード数が 過去最多の 800万回を 記録。 npmと PyPIでは 25件の タイポスクワッティング攻撃が 発生
過去に 見られた 典型的な タイポスクワッティングに 加え、 ESLint-scope攻撃など、 前年よりも 巧妙な npmエコシステムへの 攻撃も 確認されました。 特に event-streamの インシデントは 高度な 技術と 標的型攻撃の 性質を 示しており、 これまで エコシステムで 見られた 悪意ある 攻撃の 中でも、 際立っていました。
npmレジストリとは 対照的に、 悪意の ある パッケージが 確認された 他の レジストリは RubyGemsと Pythonのみでした。 RubyGemsでは 201 8年に 1件、 Pythonでは 201 7年に 10件、 201 8年に 13件の 悪意の ある パッケージが 見つかりました。
続きを 読む :
CTFを 始めよう オンデマンドの バーチャル入門ワークショップを 視聴して、 CTFの 課題の 解き方を 学びましょう。