
=IF(A1=200, eval("__import__('os').system( で始まるものなど)を介してコード実行が可能です。Pycel は、Excelワークシートを操作するためのPythonライブラリであり、Excel数式の記号的かつ安全な評価を含みますが、特別に細工されたExcel数式を使用して、通常はブロックされているPythonネイティブ関数が実行される可能性があるコード実行の脆弱性があります。これにより、攻撃者は、Pycelで評価されるとコード実行につながる悪意のある文書を提供できます。
Pycelドキュメント の同じデモスクリプトを使用すると、Excelドキュメントを分析する際にExcel関数が評価され、"Function EVAL is not implemented. EVAL is not a known Excel function" のようなエラーが返されて実行が拒否されるはずです。
しかし、Pycelで実行したときに予期せず任意のコード実行につながる悪意のあるExcel数式を使用して、これをバイパスすることができました。
Pycel は現在、安全ではなく、信頼できない発信元のワークシートを評価または操作するために信頼できません。そう しないと、コード実行という壊滅的な結果につながる可能性があります。
=IF(A1=200, eval("__import__('os').system('calc.exe')"), @LINEST(C1:C18,B1:B18))
=A1*eval("__import__('os').system('calc.exe')")
pip install -r requirements.txt を実行)これは最新のPycelバージョン1.0b30でも依然として有効です。