02 — Local, resident, verified
No. 02
Athenaraとは
Local, resident, verified
社内のサーバー1台に置く、
常駐型のセキュリティ検証システム。
Athenaraは、AIモデルごと社内で動き、自社のプロダクトを調べ続けます。年に一度、外から人が来て二週間で見て帰る診断とは、発想が逆。社内に一人、そのプロダクトだけを見続ける担当者が住み込んでいるような状態をつくります。

i. Local社内の1台で完結する構成
調べる対象も、調べるAIも、
同じ1台の中に。
一般的なAIコードレビューは、コードを外部のAIサービスへ送って読ませます。Athenaraでは、順序が逆。AIモデルのほうを社内に持ち込み、コードの置かれたマシンの中で推論させます。
そのため、コードも結果も、社外へ一行も送信されません。外部のAIサービスとの接続も、そもそも持ちません。

机に載る一台
AIを社内で動かすと聞くと、サーバールームの増設や大がかりな設備投資を思い浮かべるかもしれません。必要なのは、NVIDIA DGX Spark という机に載るサイズのマシン1台だけ。データセンターも専用ラックも、外部のAIサービスとの契約も要りません。
1台の中で起きていること
- Think考える
推論に使うAIモデルが、この1台の中で動きます。ソースコードは読み取り専用で参照し、書き換えません。コードを読み、次に確かめる問いを決めるのはここ。
- Try試す
調査ごとに隔離した環境を立ち上げ、その中で対象のプロダクトを起動して実際に試します。終われば、環境は捨てます。
- Keep残す
試した条件と観測、見つかった問題とその再現手順・証拠、確かめた範囲を、その場で記録します。記録も、同じ1台の中に置かれます。
建物の外に、何も出ていかないこと
ソースコードを社外に渡せないという理由で、外部診断もクラウド型のAIレビューも見送ってきた会社は少なくありません。調べる側のAIごと社内に入るので、この前提そのものが要りません。金融、医療、官公庁向けのように、規程や契約でコードの持ち出しが制限される場合でも検討の土台に載ります。
社内で説明するとき、いちばん答えにくいのは「コードや結果は、いまどこにあるのか」という問いです。クラウドの向こう側にあると、場所も経路も相手の説明を信じるしかありません。Athenaraでは答えが物理的に一つに決まり、経営会議でも監査の場でも、構成は一文で説明がつきます。
導入の単位が1台なので、始め方も軽く済みます。まずはプロダクト一つを対象に、この1台を置くところから始められます。
ii. Resident設置した日から続く調査
設置した日から、
動き続ける。
一度設置すれば、数週間から数カ月にわたって同じプロダクトを調べ続けます。始まりと終わりのある行事ではないので、夜間も休日も止まりません。
次の問いは、AIが自分で決める
- a.これまでに分かったこと記録済みの問題、観測、確認できた範囲
- b.まだ確認していないこと手つかずの機能、浅くしか見ていない箇所、残った条件
- c.コードの更新差分新しく入った変更と、それが既存の結果に与える影響
手元の三つを見比べ、いま最も確かめる価値のある問いを一つ選びます。確かめ終われば結果を読み、また次へ。予定表の項目をすべて終えても止まらず、昔からあるのにまだ誰も見ていない箇所や、コードの更新で確かでなくなった結論を探しにいきます。
担当者に要らないもの
担当者の仕事は、
朝、結果を読むこと。
- 日々の保守作業
- 毎日の起動や片付けを担当者が引き受ける必要はありません。
- セキュリティの専門知識
- 結果を読み、必要ならチャットで方針を伝えるだけで十分です。
iii. Verified実際に動かして確かめる仕組み
怪しいで、終わらせません。
動かして、起きるかを確認。
コードを読んで「ここは危ないかもしれない」と指摘するだけなら、静的解析ツールにも従来のAIレビューにもできます。問題は、その指摘が本当に危ないのかを誰かが確かめなければならないこと。精査する人手がなければ、警告は溜まったまま放置されます。
Athenaraは、その確かめる作業まで引き受けます。報告するのは、実際に再現できた問題だけです。
一つの問いを確かめる手順

- 1
確かめる問いを一つ受け取る
「この画面から他人のデータが読めてしまわないか」のように、白黒をつけられる形の問いを一つだけ扱います。
- 2
使い捨ての隔離環境を用意する
調査ごとに新しい環境を用意し、その中でプロダクトを起動します。本番環境には接続しません。対象のサービス以外へは届かないよう、通信も権限も絞ってあります。
- 3
コードを読み、実際に動かして試す
読んで怪しいと思った箇所に、実際に操作やリクエストを送り、問題が本当に起きるかを見ます。
- 4
再現できたかを見極める
起きなければ、どの条件で起きなかったかを記録します。起きたものだけが、報告の候補になります。
- 5
手順と証拠を添えて報告し、環境を破棄する
調査が終われば、環境は捨てます。
報告に必ず付くもの
- 再現手順
- 同じ問題をもう一度起こすための操作
- 証拠
- 試した時に実際に観測した記録
- 確認した条件
- どの状態・どの範囲で起きたか
担当者は、本当かどうか分からない指摘の裏取りに時間を使わずに済みます。届いた報告は、そのまま開発者に渡して修正に取りかかれます。
iv. Knowledge証拠つきで積み上がる知識
調べた結果は、
消えずに次の問いを決める。
年に一度の診断では、報告書が納品された時点で調査が終わります。翌年の診断は、また一から。前回どこを見て、どこを見なかったかは、報告書を読み返さない限り引き継がれません。
何が残るか
| Record | What it keeps | Used for |
|---|---|---|
| 見つかった問題 | まだ疑いの段階のものから、再現に成功したものまで。どこまで確かめたかが区別して残ります。 | 何が確定していて、何が未確定かを一目で読む |
| 根拠となる観測 | どの条件で、何を試し、何が起きたか。結論の裏付けになった実際の記録。 | 問題から根拠へ、根拠から問題へとたどる |
| 確認済みの範囲 | 調べて確かめられた範囲。何も見つからなかったことも、確認した事実として残ります。 | 同じ場所を二度調べない |
| 未確認の条件 | 今回は確かめきれなかった状態や前提。 | 次に確かめる問いの候補にする |
| 修正後の再確認 | 修正の後、同じ条件でもう一度試した結果。直ったか、直っていないか。 | 修正が本当に効いたかを証拠で示す |
時間とともに、詳しくなる
過去の結果を上書きしないので、「いつ見つかり、いつ直り、何をもって直ったと言えるか」を後からたどれます。コードが更新されて前の結論が今も当てはまるか分からなくなった時も、確かめ直すべき問いとして拾い上げます。
調べるほど記録が厚くなり、記録が厚くなるほど、次に確かめる問いは的を絞ったものになっていきます。そのプロダクトに詳しい担当者が、社内に一人育っていくのと同じことが起きます。しかもその担当者は、異動も退職もしません。覚えたことは、証拠ごと残っていきます。
v. With static analysis静的解析との二段構え
機械で拾えるものは、
機械に。
その先を、
Athenaraが確かめる。
静的解析ツールは、依存ライブラリの既知の脆弱性や設定の不備を、コミットのたびに機械的に拾ってくれます。弱点は、出てくる警告の量が多すぎて、本当に危ないものがどれなのか分からないこと。
Athenaraは静的解析の代わりではありません。静的解析と組み合わせ、機械が拾った結果を、判断と実証で絞り込む二段構えで動きます。
Layer 1
静的解析
コミットごと
機械的に拾う
- 依存ライブラリに含まれる、既知の脆弱性
- フレームワークの設定不備
- ソースコード上の危険な書き方
コードを動かさずに、決まった規則と公開された脆弱性情報に照らして洗い出します。速く、同じコードには同じ結果を返すのが強み。ただし、それが自社のプロダクトで本当に危ないかまでは分かりません。
Layer 2
AI
結果を受けて
影響があるかを判断し、実証する
- その箇所は実際に使われているか
- 外から届く経路はあるか
- 隔離した環境で起こしてみる
静的解析の結果を出発点に、プロダクトの中で本当に影響が出るのかを判断します。
静的解析は、Athenaraを置いた社内の1台の中で、対象リポジトリの特定の版に対して行います。現在はJavaScript(Node.js)とGoで書かれたプロダクトに対応しています。
一つの警告の行き先
静的解析が出した警告は、確かめたあと三つのどれかに落ち着きます。どれにも入らないまま消えるものは、ありません。
影響があった
再現手順と証拠を添えて報告します。開発者はそのまま修正に取りかかれます。
影響がなかった
なぜ影響しないと判断したかを残します。コードが変われば、その判断が今も当てはまるかを改めて確かめます。
判定できなかった
対応していない構成や、解析が最後まで通らなかったものは、理由つきで「判定できず」と残します。
分からないものを、安全と呼ばないこと
解析ツールが対応していない構成や、途中で解析が止まった箇所を「警告なし」と同じに扱えば、報告の上では安全に見えてしまいます。経営として怖いのは、この見かけの安全です。
Athenaraは、調べられなかったことを、調べられなかったと記録します。報告を読む人は、確かめた範囲と、まだ確かめていない範囲を取り違えずに済みます。
いつ、何で調べたかの記録
公開される脆弱性情報は日々増えます。同じコードでも、先月の解析では出なかった警告が今日は出ることがあります。そこでAthenaraは、解析のたびに次の三つを記録に結びつけます。後から結果を見返したとき、それが何に基づく判断だったかを辿れます。
静的解析は時間のかかる処理ですが、その完了を待って調査全体が止まることはありません。結果が揃った時点で、次に確かめる問いの材料に加わります。
- 解析したコード
- どの版か
- 使った解析ツール
- どの版か
- 脆弱性情報
- いつ時点のものか