본문으로 건너뛰기 Hacktron 로그인 [S]
Hacktron 로그인 [S] 고객 사례 블로그 문서 문의 로그인

Hacktron이 hackajob의 모든 풀 리퀘스트에 코드베이스 전반의 보안 컨텍스트를 더하는 방법


hackajob
Hacktron Review

, , X, LinkedIn

공유

Hacktron이 hackajob의 모든 풀 리퀘스트에 코드베이스 전반의 보안 컨텍스트를 더하는 방법

XLinkedIn
3분
81.1%
분류된 발견 사항 중 조치가 필요했던 비율
발견 사항 92건
해결 완료

“문제는 노력이나 전문성이 아니었습니다.

“컨텍스트였습니다. 두 사람이 함께 본다 해도, 리뷰할 때마다 그만큼의 컨텍스트를 머릿속에 담아 둘 수 있는 사람은 없습니다.”

Dragos Dimitriu
컴플라이언스 책임자

hackajob 소개

2014년에 설립된 hackajob은 American Express, Tesco, Barclays, HSBC, Sainsbury’s를 비롯해 50개가 넘는 산업 분야의 200개 이상 기업이 사용하는 AI 채용 기술을 만듭니다.

대표 제품인 Archer는 기업 채용 팀을 위해 후보자를 찾고, 접촉하고, 자격을 검증합니다. 검증된 후보자 150만 명과 색인된 프로필 8억 개 이상을 바탕으로, 매일 25만 명의 후보자를 진행 중인 채용 요건과 대조해 검증합니다.

이런 규모에서는 고객 단위로 구분된 데이터에 대한 권한 부여 통제가 매우 중요합니다.

과제: 리뷰어는 호출 그래프가 아니라 diff를 봅니다

hackajob은 이미 탄탄한 리뷰 프로세스를 갖추고 있었습니다. 모든 풀 리퀘스트는 작성자가 아닌 엔지니어 최소 두 명이 리뷰했습니다. 제약은 리뷰에 들이는 노력이 아니라, 각 리뷰어가 활용할 수 있는 시스템 컨텍스트의 양이었습니다.

“리뷰어는 전체 호출 그래프가 아니라 diff를 봅니다. 그래서 빠져나간 결함은 대개 변경 사항이 시스템의 다른 곳에 있는 코드와 어떻게 상호작용하는지 추적해야만 보이는 것들이었습니다.”

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이 범위 유형별 권한 부여 동작을 비교했을 때 비로소 드러났습니다.

“diff에는 잘못돼 보이는 부분이 전혀 없었습니다. 바로 그래서 리뷰어의 경험과 상관없이 수동 리뷰에서 놓치기 쉬운 유형입니다.”

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]