PyCon JP 2025

ビビってどうする:セキュアなPythonコードを目指して
2025/09/27 , ラン

セキュリティは「難しそう」「どこから始めればいいのかわからない」とよく言われており、重要ながらも体系的に学ぶ機会が少ない分野です。このセッションでは、初心者向けにPythonコードをよりセキュアにするための知識と武器を紹介していきます。具体的な事例を交えながら、サプライチェーン攻撃やマルウェアが仕込まれているデータを防ぐ方法・ツールをわかりやすく解説します。


スコープ

このセッションでは、Pythonに特有のセキュリティ上の考慮事項を取り上げます。SQLインジェクションやシークレットのハードコーディングのような一般的な概念にはあえて触れずに、Pythonのエコシステムにおける既知のセキュリティ上の懸念事項に焦点を当てます。

構成

Pythonコードに潜む4種類の闇 (20分)

このパートでは、可能な限り実例やサンプルコードを使って、各種類の「闇」のリスクをわかりやすく紹介します。また、より安全な代替案も提供します(例:pickleの代わりにJSONを使用するなど)。

  1. 闇のサードパーティパッケージ(pipに対するサプライチェーン攻撃)

  2. 闇データ(XML、zip、pickle)

  3. 闇アルゴリズム(random、hashlib)

  4. 闇バージョン(非推奨のPythonバージョンとライブラリ)

対策 (10分)

最後に、簡単にできるセキュリティ対策として以下のツールを紹介します。

  1. リンターを使って脆弱性を自動検出
  2. プライベートリポジトリを構築して信頼できるパッケージをホスト

リファレンス

セキュリティ上の考慮事項があるモジュールの公式リスト: https://docs.python.org/3/library/security_warnings.html
危険なpickleの使用を検出するruffリンターの例: https://docs.astral.sh/ruff/rules/suspicious-pickle-usage/


この題材を選んだ理由やきっかけ:

サイバーセキュリティの専門家として、既知のPythonセキュリティ上の懸念事項をわかりやすくPython初心者に紹介したいと考えています。中級者の方々にとっても良い復習になるかと思います。

今日の「Vibe coding」の時代において、「機能性」だけ注目されがちですが、「脆弱性」への考慮が足りないのではないかと感じています。このセッションを通して、みなさんにより良いセキュリティの習慣を身につけていただければと思います。

オーディエンスが持って帰れる具体的な知識やノウハウ:

Pythonコードの「闇」に対する想像力を身につけていただきたいです。もちろんPythonはツールに過ぎませんが、Pythonのエコシステムに特有の脆弱性は多々あります。実例を交えて、そのリスクと対策を理解していただきたいと思っています。

オーディエンスに求める前提知識:

Pythonパッケージのインポート
Pythonの基本的な文法(サンプルコードを理解できる程度)

オーディエンスの経験レベル:

Beginner

発表の言語:

Japanese

発表資料の言語:

English

Sau

Based in Tokyo, Sau is a practical Python practitioner who currently works as a Cybersecurity Engineer at Sakana AI. She is a heavy user of her password manager.