このレポートには指定された言語の翻訳がありません。代わりに正規の英語レポートを表示しています。

バージョン付きセキュリティ評価

レポートID: SA-7DB9B9F0

7/9/2026, 1:18:22 AM

browsing-with-playwright セキュリティ評価 v10

スキルセキュリティ認証レポート

監査履歴
監査モデル: claude 最新の公開済みレポート
スキル名
browsing-with-playwright
バージョン
v10
メンテナー
Asmayaseen
カバレッジ
6 スキャンされたファイル · 1,567 解析済み行数
ポリシーバージョン
利用不可

確認済みの検出結果における最高重大度

高

2 件の確認済みセキュリティ検出結果に対応が必要です。

インストールのコンテキスト

現在のスキルページを確認

このページはレポートの証拠のみを要約しています。正規のインストール勧告は Skill ページで提供されます。

現在のスキルページを開く

このレポートは、マニフェストまたは ZIP をブロックも承認もしません。

Most static findings are false positives from Markdown examples, JSON Schema URLs, generated reference documentation, or fixed health-check commands. Real risks remain because the skill can launch a user-supplied stdio MCP command, send MCP requests to configured endpoints, manage local processes through /tmp PID files, and execute arbitrary Playwright code in a shared browser context.

レポートの位置

最新の公開済みレポート

「最新」はレポートの順序を指し、アーティファクトの最新性を指すものではありません。

監査アテステーション

証明不可

必要な不変のバインディングは不完全です。

人による検証

未検証

このレポートには人による検証は記録されていません。

カバレッジ

6 スキャンされたファイル · 1,567 解析済み行数

レビュー対象の項目を 25 件表示

制限事項

このレポートはランタイムまたはサンドボックスでの実行を主張するものではなく、副作用がないことを証明するものでもありません。

証拠チェーン

ソースバインディングからインストール契約まで証拠をたどってください。利用可能な証拠は検証を支援しますが、安全性を保証するものではありません。

  1. ソース

    コミットとパスにバインド済み

  2. アーティファクト

    コンテンツとツリーのハッシュがバインド済み

  3. 監査

    完了

  4. インストール契約

    検証するためにマニフェストを開く

    マニフェストを開く

確認された機能

「確認」とは、このレポートで裏付けとなる証拠が記録されていることを意味します。「記録なし」は、機能が存在しないことを証明するものではありません。

スクリプトを含む

Skillに含まれるコードを実行する場合があります。

この監査では記録されていません

ネットワークアクセス

外部サービスに接続する場合があります。

49 件の証拠箇所で確認

ファイルシステムへのアクセス

ローカルファイルの読み取りまたは書き込みを行う可能性があります。

9 件の証拠箇所で確認

環境変数

プロセス環境から値を読み取る可能性があります。

この監査では記録されていません

外部コマンド

Skillの外部にあるコマンドまたはプログラムを呼び出す場合があります。

43 件の証拠箇所で確認

機能レビュー項目 (23)
高
Python subprocess.Popen
self._process = subprocess.Popen(
StdioTransport starts a user-supplied --stdio command with shell=True. This is intended MCP functionality, but it is real arbitrary local command execution if untrusted input reaches the argument.
中
Shell command substitution
if [ -f "$PID_FILE" ] && kill -0 $(cat "$PID_FILE") 2>/dev/null; then
The script reads a PID from a predictable /tmp file inside command substitution before passing it to kill. This is local process-control logic with limited tampering risk.
中
Shell command substitution
echo "Playwright MCP already running on port $PORT (PID: $(cat $PID_FILE))"
The script reads a PID from a predictable /tmp file inside command substitution before passing it to kill. This is local process-control logic with limited tampering risk.
中
Shell command substitution
if kill -0 $(cat "$PID_FILE") 2>/dev/null; then
The script reads a PID from a predictable /tmp file inside command substitution before passing it to kill. This is local process-control logic with limited tampering risk.
中
Shell command substitution
echo "Playwright MCP started on port $PORT (PID: $(cat $PID_FILE))"
The script reads a PID from a predictable /tmp file inside command substitution before passing it to kill. This is local process-control logic with limited tampering risk.
中
Temp directory access
PID_FILE="/tmp/playwright-mcp-${PORT}.pid"
The helper stores and reads a predictable PID file under /tmp. This is common lifecycle code, but it creates a local tampering surface.
中
Shell command substitution
PID=$(cat "$PID_FILE")
The script reads a PID file and uses the value for process termination. This is intended cleanup behavior with a limited local tampering risk.
中
Shell command substitution
python3 "$(dirname "$0")/mcp-client.py" call -u "http://localhost:${PORT}" -t browser_close -p '{}'
The script invokes a local Python MCP client and derives the script directory in shell. It is intended cleanup behavior, but it is still external command execution.
中
Temp directory access
PID_FILE="/tmp/playwright-mcp-${PORT}.pid"
The stop helper reads, deletes, and acts on a predictable /tmp PID file. This is normal lifecycle code but has a local tampering surface.
低
HTTP client library
def request(self, method: str, params: Optional[dict] = None) -> dict:
The MCP client sends JSON-RPC requests to a user-provided HTTP server URL. This is legitimate for MCP, but it is real network capability and can disclose tool parameters to that endpoint.
低
HTTP client library
def request(self, method: str, params: Optional[dict] = None) -> dict:
The MCP client sends JSON-RPC requests to a user-provided HTTP server URL. This is legitimate for MCP, but it is real network capability and can disclose tool parameters to that endpoint.
低
HTTP client library
result = self.transport.request("tools/list")
The MCP client sends JSON-RPC requests to a user-provided HTTP server URL. This is legitimate for MCP, but it is real network capability and can disclose tool parameters to that endpoint.
低
HTTP client library
result = self.transport.request("tools/call", params)
The MCP client sends JSON-RPC requests to a user-provided HTTP server URL. This is legitimate for MCP, but it is real network capability and can disclose tool parameters to that endpoint.
低
HTTP client library
result = self.transport.request("resources/list")
The MCP client sends JSON-RPC requests to a user-provided HTTP server URL. This is legitimate for MCP, but it is real network capability and can disclose tool parameters to that endpoint.
低
HTTP client library
result = self.transport.request("prompts/list")
The MCP client sends JSON-RPC requests to a user-provided HTTP server URL. This is legitimate for MCP, but it is real network capability and can disclose tool parameters to that endpoint.
低
Python HTTP libraries
from urllib.request import Request, urlopen
The imported urllib client is used to contact the configured MCP HTTP endpoint. This is expected, but it confirms runtime network access.
低
Standard device file access
if [ -f "$PID_FILE" ] && kill -0 $(cat "$PID_FILE") 2>/dev/null; then
The helper stores and reads a predictable PID file under /tmp. This is common lifecycle code, but it creates a local tampering surface.
低
Standard device file access
if kill -0 $(cat "$PID_FILE") 2>/dev/null; then
The helper stores and reads a predictable PID file under /tmp. This is common lifecycle code, but it creates a local tampering surface.
低
Standard device file access
if kill -0 "$PID" 2>/dev/null; then
The stop helper reads, deletes, and acts on a predictable /tmp PID file. This is normal lifecycle code but has a local tampering surface.
低
Standard device file access
python3 "$(dirname "$0")/mcp-client.py" call -u "http://localhost:${PORT}" -t browser_close -p '{}'
The stop helper reads, deletes, and acts on a predictable /tmp PID file. This is normal lifecycle code but has a local tampering surface.
低
Standard device file access
kill "$PID" 2>/dev/null
The stop helper reads, deletes, and acts on a predictable /tmp PID file. This is normal lifecycle code but has a local tampering surface.
低
Standard device file access
kill -9 "$PID" 2>/dev/null || true
The stop helper reads, deletes, and acts on a predictable /tmp PID file. This is normal lifecycle code but has a local tampering surface.
低
Standard device file access
pkill -f "@playwright/mcp.*--port.*${PORT}" 2>/dev/null && echo "Playwright MCP stopped" || echo "Pl
The stop helper reads, deletes, and acts on a predictable /tmp PID file. This is normal lifecycle code but has a local tampering surface.

リスク指摘

確認済みのセキュリティ上の懸念事項は、引き続きレビューが必要な項目と分けて表示されます。

確認済みのセキュリティ上の懸念 (2)

RISK-001 高
Arbitrary browser code execution capability
The skill instructs users to call browser_run_code with supplied Playwright code. This is a powerful browser automation feature that can read page content and act in the active shared browser context if misused.
The documented workflow explicitly passes a code string to browser_run_code. The risk is contextual because trusted users may need it, but untrusted prompts could abuse it.
RISK-002 中
Shared browser context may expose session state
The skill requires --shared-browser-context so browser state persists across MCP client calls. Persistent session state can expose authenticated pages or cookies during later browser automation tasks.
The documentation clearly requires a shared browser context and advises keeping the server running for long sessions. This creates a real privacy boundary concern, although it is not inherently malicious.

是正措置

この監査で推奨される修正が記録されています。これらを適用する責任はメンテナーにあります。

  1. FIX-001
    高
    Stdio MCP transport executes a user-supplied command with shell=True.
    Parse stdio commands into an argument list and run subprocess.Popen with shell=False, or remove stdio support if this skill only needs local Playwright HTTP MCP.
  2. FIX-002
    高
    browser_run_code can execute arbitrary Playwright code in a shared browser context.
    Warn users not to run browser code from untrusted prompts and recommend closing the browser or using an isolated context after sensitive sessions.
  3. FIX-003
    中
    Helper scripts use predictable /tmp PID files for process control.
    Store PID files in a user-owned runtime directory with restrictive permissions, validate PID contents as digits, and quote command substitutions consistently.

専門家による証拠

不変の対象ID、スキャナーメタデータ、除外された一致項目、およびソースレベルの証拠。

アーティファクト主体

Marketplace コミット
7db9b9f06e0ab79c575b58bc48c4d8dc9849f424
コンテンツハッシュ
a29591ec42e473e12b98ce90c31254c440e0d13e9d6b11168f6cf4ab785cb8cd
ツリーハッシュ
d68e022e07e2ea22cdc2c9fbb0356a16ff6d6b28bc1a012668ef2685e86883dc
Skill パス
skills/asmayaseen/browsing-with-playwright
監査ペイロードハッシュ
5657f92e5c83150693eeb3e94f85cdf7

分析メタデータ

監査モデル: claude

分析状態: 完了

対象範囲は、記録されたファイル、行、メソッド、および証拠に限定されます。ランタイムまたはサンドボックスでの実行は主張していません。

検証とエクスポート

マニフェストとロックファイルは、インストール成果物を暗号学的ハッシュに結び付けます。この完全性に関する主張は、セキュリティ評価とは別のものです。

監査アテステーション: not_attestable