qwen3.8:27b-mlx で設計とプログラミングの実験
前提環境
- MacBook Pro M5 32GB
- Opencode
お題:OSコマンドインジェクションのダメな例と対処例
まずはデザインのプロンプト
あなたは専属のシステムアーキテクトです。
以下の要件でプログラムを作成したいので、計画を作成してDesign.mdに保存してください
**途中で確認は不要です、最後まで実施してください**
## OSコマンドインジェクションの事例
- アーキテクチャ
- Java
- Spring boot
- Maven
- thymeleaf
- コマンドインジェクション
- Web画面の入力項目に入れたコマンドが実行される
結果(Design.md)がちゃんと出ました。全体で350行ほど
抜粋
# OSコマンドインジェクション 教育事例アプリ 設計書(Design.md)
## 1. 概要
### 1.1 目的
本ドキュメントは、**OSコマンドインジェクション(CWE-78 / CWE-94系)の危険性を可視化・習得する目的**の教育用Spring Bootアプリケーションの設計を示す。
- Web画面の入力項目に注入されたコマンドがシェルに通される **脆弱パターン** を提示する
- 同じ要件に対して安全な処理が行える **対策パターン(3種)** を提示する
- フロントエンド上で両結果を並べて対比できる
> 本アプリは「攻撃可能性の実演」ではなく「理解・防御の学習」が目的である。実行環境はサンドボックス化し、悪意ある実コマンドの常時実行を行わないこと(詳細は §9)。
<中略>
## 12. デザイン上の判断と理由(Summary)
1. **実行責務を Service/Pinger に集約** → 脆弱点の所在が可視化可能。
2. **`Pinger(抽象)` をテスト差し替え可能にする** → OS非依存で攻撃パズルを検証(T2/T3)。CI で安全。
3. **白リスト検証(InputSanitizer)** が最優先対策、引数分割検証次点。API選択(`ProcessBuilder`)の重要性を示す。
4. **5つの Mode(RAW/SHELL/WHITELIST/VALIDATE/BUILDER)による対比UI**が、本アプリの教育価値の中核。
攻撃入力に対し「実行される / 拒否される」を UI で一目比較できる。
---
*本文書は実装可能な詳細を提供するものとして作成した。実装は §3〜§11 に従い行うこと。*
次にプログラム作成指示のプロンプト
あなたは専属のシステムエンジニアです。
Design.mdに沿ってソースコードを生成してください
RAW、SHELLのモードの場合は、「cat /etc/passwd」が実行できちゃう感じになります。
感想
今までの、qwen2.5-coder:14bや、qwen3-coder:30bはちょっと癖があって使いにくかったのですが、qwen3.8:27bは賢いので、プロンプトをアバウトに書いてもちゃんと理解してくれて、期待通りのものができました。
