macOSのログに出るpython.exeを調べた
今回やったこと
macOSのunified logに、約30分おきに python.exe が大量に現れる現象を調べた。名前だけを見ると、Windows向け実行ファイルやWine、あるいは不審なプログラムを疑いたくなる。しかし、今回確認した範囲では悪性の兆候は確認できなかった。arm64ネイティブのPython処理が定期実行され、ログ上に python.exe という文字列が残っていた。今回の観察結果だけでは、この表示の原因までは特定できていない。
この記事では、見慣れないプロセス名を見つけたときに、文字列だけで異常判定しないための確認順序を記録する。対象は、常駐処理やLaunchAgentをmacOS上で動かしている個人開発者・小規模チームである。
最初に見えた異常と、実体の確認
ログには python.exe が繰り返し現れた。発生間隔は約1800秒で、画像処理のLaunchAgentが1スロットにつき短いPython処理を約5回起動していた。名前だけなら異常に見えるが、次の確認では「実体があるか」「どの実行系から呼ばれたか」「どのアーキテクチャか」を分けて調べた。
確認結果は次のとおりだった。
| 確認項目 | 実測結果 | 判断 |
|---|---|---|
ディスク上の .exe | 存在しない | Windows実行ファイルの実体なし |
ps に見える実体 | .exe なし | .exe の実体は確認できず |
| Python本体 | pyenv 3.12.9 | arm64ネイティブ |
| 起動間隔 | 1800秒 | LaunchAgentの定期処理と一致 |
| 1スロットの起動回数 | 約5回 | 画像処理の短い処理と一致 |
同じマシンでも、Homebrew版・/usr/bin・python.org版は Python、pyenv 3.11.2は python3.11 と表示された。一方、pyenv 3.12.9だけがこの名前を残していた。この観察結果は、特定のビルドで使われた実行ファイル名がログ表示に影響した可能性とは整合する。ただし、ビルド時の名前が引き継がれたかどうかは、今回の確認だけでは特定できていない。
ログの文字列: python.exe
実体ファイル: なし
実行元: LaunchAgentの定期処理
実行環境: arm64ネイティブ / pyenv 3.12.9
文字列よりプロセスの系譜を見る
この調査で重要だったのは、名前を正常と決めつけることでも、名前だけで危険と決めつけることでもない。発生間隔、起動元、アーキテクチャ、ディスク上の実体を突き合わせることだった。
たとえば、同じ python.exe でも、未知の親プロセスから不定期に起動され、実体ファイルが想定外の場所にあり、アーキテクチャも環境と合わないなら別の調査が必要になる。今回はその組み合わせではなく、既知のLaunchAgentから定期的に起動される短い処理だった。
逆に、ログにPythonの名前が出ないから安全とも言えない。監視の入口をプロセス名の許可リストだけにすると、名前の揺れやビルド差を見落とす。実行元と実体を確認する設計のほうが、表示名の偶然に引きずられにくい。
やってみてわかったこと
macOSのログ調査では、見慣れない名前を見つけた瞬間に結論を出さないほうがよい。今回の確認では悪性の兆候は見つからなかったが、python.exe という表示になった原因は特定できていない。
実務上の確認順序は、次の4点に絞れる。
- その名前に対応する実体ファイルがあるか
- 親プロセスと起動元は何か
- 実行ファイルのアーキテクチャは環境と合っているか
- 発生間隔と回数は、既知の定期処理と一致するか
この4点が揃えば、ログの文字列を起点にしつつ、文字列だけに判断を預けずに済む。常駐処理の監視では、名前の印象よりプロセスの系譜と実体を確認するほうが再現性のある調査になる。
更新履歴
- 2026-09-23: 初稿。実測結果をもとに作成。
訂正履歴
- なし。