Tenable ブログ
ブログ通知を受信するCVE-2020-8597: Point to Point Protocol Daemon(pppd) におけるバッファオーバーフローの脆弱性
17年前から存在する pppd における「緊急」の脆弱性は、広く使用されている複数の Linux ディストリビューションに影響を与えます。
背景
3月4日、CERT Coordination Center (CERT/CC) の研究者は、Point-to-Point Protocol Daemon(pppd)バージョン2.4.2から2.4.8に存在する深刻度が「緊急」の脆弱性に関する脆弱性ノート#782301を公開しました。この脆弱性の開示は IOActive の Ilja van Sprundel 氏の貢献に基づいています。
Point-to-Point Protocol(PPP)は、レイヤー2を介した基本データ、および、ダイヤルアップ接続、DSLブロードバンド、SSL暗号化を実装する仮想プライベートネットワーク(VPN)などのデータ接続サービスのカプセル化と送信を可能にする全二重プロトコルです。PPP は、2つの直接接続された IP と TCP を実装するためにも使用されます。これらのプロトコルは、ポイントツーポイント接続をサポートしていません。pppd は、2つのノード間の PPP セッションの確立とセッションの終了を管理するために使用される Unix ライクなオペレーティングシステム上のデーモンです。
分析
CVE-2020-8597 は、Extensible Authentication Protocol (EAP) のパケットプロセッサの論理的な欠陥により pppd のバッファオーバーフローが発生する脆弱性です。認証されていないリモートの攻撃者は、特殊な細工が施された EAP パケットを脆弱な PPP クライアントまたはサーバーに送信し、DoS 攻撃を仕掛けたり、任意のコードを実行したりする可能性があります。pppd はカーネルドライバーと連携して動作し、多くの場合、システムやルートなどの高い権限で実行されるため、これらと同じ権限で任意のコードが実行される可能性があります。
CERT/CC の脆弱性ノートによると、論理上の欠陥は複数の EAP 機能に存在します。
eap_request および eap_response 関数では、型として最初のバイトを使用して、ポインターとデータ長の入力データが受信されます。この型が EAPT_MD5CHAP(4)の場合、埋め込まれた1バイトの長さフィールドを調べます。このチェックは、埋め込まれた長さがパケット全体の長さよりも小さいことを確認するために実装されています。チェックに成功すると、埋め込まれた長さの後にあるホスト名がローカルスタックバッファーにコピーされます。脆弱性は、これらの関数がコードを解析する方法に存在します。境界チェックに不備がある場合、任意のデータ長でメモリのコピーが続行し、スタックバッファオーバーフローが発生する可能性があります。
また、eap_input 関数のコードには、 PPP 内のリンク制御プロトコル(LCP)フェーズで EAP のネゴシエートの検証に不備があるため脆弱性が存在します。つまり、検証の失敗が LCP フェーズ中の誤った事前共有パスフレーズによるためでも、EAP のサポートの不備によるためでも、認証されていない攻撃者は EAP パケットを処理するために送信できます。この未検証の EAP パケットを処理すると、スタックバッファーがオーバーフローする可能性があります。
概念実証
このブログ記事が公開された時点では、この脆弱性を悪用する概念実証(PoC)はリリースされていません。
しかし、複数の GitHub リポジトリが公開されており、概念実証が近日中に公開される可能性があります。そのうちの1つは進行中であり、もう1つは「1、2週間中に落ち着いたら」リリースされる予定です。
ソリューション
2月2日に eap.c における脆弱性が修正されました。その後、さまざまな Linux ディストリビューションが PPP の脆弱性に対処するためのアップデートをリリースしており、今後数日間に追加のパッチがリリースされる可能性があります。以下は、この脆弱性に対処する既知のディストリビューションリリースのリストです。
ディストリビューション | バージョン | アドバイザリ |
---|---|---|
Debian Jessie LTS | 2.4.6-3.1 | DLA-2097-1 |
Debian Stretch, Debian Buster | 2.4.7-1+4 2.4.7-2+4.1 | DSA-4632-1 |
Ubuntu | 19.10, 18.04 LTS, 16.04 LTS | USN-4288-1 |
Ubuntu | 14.04 ESM 12.04 ESM | USN-4288-2 |
Red Hat Enterprise Linux | 6 | RHSA-2020:0631 |
Red Hat Enterprise Linux | 7 | RHSA-2020:0630 |
Red Hat Enterprise Linux | 8 | RHSA-2020:0634 |
SUSE | SLED12 | SUSE-SU-2020:0490-1 |
SUSE | SLED15 | SUSE-SU-2020:0489-1 |
CentOS | 6 | CESA-2020:0631 |
CentOS | 7 | CESA-2020:0630 |
Oracle Linux | 6 | ELSA-2020-0631 |
Oracle Linux | 7 | ELSA-2020-0630 |
Oracle Linux | 8 | ELSA-2020-0633 |
さらに、シスコは、シスコ製品に与える可能性のある影響を確認し、バグIDとして CSCvs95534 を割り当てています。
これは完全なリストではありません。今後、多くのベンダーが自社製品に対するこの脆弱性の影響を判断し、アドバイザリを公開することでしょう。
影響を受けているシステムの特定
この脆弱性を識別するための Tenable プラグインのリストは、こちらからご覧いただけます。
詳細情報
Tenable コミュニティの Tenable セキュリティレスポンスチームに参加してみませんか。
現代のアタックサーフェスを総合的に管理する Cyber Exposure Platform を初めて提供した Tenable について詳細情報をご覧ください。
今すぐ Tenable.io Vulnerability Management の 30 日間無料トライアルをお試しいただけます。
関連記事
- Vulnerability Management