Pythonにおけるimportの危険性とは 全ての運用関係者が知っておくべきPython特有のセキュリティリスク:便利だが攻撃者による悪用の可能性も
Pythonのimportステートメントには、開発者や企業が注意する必要があるセキュリティリスクが伴う。これがどのように機能するのか、そしてなぜ簡単な解決策がないのかを解説する。
Pythonを使用する場合に対応が必要な、あまり注目されていないリスクが存在している。
最新のソフトウェア開発言語は全てモジュール式であるため、開発者はコードの大きなセクションを、より管理しやすい小さな部分に分割できる。これにより、通常はライブラリにグループ化されたコード単位を再利用できる。これらのライブラリは社内で作成されていないことが多く、グラフ作成、データベース接続、配列計算などの一般的なタスクを実行するために作成されたオープンソースコレクションだ。
コード単位が他のコード単位のメソッドおよびプロパティと連携するには、それらのコンポーネントを参照する必要がある。JavaやPythonを含む最新の言語は、この要件をimportステートメントの形式で実装する。これは、現代の全てのエンタープライズコードのバックボーンを形成する。
ただし、Pythonには、importステートメントの使用に伴う危険がある。本稿ではその理由を探り、なぜ簡単な解決策がないのかを解説する。
何が問題なのか?
最新の言語では、ファイルをインポートするには使用するライブラリのインスタンスを作成するか、静的メソッドを直接呼び出す必要がある。いずれの場合でも、インポート内で何かを実行するには、コード内で何かを実行する。
Pythonはこの規則の例外に当たる。Pythonでファイルをインポートすると、メソッドではないトップレベルのコードがすぐに実行される。
多くの開発者は、このPythonインポート機能を有効に活用している。例えば、Pythonファイルのトップレベルの本体にコードを書き込んで、コードをテストしたり、ライブラリが依存関係に関して保持している前提を検証したりしている。
Pythonは基本的にスクリプト言語であり、ファイル本体から直接ロジックを作成して実行できる機能は魅力的だ。ただし、この機能はその性質上、実行するために明示的に何も呼び出されていないときにコードを実行する。これが大きな問題となる。
何が危険なのか?
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- Trellixが15年前公表のPythonモジュール脆弱性について約58万レポジトリを調査、いま何件存在する?
McAfeeのエンタープライズ事業とFireEyeの統合で設立された新しいセキュリティ企業Trellixは2022年9月28日、カンファレンスをラスベガスで開催し、一部をオンラインで配信。リサーチ部門Trellix Advanced Research Center(ARC)の設立を発表した。ARCが15年前に公表したPythonのtarfileモジュールに存在するパストラバーサル脆弱性について約58万の公開レポジトリを調査したところ、今なお存在する割合は高いものだったという。 - PythonなどOSSエコシステムを汚染する悪意あるパッケージが急増 リスクを避けるために何をすべきか
Snykは、2023年初めからこれまでに、オープンソースのPyPIおよびnpmパッケージのうち、悪意あるものが6762個見つかり、同社のデータベースに追加されたと報告し、2022年以降の悪意あるパッケージの急増について警告した。 - データクラウドのSnowflakeがPythonをネイティブサポート、非構造化データ処理などの新機能も発表
クラウドデータウェアハウスのSnowflakeが、Pythonをネイティブにサポートする。これにより、データエンジニアリング用の言語として人気が拡大する Python の開発者にアビールする。他にも非構造化データ処理、マーケットプレイス機能の強化、アカウントレプリケーションなどが発表された。