こんにちは、ネットアシスト運用チームのhaokiです。
この記事では、増え続けるCVEに対して、うちのサーバーが影響を受けるかをAIで判断する「CVE 自動評価」を3つのパターンで検証します。
NVDやJVNでは毎日のように新しいCVEが公開されています。「自分のサーバーに影響があるか」を確認・評価する作業は件数が増えるほど工数がかさみます。
今回は さくらのAI Engine と Claude Code CLI を使って、CVEの自動評価を試みました。結論から言うと、それぞれに得意・不得意があり、組み合わせ方によって使い道が変わります。実際に試してわかったことをそのまま書きます。
試した構成
さくらのクラウド上に AlmaLinux 8.9 のサーバーを立て、3つのパターンを検証しました。
- さくらのAI Engine(RAG)でCVE評価
- Claude Code CLI + Anthropic API でCVE評価
- Claude Code CLI + LiteLLM + さくらのAI Engine(国内完結を目指す)
環境のセットアップ
さくらのクラウドでサーバーを作成
- OS:AlmaLinux 8.9
- メモリ:2GB
- ホスト名:cve-check-demo
[user@local ~]$ ssh root@xxx.xxx.xxx.xxx
[root@localhost ~]# hostnamectl set-hostname cve-check-demo
[root@cve-check-demo ~]#
Python 3.9とライブラリを入れます。AlmaLinux 8.9のデフォルトはPython 3.6で古いため、Python 3.9を明示的にインストールする必要があります。
[root@cve-check-demo ~]# dnf install -y python39
[root@cve-check-demo ~]# python3.9 -m pip install requests openai
さくらのAI Engineのセットアップ
コントロールパネルの左メニューから「さくらのAI Engine」を選択し、初期登録を完了します。「アカウントトークン」からトークンを発行して控えておきます。
注意:RAGのドキュメント登録は基盤モデル無償プランでも課金対象です。登録したドキュメントを削除するまで月額課金が継続するので、検証後は必ず削除してください。
[root@cve-check-demo ~]# export SAKURA_TOKEN="your_token_here"
パターン1:さくらのAI Engine(RAG)でCVE評価
サーバー構成情報をRAGに登録
サーバーのパッケージ情報を収集してRAGに登録します。
[root@cve-check-demo ~]# cat << 'EOF' > /root/register_to_rag.sh
#!/bin/bash
SAKURA_TOKEN="${SAKURA_TOKEN}"
OUTPUT="/tmp/server_info.txt"
echo "=== OS情報 ===" > $OUTPUT
cat /etc/redhat-release >> $OUTPUT
uname -r >> $OUTPUT
echo "=== OpenSSHバージョン ===" >> $OUTPUT
rpm -q openssh-server >> $OUTPUT
echo "=== インストール済みパッケージ ===" >> $OUTPUT
rpm -qa >> $OUTPUT
curl --request POST \
--url https://api.ai.sakura.ad.jp/v1/documents/upload/ \
--header "Authorization: Bearer ${SAKURA_TOKEN}" \
--header 'Content-Type: multipart/form-data' \
--form "file=@${OUTPUT}" \
--form "name=cve-check-demo-$(date +%Y%m%d)" \
--form "model=multilingual-e5-large" \
--form "chunk_size=512"
EOF
chmod +x /root/register_to_rag.sh
/root/register_to_rag.sh
正常に登録されるとこのようなレスポンスが返ります。
{"id":"73e24ef2-...","status":"pending","name":"cve-check-demo-20260520",...}
コントロールパネルのドキュメント一覧で available になるまで1〜2分待ちます。
ここで1つハマりポイントがありました。chunk_size は256〜512の間でなければならず、1行だけのファイルはチャンク分割できずエラーになります。登録するドキュメントはある程度の量が必要です。
CVE評価スクリプトを実行
[root@cve-check-demo ~]# python3.9 -c "
import requests, json, os
SAKURA_TOKEN = os.environ['SAKURA_TOKEN']
def get_cve_description(cve_id):
url = 'https://services.nvd.nist.gov/rest/json/cves/2.0'
res = requests.get(url, params={'cveId': cve_id}, timeout=10)
vuln = res.json()['vulnerabilities'][0]['cve']
return vuln['descriptions'][0]['value']
def evaluate_cve(cve_id, description):
url = 'https://api.ai.sakura.ad.jp/v1/documents/chat/'
headers = {'Authorization': f'Bearer {SAKURA_TOKEN}', 'Content-Type': 'application/json'}
payload = {
'model': 'multilingual-e5-large',
'chat_model': 'gpt-oss-120b',
'query': f'登録されたサーバーの構成情報をもとに、{cve_id}の影響を評価してください。\n\n{description}\n\n1.影響の有無 2.判断理由 3.推奨対策',
'top_k': 5, 'threshold': 0.3, 'distance_type': 'cosine'
}
return requests.post(url, headers=headers, json=payload).json()
cve_id = 'CVE-2024-6387'
desc = get_cve_description(cve_id)
result = evaluate_cve(cve_id, desc)
print(result['answer'])
"
結果と評価
RAGはOpenSSH 8.0p1のインストールを検出しましたが、「CVE-2024-6387が8.0p1に影響するかどうか判断できない」という回答になりました。
RAGに登録されているのはサーバーの構成情報だけで、「CVE-2024-6387の影響バージョンは8.5p1〜9.7p1」という知識はRAGに含まれていないためです。CVE情報もあわせてRAGに登録すれば改善できますが、運用として現実的かは疑問が残ります。
| 観点 | 評価 |
|---|---|
| データの国内完結 | ○ |
| CVE影響判断の精度 | △ バージョン範囲の知識がない |
| セットアップの手間 | RAG登録が必要 |
パターン2:Claude Code CLI + Anthropic API
インストールと起動
[root@cve-check-demo ~]# curl -fsSL https://rpm.nodesource.com/setup_18.x | bash -
[root@cve-check-demo ~]# dnf install -y nodejs
[root@cve-check-demo ~]# npm install -g @anthropic-ai/claude-code
[root@cve-check-demo ~]# export ANTHROPIC_API_KEY="your_anthropic_api_key"
[root@cve-check-demo ~]# claude
CVE-2024-6387の評価
❯ このサーバーにインストールされているOpenSSHのバージョンを確認して、
CVE-2024-6387(regreSSHion)の影響を受けるか評価してください。
Claude Codeは自分でコマンドを実行してバージョンを確認し、次のように回答しました。
$ rpm -q openssh openssh-server
openssh-8.0p1-19.el8_8.x86_64
openssh-server-8.0p1-19.el8_8.x86_64
結論: 影響を受けません(Not Affected)
CVE-2024-6387 は OpenSSH 8.5p1〜9.7p1 に存在する脆弱性です。
本サーバーの 8.0p1 には該当コードが存在しません。
Red Hat / AlmaLinux 8 系は公式に「Not Affected」とアナウンスされています。
最新CVE(Copy Fail / CVE-2026-31431)を試す
知識カットオフ以降の新しいCVEについてはどうか。CVE番号だけで聞くとこう返ってきます。
❯ 最近話題のCopy Fail(CVE-2026-31431)について評価してください。
この CVE 番号について私の知識で裏付けが取れません。
ハルシネーションになるため、URLなしでの評価は実施しません。
一次情報のURLをご提供ください。
NVDのURLを渡すと、自分でAPIを叩いて情報を取得し、カーネルモジュールの有無まで確認した上で評価しました。「algif_aead モジュールが存在しないため実質影響なし」という判断で、ブラックリスト設定のコマンドまで提案してくれました。
| 観点 | 評価 |
|---|---|
| データの国内完結 | × Anthropic APIに飛ぶ |
| CVE影響判断の精度 | ◎ モジュール有無まで確認 |
| ハルシネーション耐性 | ◎ 知らないことは正直に言う |
| セットアップの手間 | APIキー1つで動く |
パターン3:Claude Code CLI + LiteLLM + さくらのAI Engine
Claude Codeの操作感を保ちながら、バックエンドをさくらのAI Engineに向けることで国内完結を目指しました。LiteLLMをプロキシとして挟み、Anthropic APIフォーマットをOpenAI互換フォーマットに変換する構成です。
[root@cve-check-demo ~]# pip3.9 install 'litellm[proxy]'
[root@cve-check-demo ~]# OPENAI_API_KEY="${SAKURA_TOKEN}" \
litellm --model openai/Qwen3-Coder-30B-A3B-Instruct \
--api_base https://api.ai.sakura.ad.jp/v1 \
--port 4000 &
[root@cve-check-demo ~]# export ANTHROPIC_BASE_URL=http://localhost:4000
[root@cve-check-demo ~]# export ANTHROPIC_API_KEY=dummy
[root@cve-check-demo ~]# export ANTHROPIC_DEFAULT_SONNET_MODEL=Qwen3-Coder-30B-A3B-Instruct
[root@cve-check-demo ~]# claude
LiteLLMの起動自体は成功し、Claude Codeの画面にもモデル名が表示されました。ところが実際にプロンプトを投げると次のエラーが出ました。
Tool use is not supported in Responses API without Harmony None
Claude CodeはAnthropicの独自ツールコールフォーマットを使っており、さくらのAI EngineのOSSモデルはこれに対応していませんでした。Claude Codeの「自分でコマンドを実行する」機能がそもそも動かないため、この構成は現時点では実用的ではありません。
| 観点 | 評価 |
|---|---|
| データの国内完結 | △ LiteLLMはVM上で動くが… |
| CVE影響判断の精度 | × ツールコール非対応で動作不可 |
| セットアップの手間 | LiteLLM + 環境変数の設定が必要 |
まとめ
3パターンを試した結果を整理します。
| さくらのAI Engine RAG | Claude Code + Anthropic | Claude Code + さくら | |
|---|---|---|---|
| 国内完結 | ○ | × | × (現時点) |
| CVE評価精度 | △ | ◎ | 動作不可 |
| 最新CVE対応 | URL渡せば可 | URL渡せば可 | 動作不可 |
| セットアップ | RAG登録が必要 | シンプル | 複雑 |
CVE評価の精度と使い勝手だけで見ると Claude Code + Anthropic API が圧倒的に優れています。自分でコマンドを実行してバージョンを確認し、ハルシネーションを避けながら根拠のある評価を返す動作は、セキュリティ用途として実用的です。
ただし Anthropic API はデータが国外に出ます。顧客のサーバー構成情報を扱う場合はこれが制約になります。さくらのAI Engine は国内完結という点で優位性がありますが、Claude Code のエージェント機能と組み合わせることは現時点では難しく、シンプルなRAGとしての用途が現実的です。
「国内完結でClaude Code相当のエージェント体験を得る」という理想には、OSSモデル側のツールコール対応が進むまで待つ必要がありそうです。さくらのAI EngineのモデルラインナップやAPI仕様の進化に引き続き注目していきます。
さくらのクラウドを使ったサーバーの監視・運用体制の整備についてご相談がある方は、ぜひネットアシストにご連絡ください。
それではまた!

