CounterProofは、現代のコードベース — とりわけ機械が書いたコード — のための独立した敵対的レビューのプラクティスです。私たちは、社内では作れないただ一つのものを提供します:規制当局、買収者、保険会社、エンタープライズ顧客の精査に耐えるよう構築された、独立した、署名付きの、エビデンス段階付きのセキュリティ評価です。
モデルが書き、同じモデルがレビューしたコードは、誰にもレビューされていない。
コードレビューそのものを買う人はいない。買われるのは、それが開くものだ。
あなたがこれを読んでいるのは、目覚めた瞬間にセキュリティ評価が欲しくなったからではないでしょう。何かが、あなたに証拠を求めているのです。
この四者のうち三者は、あなた自身のコードについてのあなた自身の言葉を決して受け入れません — 彼らが買っているのは独立性であり、それはどのチームも自分の仕事については供給できない唯一の性質です。四番目の規制当局は、自己評価をしばしば受け入れます — そしてその裏付けとなるあらゆる記録について、あなたに責任を負わせます。いずれにせよ、証拠は持ちこたえなければならない。それが、私たちの作るものです。
成果物こそが要点です。
エンゲージメントは、永続するエンゲージメント識別子(CPR-YYYY-NNN — メンテナー、買収者、修正コミットが引用するもの)の下でCounterProof Assessmentを生み出します。各所見は、あなたのソースに対して確認される — 正確なファイルと行、再現手順、影響分類 — か、明示的に「もっともらしいのみ」と段階付けされるかのいずれかです。水増しはなく、スキャナー生成物はなく、対応できないものはありません。
各所見は、実際に到達したエビデンスの段 — ソース追跡、コンパイル証明、テスト、実行再現 — を名指しし、それより高い段を決して匂わせません。各パス:行の引用は、報告書が私たちの手を離れる前に、レビューした正確なリビジョンに対して機械的に解決されます。私たちの仕事は検証可能です。それは意図的なものです。
市場は、ツールがいくつ所見を生成できるかで競い始めました — しかし所見は証人であって評決ではなく、見出しを飾る深刻度ラベルは、誰も検証できない唯一のフィールドです。所見は評決ではない →
流暢さは品質の印ではない。それは故障モードだ。
人がコードを一行書くとき、その一行を疑います。自分が推測していたことを知っている — その疑いは安全装置です。それこそが、実際に試しに行かせるものだからです。
モデルは同じ一行を流暢に書きます。正しい行に使うのとまったく同じ声で。読む側にとって、流暢さは能力に見えます。ジュニアエンジニアが目に見えて粗いものを渡せば、あなたは確認します。モデルが、一行ごとに自信ある理由を添えた磨き上げられた二百行を渡すと、あなたは確認しません。
罠は、モデルが人より頻繁に間違うことではありません。間違った答えが、正しい答えと同じ声でやって来ることです — 外から区別できないのは、内から区別できないからです。
そして同じプロセスが、コードを認証するテストを書き、それを説明するコメントを書きます。三つは一致します。三つとも同じ場所から来たからです。その一致は、三つの独立した確認のように読めます。実際は一つです。
だから有用な問いは、モデルが良いコードを書けるかではありません — 書けます、周りに方法があれば。問いは、検査対象のすべて — コード、テスト、説明、そしてますます、それらを確認するためにあなたが作ったツールまで — が同じ源から来ているとき、あなたのレビュープロセスが実際に何を測っているのか、です。正しくやれば、出力は良い。誤ってやっても、まったく同じように読めます。
レビューが見つけるのは、そのレビュアーが見つけられるものだ。
一つのモデルをコードベースに走らせれば、短い報告書は狭いことを教えてくれます:そのモデルが、そのハーネスで、その日に、これらを表面化させた、と。表面化しなかったものは報告書になく、構造上、あり得ません。
それがどれほど重要かは、異なるレビュアーの盲点がどれだけ重なるかによります — そしてコードレビューについては、誰もそれを測定していません。ベンダー間の相関誤りの研究は、多肢選択ベンチマークと履歴書スクリーニング課題で相当の重なりを見出しました。それが脆弱性発見に持ち越されるかは確立されていません。示されているのは:異なるベンダーが自動的に互いに独立であるわけではない、ということです。
一度のパスが見逃したものを限定できるものはいくつかあります:証明、テストスイート、ファザー、専門家、埋め込んだ既知の欠陥、あるいは最初のものと異なるレビュアー。限定できないもの:同じパスをより自信を持って読むことです。
私たちは、マルチレビュアー方式がより多くの実在欠陥を捕まえることを実証していません — それを検証するために設計した実験は、実行前に取り下げられ、私たちはそれを公に述べています。私たちが立つのは、より狭い論点です:一つのレビュアーのクリーンなパスは範囲の限られた結果であり、それを清浄証明書として読むのは、その結果が支えない推論です。 完全な議論(英語) →
長い形の議論は書き下ろしてあります。私たち自身の手法の限界がどこにあり、何を実証していないかも含めて:平易な言葉での入門と、その背後にある完全な論文はプレプリントとしてdoi:10.5281/zenodo.22030516(CC BY 4.0、英語)で公開されています。査読は受けておらず、そのことを明記しています。
同じモデルを走らせることはできる。独立にはなれない。
自分のコードに複数のAIモデルを走らせることは、私たちのツールを複製しますが、肝心の性質を失います。あなたのチームがレビュアーに見せるものを選び、問いを枠づけ、答えを判定する — そのどの選択も、あなたの前提をまっすぐレビューに持ち帰ります。それは規律の失敗ではなく、構造です。システムの作者は、その裁定者にはなれません。
だから、非の打ちどころのない内部レビューでさえ、自分のコードについての自分の言葉のままです。彼らが買っているのは、署名する意思のある第三者です。私たちは通知機関ではなく、適合性を認証しません。あなたの評価を支え、他の誰の評価によっても再検証できるよう構成された、独立した証拠を作ります。
この手法は、誰が — 何が — あなたのコードを書いたかを気にしません。人間が書いたコードにも独立性は同じ頻度で欠けています。機械が書いたコードは、その欠落を無視できなくするだけです。
いずれ分かることです。私たちから聞く方がいい。
CounterProofは、決済およびデジタル資産カストディのインフラを構築するグループの一部です。この手法が鍛えられたのはそこです — そしてそれは、あなたがそれらの市場で構築しているなら、私たちの関連会社があなたに隣接しているか、あなたと競合している可能性があるということです。
ですから:どのエンゲージメントの前にも、グループが何を構築しどこで運営しているかを、書面で正確にお伝えします。それが受け入れられるかはあなたが決めます。しかも、私たちに何も支払う前に。受け入れられないなら、それは正当な答えであり、最初に聞かせていただく方がいい。
私たちの独立性の主張が何をカバーし、何をカバーしないか、正確に:CounterProofまたは当グループのいかなる会社が書いたコードについても、評価を発行しません。この境界は構造的です。これは誰のコードをレビューするかについての言明であり、あなたのセクターの近くにいかなる商業的利害も持たないという主張ではありません — 本物のドメイン専門性を持つレビュー会社で、後者を正直に主張できるところはなく、私たちはそのふりをしません。
三人、実名で、記録に。
署名付き評価とは、誰かの名前がそこに載っているということです。これがその人たちです — そして、どの名前が何を担うか。
私たちは家族のプラクティスです — 父、息子、娘 — そしてレビューの席は二人です。どちらもデューデリジェンスチームが自力で突き止める事実なので、ここで先に言っておきます:二人のレビュアーの席は、会社よりも少ないエンゲージメントしか受けず、自分のドメイン外のすべてを断り、弱いパスをブランドの陰に隠すことができません。それがこの取引であり、手法が誰かの頭の中ではなく、書き下ろされ機械化されている理由です。
私たちが読んでいるもの、そして確かめているもの。
AIはいまや、ひと午後で数千件の脆弱性所見を生成できる。所見は証人であって評決ではない — そして誰も検証できない唯一のフィールドこそ、皆が水増しするフィールドだ。洪水に溺れずにそれを読む方法。
三つの独立した研究、三つの異なる手法 — 狙いを定めた脆弱性研究、人間対モデルの統制比較、実リポジトリの一年間の観察 — が同じ結論に収束する:AI生成コードは、それとともにやって来た生産性の利得より長生きする、測定可能な品質コストを抱えている。
AIは脆弱性発見のコストを崩壊させた。ビットコインのオープンソースエコシステムでは、その衝突が今月到来した — そしてブリュッセルは、この先に起きることに時計を仕掛けた。