公開された Ollama API のリスク
英語からの翻訳です。原文は English.
問題
Ollama は自分のマシンで動く API サービスです。他人のクラウドに頼らずに AI モデルを使えるようにしてくれます。ポート 11434 で待ち受けていて http://localhost:11434 に応答します。
問題は Ollama に認証がないことです。それ自体は脆弱性ではありませんが、ポートがインターネットから届く位置に来た瞬間に脆弱性になります。見つけた人はあなたのモデルとハードウェアを、断りもなく使えます。
何が起きるか
認証がなくポートが開いていると、攻撃者にできることがいくつかあります。
- あなたの AI モデルと会話する
- マシン上のモデルをダウンロードする
- GPU と CPU でタスクを走らせる
レンタルのマシンで Ollama を動かしているなら、使っていてもいなくても請求は来ます。使ったのは誰か別の人です。
どうやって見つけたか
ollama serve を実行すると、Ollama がインストールされて動いている時点でもうサービスは起動していると分かります。そこで FOFA を使って、そのうち何台がインターネットから届くのか調べました。FOFA はサイバースペースの検索エンジンです。
ポート 11434 が開いているマシンを "Ollama is running" && port="11434" というクエリで探しました。この特徴的な文字列が使えるのは、標準の Ollama のルートがまさにこの文言を返すからで、稼働中のインスタンスを確実に見つけられます。
検索結果は 65,766 台の公開ホストでした。
- どれもポート 11434 が届く状態だった
- モデルを読み、GPU にリクエストを送れた
- 多くは高価なハードウェアで、持ち主は気づいていなかった
Ollama を守る方法
Ollama を使っているなら、今日できることが 3 つあります。
1. IP を絞る
ファイアウォールを使って、信頼できる IP だけを通します。
2. 前に認証を置く
トークンを要求してから転送するプロキシを前に置きます。
3. 公開ポートを閉じる
サービスを 127.0.0.1 に束縛して、マシンの外からポートに届かないようにします。
まとめ
これは Ollama を責める話ではありません。ローカルサービスを出すのは正しい既定値です。問題は、ローカルサービスが公開 IP に載ってしまって誰も確認しなかったときに始まります。ファイアウォールで 20 分もあれば解決します。