
CVE-2019-14751 の概念実証
CVE-2019-14751 の Proof of Concept
バージョン 3.5 より前の NLTK Downloader はディレクトリトラバーサルに対して脆弱であり、
抽出中に誤って処理される NLTK パッケージ (ZIP アーカイブ) 内の ../ (ドットドットスラッシュ) を
介して、攻撃者が任意のファイルを書き込むことを可能にします。
詳細については以下を参照してください。 https://salvatoresecurity.com/zip-slip-in-nltk-cve-2019-14751/。
index.xml と zip-slip.zip を、Web サーバーで配信されるディレクトリに配置します。ファイルが配信されるように権限を調整します。
NLTK Downloader を実行します
$> python3
>>> import nltk
>>> nltk.download()
「Server Index」フィールドの値を、手順 1 の index.xml を指すように変更します
「Download」をクリックして悪意のあるパッケージをインストールします
"/tmp/evil.txt" の存在を確認します。
$> cat /tmp/evil.txt
This is an evil file
$>
この脆弱性は NLTK バージョン 3.4.5 以降で修正されています。以下のコミットが この脆弱性を解決します: https://github.com/nltk/nltk/commit/f59d7ed8df2e0e957f7f247fe218032abdbe9a10