
MediaWiki Score におけるリモートコード実行
CVEID: CVE-2020-29007
影響を受ける製品とバージョン: Mediawiki Score (0.3.0 までの全バージョン)
問題の種類: CWE-96: 静的に保存されたコードにおけるディレクティブの無害化の不適切('静的コードインジェクション')
概要
Score は、ユーザーが提供した Lilypond または ABC マークアップに基づいて楽譜を生成する Mediawiki 拡張機能です。 テスト中に、Lilypond マークアップに埋め込まれた Scheme コードを介したリモートコード実行に対して脆弱であることを確認しました。
Score の全バージョン(0.3.0 まで)は、ウェブサーバープロセスのコンテキスト内で任意のユーザー制御コードの実行を許可します。
説明
Score 拡張機能は、ユーザーが制御する Lilypond または ABC マークアップを GNU Lilypond バイナリに渡すことで楽譜を生成します。 バイナリは -dsafe オプションなしで実行されるため、Lilypond マークアップ内に埋め込まれた任意の Guile Scheme コード(オペレーティングシステムのシェルとやり取りするコードを含む)が実行されます。
この脆弱性を悪用するには、攻撃者は脆弱な Wiki 上の任意の記事を編集できる必要があります。 ほとんどの構成では、認証されていない攻撃者にも可能です。
再現手順
Wiki 上の任意の記事の編集を開始します。
記事の内容を次のコードに置き換えます:
{{Image frame|content=\new Staff <<{g^#
(number->string(system "/usr/bin/false"))
}>>}}
「プレビューを表示」をクリックします。
出力に次のような画像が含まれている場合、その Wiki は脆弱です:

緩和策
Score 拡張機能を無効にしてください。