Pythonはコンピュータ言語です。
Pythonには巨大なソフトウェア資産としてのPyPIがあり、このおかげでほんの少しのコーディングでいろいろな効能を簡単に実現できます。
PyPIは使い勝手もとても良いです。
こんな感じです。
- PyPIのWebサイトにいく
- 表示された検索窓に使いたいと考えている機能に関連するキーワードを入力し、エンターキーを入力する
- 大量に表示される候補となるPyPIで公開されたライブラリから好きなものを選択して、その名前をクリックする
- 説明文が表示されるので期待する内容であるかを確認し、良ければそれを使用する
とても簡単です。
しかもPyPIでは非常に大量のライブラリが公開されています。
たとえばいまYAMLで設定できる機能を持ったアプリを書こうとしているとしましょう。
上記の手順でPyPIで「yaml」と入力して検索すると2022年6月28日時点で8218件の結果がヒットします。
これだけあれば自分の希望に合う機能をもったものを見つけることができるような気がします。
でも、ちょっと待ってください。
その使用しようとしているものは期待する機能だけが実装されていると言い切れますか?
先日、嫌な機能がこっそり実装されたものがPyPIで公開されていることが確認されました。
- loglib-modules
loglibというライブラリは実在しいろいろな場所で使われています。
名前の通り、loglibはlogging libraryです。
しかしloglib-modulesはloglibの一部ではありません。 - pyg-modules
pygというライブラリは実在しますが、現在は有効ではありません。
pygはPython Package Managerです。
pygを使用しようとした人がこれを見つけて使ってしまうことを狙っているのでしょうか。
いまどき普通はpipを使います。このルアーにはどのくらいの効果が期待されていたのでしょう。 - pygrata
これは何を探そうとしている人を狙ったものなのかわかりません。
もしかしたらGraiaのtypoを狙ったものかもしれません。 - pygrata-utils
これは何を探そうとしている人を狙ったものなのかわかりません。
Graiaのtypoでtypoであることに気が付きにくくする目的でpygrataと一緒に追加されたモノなんでしょうか。 - hkg-sol-utils
これは何を探そうとしている人を狙ったものなのかわかりません。
謎です。
これらのPyPIパッケージを入手すると意図しない機能が入手した人の手元の環境で動作します。
- 情報を確認し取り出す
AWSの認証情報、ネットワークインターフェース情報、環境変数、を盗み出します。 - 取り出した情報を公開する
取り出した情報は外部にアップロードされます。
HTTPで認証なしでテキストファイル形式の状態で公開されます。
なんてことをしてくれるのでしょう。
これらのPyPIパッケージは現在すでに公開されていない状態になっています。
ですから新規の被害者は増えていかないでしょう。
でももし手元にダウンロードしたものがある場合、それを組み込んだプログラムを実行するとやはりこの悪意のある機構は実行されます。
Pythonは便利で使いやすく人気もあります。
でもその信頼性はソフトウェア資産の信頼性に依存する部分が小さくありません。
自分が使おうとしているライブラリが妥当なものであるかを使用し始める前に確認すれば十分でしょうか。
もしかしたら利用を開始した後でいつの間にかおかしな機能が追加実装されているかもしれません。
そういった内容がパッケージを更新した段階で組み込まれてしまうこともあるかもしれません。
SBOM(Software Bill Of Materials:ソフトウェア部品表)の管理の重要性といえるかもしれません。
何か対策が必要だと感じます。
参考記事(外部リンク):Python packages upload your AWS keys, env vars, secrets to
the web
blog.sonatype.com/python-packages-upload-your-aws-keys-env-vars-secrets-to-web
この記事をシェア |
---|