「脆弱性の修正版が出るたびに対応しているけれど、まだ見つかっていない穴はどうすればいいのか」——Webシステムを持つ会社の担当者から、こうした声を聞きます。修正版を当てる対策は、見つかった脆弱性にしか効きません。
この記事では、Anthropic(Claudeを開発する米国の会社)が2026年10月20日に公表した「攻撃面の削減」という考え方を、自社のWebシステムにどう当てはめるかを整理します。
先に、要点をまとめます。
- 攻撃面の削減とは、外から届くコードのうち、そのシステムに要らないものを閉じたり、届く条件を絞ったりすることです。 中に未知の脆弱性が残っていても、届かなければ悪用されにくくなります。
- Anthropicは、25のオープンソースのプロジェクト(合計500万行超)をClaudeで調べ、493件の問題を報告しました。 OpenSSH(サーバーへの遠隔接続に使うソフト)では、ログイン前に届くコードのうち約4,500行が届かなくなりました。
- 自社のWebシステムでも、外から届く入口の一覧を作ることから始められます。 Next.jsで作ったシステムなら、APIの一つひとつと、画面から呼ばれるサーバー側の処理が入口にあたります。
まずはここから。 自社のシステムに、外から呼べるAPIや管理画面がいくつあるかを、開発会社か社内の担当者に聞いてください。数がすぐに出てこなければ、そこが最初の確認事項です。
2026年10月25日時点で、Anthropicの公表内容とNext.jsの公式ドキュメントを確認した情報です。
攻撃面の削減とは、何をすることですか?
システムのうち外から届くコードを洗い出し、そのシステムに要らないものを取り除くか、届く条件を絞ることです。脆弱性そのものを消すのではなく、届きにくくすることで被害の大きさを下げます。
攻撃面(アタックサーフェス)は、外部の人が触れられる部分の総量を指す言葉です。ログイン画面、API、ファイルのアップロード、管理画面、外部サービスから呼ばれる窓口などが含まれます。
Anthropicの公表では、攻撃面の削減を「AIモデルで、届くコードを洗い出し、その運用で外に出す必要のないものを取り除くか、届く範囲を絞ること」と説明しています。そのうえで、これは未知の脆弱性を消すものではないが、届きにくくすることで深刻度を下げる、と述べています。
| 項目 | 公表された内容 |
|---|---|
| 公表日 | 2026年10月20日(Anthropic Frontier Red Team) |
| 調べた対象 | 25のオープンソースのプロジェクト、合計500万行超 |
| 見つけた設定項目 | 1万7,000超。うちセキュリティに関わるもの3,842 |
| 報告した問題 | 493件 |
| 道具の提供 | 3つの手法を1つのClaudeのスキルにまとめ、OSS-Scannerという仕組みに組み込んでいる最中。2026年10月25日時点で一般公開はされていない |
脆弱性を探して直す対策と、何が違うのですか?
| ✖ よくある思い込み | 〇 実際の条件 |
|---|---|
| 修正版を当て続けていれば安全 | 修正版は見つかった脆弱性にしか効かない。まだ見つかっていないものは残る |
| 使っていない機能は、使っていないので安全 | 外から呼べる状態で残っていれば、使っていなくても攻撃の入口になる |
| ログイン画面で守っているので、中の処理は大丈夫 | 画面とは別に、処理を直接呼べる作りがある(Next.jsのServer Actionsなど) |
| 設定は一つずつ正しければ問題ない | 単独では正しい設定の組み合わせで、守りが黙って外れることがある |
| 入口を閉じるのは、使い勝手を下げること | 使われていない入口を閉じても、利用者の操作は変わらない |
脆弱性を探す対策は「穴を見つけて塞ぐ」、攻撃面の削減は「穴があっても届かないようにする」です。 両方を組み合わせると、見つかった穴は修正版で塞ぎ、見つかっていない穴は届く範囲を狭めておけます。
修正版を当てる保守の頻度と期限は、Node.js・Next.jsの脆弱性修正が続く理由で扱っています。この記事はその手前の、「そもそも外に出ている部分を減らす」話です。
Anthropicは、どんな問題を見つけたのですか?
3つの観点で調べています。初期設定のまま意図せず届くコード、設定の組み合わせで守りが外れる箇所、守りより前に動く危険な処理の3つです。
| 観点 | 何を探すか | 公表された件数・例 |
|---|---|---|
| 初期設定のまま届くコード | 出荷時の設定で、使う想定のないコードに外から届く | 認証のある11のプロジェクトで93件。OpenSSH 10.4では、新しい署名方式(ML-DSA-44)のコードがログイン前に届いた |
| 設定の組み合わせ | 単独では妥当な設定が、組み合わさると守りを外す | エラーも警告も説明もない組み合わせが162件。うち94件で守りが黙って外れていた |
| 守りより前に動く処理 | ログインなどの確認より前に、セキュリティ上重要で複雑なコードが走る | 認証のある11のプロジェクトで37件 |
OpenSSHの件は、10.5と10.6の版で改められました。その結果、初期設定のサーバーでログイン前に届くコードのうち約4,500行、OpenSSH自身のログイン前のコードの約16%が届かなくなったとされています。
設定の組み合わせでは、同じ型の問題が4つのプロジェクトで別々に見つかっています。接続を拒否する相手をホスト名で書いておくと、名前の逆引き(IPアドレスからホスト名を調べる機能。多くのプロジェクトで初期設定は無効)が無効のときには、その拒否の設定が一度も効きません。
「接続するすべての相手に証明書での本人確認を求める」設定が、別の設定と組み合わさると確認ごと外れてしまう例も報告されています。この食い違いは21年間そのままでした。エラーも警告も出ないまま守りが外れる点が、この種の問題の見つけにくさです。
公表では、AIが見つけた箇所を自動で直すのではなく、初期設定以外の挙動を変える修正は人が判断する扱いにしたと説明しています。入口を閉じる作業でも、この線引きは参考になります。
自社のWebシステムでは、どこが入口になりますか?
画面のURLだけでなく、APIの一つひとつ、画面から呼ばれるサーバー側の処理、外部サービスから呼ばれる窓口、画像を作る機能などが入口です。Next.jsなら、プログラムの置き場所から機械的に数えられます。
入口は、性質で3つに分けると整理しやすくなります。
誰でも呼べる入口
- お問い合わせフォーム、会員登録、ログイン
- 一覧や検索のためのAPI
- 共有用の画像やページを作る機能
ログインした人だけが呼べる入口
- マイページの操作、データの登録・変更・削除
- 管理画面とその裏で動く処理
外部のサービスから呼ばれる入口
- 決済サービスからの通知(Webhook)
- 定期実行(cron)から呼ばれる処理
- スマートフォンのアプリが使うAPI
Next.jsで注意が要るのは、Server Actions(画面のボタンなどから呼ばれるサーバー側の処理)です。Next.jsの公式ドキュメントは、Server Actionは画面を経由せず直接のPOSTでも呼べるものとして扱い、一つひとつの中で本人確認と権限の確認を行うよう求めています。ページにログインの確認を入れても、そのページのServer Actionには効きません。
同じドキュメントは、リクエストを最初に受けるproxy.tsと、APIを定義するroute.tsを、特に時間をかけて点検する対象に挙げています。
使っている機能かどうかで影響が変わる例もあります。2026年9月22日にNext.jsが公表した深刻度「緊急」の脆弱性は、next/ogの画像生成をNode.js版で使っている場合だけが対象でした(公式発表)。使わない機能を外に出していなければ、この種の知らせが来たときの影響範囲も狭くなります。
3つの観点を自社に当てはめると、何を確かめますか?
入口の一覧を作ったうえで、要らない入口が残っていないか、守りが条件しだいで外れないか、確認より前に重い処理が走っていないかの3つを確かめます。
| 観点 | Webシステムでよくある形 | 確かめること |
|---|---|---|
| 意図せず届く入口 | 開発中の確認用の画面やAPIが本番に残っている。使わなくなった機能のAPIが消されていない | 入口ごとに、どこから呼ばれているか。呼ばれていないものは、外部から使われていないかを確かめて閉じる |
| 設定の組み合わせ | 管理者かどうかを「ログインしているか」だけで判定し、別の設定で新規登録が誰でもできる。設定値が空のとき確認を飛ばす作り | 判定の条件と、それを支える設定(新規登録の可否、環境変数)を一緒に見る。空のときは拒否する側に倒れるか |
| 確認より前の重い処理 | お問い合わせの入力を確かめる前に、AIの呼び出しやメール送信が走る。外部のURLを受け取ってサーバーが取りに行く | 回数の上限と入力の確認が、費用のかかる処理より前にあるか。取りに行く先を自社のものに限っているか |
確認より前の重い処理は、情報の漏えいだけでなく費用の問題にもなります。AIの呼び出しを回数の制限なしに外から繰り返せると、利用料が使われ続けます。
入口を閉じるとき、何に気をつけますか?
外部から呼ばれる入口を消さないこと、利用者の挙動が変わる修正は判断してから入れること、閉じた後に外から試して確かめることの3つです。
- 呼び出し元が見つからなくても、すぐに消さない:決済の通知、定期実行、配布済みのアプリから呼ばれる入口は、プログラムの中に呼び出し元がありません。設定画面や運用の記録で確かめてから閉じます
- 挙動が変わる修正は分けて判断する:使われていない入口を閉じるのと、エラーの文言や登録の流れを変えるのは別の作業です。後者は利用者への影響を見てから入れます
- 公開の順番を決める:データベースの変更、アプリの更新、サーバー側の更新が絡む修正は、出す順番を誤ると利用者が使えなくなります。順番を手順書に書いてから出します
- 閉じた後に外から試す:閉じたはずの入口に、外部の人と同じ方法でリクエストを送り、拒否されることを確かめます
委託先には、何を聞けばよいですか?
入口の一覧があるか、それぞれの入口でどう本人と権限を確かめているか、点検をいつ行うかの3点です。
| 聞くこと | 答えで確かめること |
|---|---|
| 外から呼べる入口の一覧はありますか | APIや管理画面の数が出てくるか。一覧が無ければ作ってもらう |
| 入口ごとに、本人と権限をどこで確かめていますか | 画面だけでなく、処理の中で確かめているか |
| 使わなくなった機能は、どう片付けていますか | 画面から消すだけでなく、APIも閉じているか |
| 費用のかかる処理に回数の上限はありますか | AIの呼び出しやメール送信に上限があるか |
| 入口の点検はいつ行いますか | 機能を追加したとき、定期(月1回など)のどちらか、または両方か |
AIを使って開発する会社に委託する場合の確認項目は、AI駆動開発を外注する前に確認すべきセキュリティ・権限管理チェックリストにまとめています。
ゼットリンカーでは、どう進めていますか?
2026年10月から、自社で運用しているNext.jsのサイトでも、外から届く入口の一覧を作り、前の月と比べる点検を始めました。お客様のシステムの保守でも、同じ手順で点検します。
進め方は次のとおりです。
- 入口を機械的に数える:APIの定義、Server Actions、最初にリクエストを受ける処理の設定、画像の取得先の設定を、プログラムから一覧にします
- 3つの観点で一つずつ確かめる:要らない入口、守りが外れる設定の組み合わせ、確認より前の重い処理を、コードを読んで確かめます
- 利用者の挙動を変えないものから閉じる:使われていない入口の削除や、確認の順番の入れ替えは先に入れ、挙動が変わるものはお客様と相談して決めます
- 翌月は増えた入口から見る:前の月の一覧と比べ、新しく増えた入口を重点的に確かめます
脆弱性の修正版を当てる保守と組み合わせて、見つかった穴と、まだ見つかっていない穴の両方に備えます。
よくある質問
Q. 攻撃面の削減と、脆弱性診断は何が違いますか?
脆弱性診断は、すでにある穴を探して報告するものです。攻撃面の削減は、外から届く部分そのものを減らし、未知の穴が残っていても届きにくくするものです。どちらか一方ではなく、組み合わせて使います。
Q. Anthropicのスキルは、今すぐ使えますか?
2026年10月25日時点で、一般には公開されていません。Anthropicは、3つの手法を1つのスキルにまとめ、OSS-Scannerという仕組みに組み込んでいる最中だと説明しています。考え方は、今のシステムの点検にそのまま使えます。
Q. 使っていない機能を消すと、システムが壊れることはありませんか?
外部のサービスや配布済みのアプリから呼ばれている入口を消すと、そこが動かなくなります。プログラムの中に呼び出し元が無いかに加えて、外部からの呼び出しが無いことを確かめてから閉じます。
Q. 小さな会社のホームページでも、攻撃面の削減は要りますか?
お問い合わせフォームや管理画面があれば、そこが入口です。入口が少ないサイトほど一覧はすぐに作れるので、点検の手間も小さく済みます。
Q. 他社が作ったNext.jsのシステムでも点検を頼めますか?
頼めます。最初にソースコードと公開の手順を確かめ、入口の一覧を作るところから始めます。点検だけで区切り、修正は社内で行う形もとれます。
入口の点検を相談する
ご相談の際は、次の4つを分かる範囲でお知らせください。分からない項目は空欄のままで構いません。
- システムのURLと、何に使っているか
- 作った技術(Next.js、PHPなど。分からなければ「不明」)
- 管理画面やスマートフォンのアプリがあるか
- 作った会社と連絡が取れるか
お問い合わせには2営業日以内にご返信します。ゼットリンカーは賠償責任保険に加入しています。初回相談・お見積もりは無料です。
運営・編集