.NETの依存関係の健全性を把握していますか?
Hayley Denbraver
2019年5月3日
0 分で読めます今年初め、SnykはGitリポジトリ内の.NETプロジェクトとの連携に対応しました。そして今週、Microsoft Azureのサポートを新たにリリースしました。
この記事では、現在最も一般的な脆弱性を含み、Snykのプロジェクトスキャンで最も頻繁に検出されるライブラリを紹介します。現在、ユーザーに最も大きな影響を与えている「ライブラリ上位10件」を明らかにし、詳しく見ていきます。まず上位10件の特徴を簡単に確認した後、特に興味深い脆弱性を含む3つのライブラリを詳しく取り上げます。SnykのSnyk Vulnerability DatabaseとNuGetレジストリのデータを使って、それぞれのライブラリがどのように使われているか、どれほど普及しているか、どのような既知の脆弱性を含んでいるかを掘り下げます。
ライブラリ上位10件
以下の表に、上位10件のライブラリを示します。
順位 | ライブラリ | 用途 | 脆弱性* | 累計ダウンロード数 |
|---|---|---|---|---|
1 | 最新のHTTPアプリケーション向けプログラミングインターフェイス | 高深刻度 5件 | 8,100万 | |
2 | 単一のプロデューサーとコンシューマー向けのバイトバッファ管理ツール | 高深刻度 1件 |
| |
3 | クロスプラットフォームのWebサーバー、ASP.NET Core Kestrelの中核コンポーネント | 高深刻度 2件 | 2,210万 | |
4 | TCP接続上で双方向の永続的な通信チャネルを実現するプロトコル | 中程度の深刻度 1件 | 360万 | |
5 | Web向けデータアクセスプロトコル | 高深刻度 1件 | 4,240万 | |
6 | 不透明なサーバー上で使用するWebSocketミドルウェア | 高程度の深刻度 1件 | 1,250万 | |
7 | XMLデジタル署名の作成と検証を支援するクラスを提供するライブラリ | 高深刻度 1件 | 1,360万 | |
8 | クロスプラットフォームのWebサーバー、ASP.NET Core Kestrel向けのトランスポート抽象化機能 | 高深刻度 1件 | 2,210万 | |
9 | クライアントとサーバーのエンドポイント間に安全なネットワーク通信を提供するライブラリ | 高深刻度 3件 | 4,260万 | |
10 | ASP.NET CoreのWebアプリケーション構築向けメンバーシップシステム | 高深刻度 1件 | 1,830万 |
*全バージョンの累計
この表から、いくつか注目すべき点が見えてきます。
まず、クロスプラットフォームのWebサーバーであるASP.NET Core Kestrelは広く使われている一方、関連する複数のライブラリに由来する高深刻度の脆弱性が現在いくつも存在します。
次に、これらのライブラリの脆弱性の総数は概して少ないものの、深刻度は概して高い点です。
最後に、これらのライブラリはいずれも広く使われているようですが、累計ダウンロード数とリスト内の順位が直接相関していない点も興味深いところです。system.net.httpは累計ダウンロード数が最も多く、ユーザーへの影響も最大です。一方、リストの2位から10位のライブラリでは、ダウンロード数と順位に同様の直接的な相関が見られました。
それでは、ユーザーに最も大きな影響を与えている3つのライブラリを見ていきましょう。
System.Net.Http
まず、スキャンで最も頻繁に脆弱性が検出されるライブラリ、system.net.httpを見ていきます。
このライブラリの用途は?
System.net.httpは、最新のHTTPアプリケーション向けのプログラミングインターフェイスを提供するライブラリです。HTTP経由でWebサービスを利用するアプリケーション向けのHTTPクライアントコンポーネントに加え、クライアントとサーバーの両方でHTTPヘッダーの解析に使用できるHTTPコンポーネントが含まれます。
どれくらい普及している?
System.net.httpの累計ダウンロード数は約8,100万件です。執筆時点でリリースから7カ月が経過していた現行バージョン(4.3.4)は、約340万回ダウンロードされています。System.http.netの1日あたりの平均ダウンロード数は約3万件です。
このライブラリに含まれる脆弱性について、何が分かっている?
system.net.httpの脆弱性については、良いニュースと悪いニュースがあります。
まずは良いニュースから。このライブラリの最新バージョン(4.3.4)には、既知の脆弱性はありません。このライブラリを使用している場合は、最新バージョンにアップグレードしましょう。
一方、悪いニュースもあります。このライブラリの他のバージョンには、高深刻度の脆弱性が複数含まれています。そのうち1つはかなり古いバージョンにのみ存在しますが、バージョン4.1.2未満と4.3.4未満の4.3.Xには、高深刻度の脆弱性が4件、中深刻度の脆弱性が1件あります。
これらの脆弱性には複数の種類があり、情報漏えい、不適切な証明書検証、権限昇格、認証の回避、サービス拒否が含まれます。NuGetでは、このライブラリについて、ダウンロードされたバージョンやダウンロード頻度のほか、直近6週間の詳細な情報など、興味深い統計を確認できます。
残念ながら、これらの統計によると、過去6週間におけるこのライブラリのダウンロードのうち、最新バージョン(既知の脆弱性が一切ない唯一のバージョン)が占める割合はわずか16%です。つまり現在も、多くの人が既知の高深刻度の脆弱性を複数含むバージョンをダウンロードしています。
NuGetのデータには希望も見られます。最新バージョン(4.3.4)はリリースから7カ月が経過していますが、最近は普及のペースが上がっているようです。バージョン4.3.4のダウンロード数は約330万件で、そのうち120万件が直近6週間にダウンロードされています。
Snykの推奨事項:このライブラリを使っている場合は、最新バージョン(4.3.4)に更新しましょう。
System.IO.Pipelines
次に、リストの2番目のライブラリ、system.io.pipelinesを見ていきましょう。このライブラリは比較的新しく、登場したのは2017年末です。累計ダウンロード数では上位10件の中で下から2番目で、リリースから日が浅いことを考えれば納得できます。
このライブラリの用途は?
system.io.pipelinesは、単一のプロデューサーとコンシューマー向けのバイトバッファ管理ツールです。簡単に言うと、.NETで高パフォーマンスのI/O(入出力)処理を行いやすくするライブラリです。
どれくらい普及している?
System.io.pipelinesのダウンロード数は約840万件で、最新バージョン(4.5.3)は約60万件ダウンロードされています。バージョン4.6.0は現在プレビュー版です。
このライブラリに含まれる脆弱性について、何が分かっている?
現在、system.io.pipelinesに関連する既知の脆弱性は1件のみです。先ほど取り上げたsystem.net.httpと同様に、system.io.pipelinesの脆弱性には良いニュースと悪いニュースがあります。
まずは悪いニュースから。このライブラリに関連する唯一の高深刻度の脆弱性はサービス拒否(DoS)で、Webサイトをクラッシュさせる可能性があります。この脆弱性の深刻度スコアは高く、悪用されると正規のユーザーがWebサイトにアクセスできなくなるほか、サーバーコストの増加など、さまざまな問題につながるおそれがあります。
では、良いニュースです。このライブラリに関連する唯一の高深刻度の脆弱性は、サービス拒否です。そう、これも良いニュースです。他の脆弱性とは異なり、サービス拒否(DoS)攻撃は通常、セキュリティ侵害を目的としません。この脆弱性は厄介な問題を引き起こす可能性がありますが、稼働率に影響するおそれはあるものの、データや個人情報の損失につながる可能性は低いと考えられます。
Snykの推奨事項:system.io.pipelinesをバージョン4.5.1以降にアップグレードし、新しく有用なこのライブラリのセキュリティ状況を継続的に確認しましょう。
Microsoft.AspNetCore.Server.Kestrel.Core
最後に、リストの3番目のライブラリ、microsoft.aspnetcore.server.kestrel.coreを見ていきましょう。
このライブラリの用途は?
microsoft.aspnetcore.server.kestrel.coreは、クロスプラットフォームのWebサーバーであるASP.NET Core Kestrelの中核コンポーネントです。Kestrelはイベント駆動型で、非同期I/Oをベースとするサーバーです。新しいASP.NETアプリケーションに適したWebサーバーと一般に考えられています。Kestrel Webサーバーには、単独でWebサーバーとして使うために必要な機能がすべて備わっているわけではありませんが、非同期I/Oの処理は非常に高速で、IISやNGINXと連携して動作できます。
どれくらい普及している?
Microsoft.aspnetcore.server.kestrel.coreの累計ダウンロード数は2,200万件を超えています。このうち約63万件は、2018年末にリリースされた最新バージョン(2.2.0)のダウンロードです。
このライブラリに含まれる脆弱性について、何が分かっている?
このライブラリには現在、既知の脆弱性が4件あります。中深刻度のサービス拒否が2件、高深刻度のサービス拒否が1件、権限昇格が1件です。良いニュースとして、最新の2つのバージョン(2.1.7および2.2.0)には既知の脆弱性がありません。
このライブラリについて悪いニュースは、関連ライブラリのmicrosoft.aspnet.core.server.kestrel.transport.abstractionsもリストに載っていることです。microsoft.aspnetcore.server.kestrel.coreを使用している場合、microsoft.aspnet.core.server.kestrel.transport.abstractionsも使用している可能性が高いでしょう。また、Kestrelは多機能なWebサーバーではなく、別のライブラリの背後で実行されることが多い点も覚えておくことが重要です。Kestrelを単独で実行するか、NGINXやIISのようなライブラリの背後で実行するかによって、セキュリティへの取り組み方は変わります。
まとめ
今回の記事では、スキャン結果から、ユーザーのプロジェクトで最も多くの脆弱性の原因となっていることが分かった.NETライブラリを詳しく紹介しました。Azureとの提携を記念して、今後も.NETに関する情報をお届けします。これらのライブラリを使っていますか?.NETプロジェクトのセキュリティに関心がありますか?今すぐSnykを無料でお試しください。
CTFを始めよう
オンデマンドのバーチャル入門ワークショップを視聴して、CTFの課題の解き方を学びましょう。
