本文へスキップ Hacktron ログイン [S]
Hacktron ログイン [S] 導入事例 ブログ ドキュメント お問い合わせ ログイン

Hacktron が hackajob のすべてのプルリクエストに、コードベース全体のセキュリティコンテキストをもたらす方法


hackajob
Hacktron Review

, , X, LinkedIn

共有

Hacktron が hackajob のすべてのプルリクエストに、コードベース全体のセキュリティコンテキストをもたらす方法

XLinkedIn
1 分
81.1%
トリアージした検出結果のうち、対応が必要だった割合
92 件
解決済みの検出結果

「課題は、手間や専門知識ではありませんでした。」

「問題はコンテキストでした。2 人の目でチェックしていても、レビューのたびにそれほど多くのコンテキストを頭に入れておくことは誰にもできません。」

Dragos Dimitriu
コンプライアンス責任者

hackajob について

2014 年に設立された hackajob は、American Express、Tesco、Barclays、HSBC、Sainsbury’s など、50 を超える業界の 200 社以上が利用する AI 採用テクノロジーを開発しています。

主力製品の Archer は、企業の採用チームのために候補者を見つけ、アプローチし、選考します。150 万人の審査済み候補者と 8 億件以上のインデックス済みプロフィールをもとに、毎日 25 万人の候補者を進行中の採用要件と照らし合わせて選考しています。

この規模では、顧客ごとに区切られたデータに対する認可制御が極めて重要になります。

課題:レビュアーが見るのは差分であって、コールグラフではない

hackajob にはすでに堅牢なレビュープロセスがありました。すべてのプルリクエストは、作成者以外の少なくとも 2 人のエンジニアがレビューしていました。制約はレビューの手間ではなく、各レビュアーが把握できるシステムのコンテキストの量でした。

「レビュアーが見るのは差分であって、コールグラフ全体ではありません。そのため、すり抜けた欠陥の多くは、変更がシステムの別の場所にあるコードとどう相互作用するかをたどって初めて見えてくるものでした。」

Dragos Dimitriu
コンプライアンス責任者

Hacktron の役割:すべての PR を継続的にレビュー

hackajob は現在、すべてのプルリクエストを Hacktron Review にかけています。Hacktron は各変更をコードベース全体にわたって追跡し、レビューのワークフロー内で検出結果を提示し、修正後には変更を再スキャンします。また hackajob は重大度のしきい値を設定しており、Hacktron がそのしきい値を超える問題を見つけるとマージがブロックされます。

「Hacktron は、手作業のチェックで現実的に見つけられる以上のものを提示してくれます。しかも、誰かがセキュリティに関係すると指摘した PR だけでなく、すべての PR で実行されます。」

「現在、増え続けるプロジェクト全体で週に 200~250 回のスキャンを実行しています。これには修正後の再スキャンも含まれますが、それでもこの深さで手作業でレビューすることはできなかった量です。」

Dragos Dimitriu
コンプライアンス責任者

検出結果の分析

hackajob で Hacktron が初めてレビューを行った 2026 年 6 月以降の結果は次のとおりです。

1,846 件のプルリクエスト295 件中 143 件をトリアージ98 件(有効)18 件(リスク受容)27 件(誤検知)54 件(高)44 件(中) 1,846 件のプルリクエスト295 件中 143 件をトリアージ98 件(有効)18 件(リスク受容)27 件(誤検知)54 件(高)44 件(中)

トリアージした 143 件の検出結果のうち、81.1% はノイズではなく本物の問題でした。

顧客をまたいでデータを露出させるオブジェクトレベル認可の不備(重大度「高」)

Hacktron は、Archer のアシスタントチャット機能を追加するプルリクエストで、重大度「高」のオブジェクトレベル認可の不備を発見しました。

このエンドポイントは、book スコープのリクエストでは所有権を確認していましたが、account スコープや cohort スコープのリクエストでは確認していませんでした。一般ユーザーが別の顧客の識別子を指定すると、自分の認可範囲を超えて、その顧客のコミュニケーションデータやセンチメントデータを取得できる状態でした。

// A book scope may only be the caller's own book unless they're an admin.
if (
parsed.data.scope.kind === "book" &&
parsed.data.scope.ownerEmail !== user.email &&
!user.isAdmin
) {
return new Response("Forbidden", { status: 403 });
}
// <- no equivalent check existed for "account" or "cohort" scopes

変更されたファイル自体は、内部的には一貫しているように見えました。問題が見えてきたのは、Hacktron が異なるスコープの種類の間で認可の挙動を比較したときでした。

「差分には何もおかしな点がありませんでした。だからこそ、レビュアーの経験にかかわらず、手作業のレビューでは見逃されがちな類いの問題なのです。」

Dragos Dimitriu
コンプライアンス責任者

Hacktron は、この問題がメインブランチに到達する前に捕捉しました。hackajob は共通の認可関数と、影響を受けるパスに対する回帰テストを導入し、同じプルリクエスト内で 1 時間足らずで修正しました。

結果:コードベース全体のセキュリティコンテキスト

現在は、すべてのプルリクエストがコードベース全体を踏まえた同じセキュリティレビューを受けています。トリアージとマージの判断は引き続きエンジニアが担い、Hacktron は、コードが main に到達する前にその判断を下すためのシステムのコンテキストを提供します。

「Hacktron が PR の段階で見つけてくれたので、メインブランチに入ることはありませんでした。」

「私たちにとって大事なのはまさにそこです。」

Dragos Dimitriu
コンプライアンス責任者

導入事例

お問い合わせ

デモを予約、または無料で始める。

[↓] [↑] [enter] で開く
メニュー
[M]
メニューの次の項目
[J]
メニューの前の項目
[K]
検索
[F]
質問する
[A]
ログイン
[S]
ページをコピー
[C]
読み上げ
[L]
両端揃え
[R]
言語
[G]
ダークモード
[D]
ハイコントラスト
[H]
ショートカット
[I]
閉じる
[Esc]