앤트로픽이 Claude로 코드 공격 표면을 자동으로 줄이는 방법을 공개했다
앤트로픽이 Claude를 활용해 코드베이스의 공격 표면을 자동으로 분석하고 축소하는 연구 결과를 내놨다. 핵심은 취약점을 하나하나 찾아 패치하는 방식이 아니라, 실제 배포 환경에서 도달 가능한 코드 경로를 지도처럼 그려낸 뒤 배포에 필요 없는 노출을 걷어내는 접근이다. 글은 앤트로픽의 Chris Rohlf가 작성했다.
규모부터 상당하다. C, C++, Java, PHP, Python으로 작성된 오픈소스 프로젝트 25개, 총 500만 줄이 넘는 코드가 분석 대상이었다. Claude는 이들 프로젝트에서 1만 7천 개가 넘는 설정 옵션 목록을 만들었고, 그중 3,842개를 보안과 직결되는 통제나 기능의 설정으로 분류했다. 이 과정에서 확인된 이슈는 493건이다.
분석에는 세 가지 렌즈가 쓰였다. 첫째는 기본 설정(default configuration)으로, 제품이 기본값 그대로 배포됐을 때 도달 가능하지만 어떤 기본 기능도 쓰지 않는 코드를 찾는다. 둘째는 설정 조합(configuration interaction)으로, 각각은 합리적으로 보이지만 함께 켜면 보안 통제가 꺼지거나 동작이 정의되지 않는 옵션 쌍을 잡아낸다. 셋째는 조기 도달 가능성(early reachability)으로, 인증 같은 보안 관문을 통과하기 전이나 사용자 상호작용 없이, 혹은 프로토콜 상태 전이 이전에 실행되는 민감한 코드를 식별한다.
프로젝트는 성격에 따라 세 갈래로 나뉘었다. 누구나 접근 가능한 서비스를 위한 Public 10개, 인증된 사용자만 대상으로 하는 Gated 11개, 운영자 자신의 사설 환경용 Private 4개다. 이 구분은 결과 해석의 기준이 된다. Public 프로젝트는 기본 설정에서 상당 부분이 도달 가능한 게 정상이지만, Gated 프로젝트는 반대여야 하기 때문이다.
가장 눈에 띄는 대목은 Gated 그룹이었다. 11개 프로젝트 전부에서 의도치 않게 도달 가능한 코드가 나왔다. 기본 설정 상태에서 불필요하게 열려 있던 인증 전 표면이 93곳, 인증이 이뤄지기 전에 코드가 실행되거나 상태가 기록되는 지점이 37곳, 관리자가 설정한 인증 전 통제를 조용히 약화시키는 설정 조합이 61건이었다. 각각은 그 자체로 즉시 악용 가능한 수준은 아니지만, 결과적으로 필요 이상으로 넓은 공격 표면을 만든다.
설정 조합 쪽 성과도 컸다. 보안에 민감한 조합 162건이 오류도 경고도 없이, 그리고 상호작용 시 어떤 동작을 해야 하는지에 대한 문서도 없이 그대로 허용되고 있었다. 이 가운데 94건은 보안 통제를 소리 없이 꺼버렸고, 나머지 68건은 같은 보안 메커니즘 안에서 앞뒤가 맞지 않는 상태를 만들었다. 예를 들어 설정상 비활성화라고 적혀 있는데 리스너나 로그인 경로는 여전히 도달 가능하거나, 두 설정이 충돌할 때 어느 쪽이 이길지가 설정 파일 내 순서에 따라 달라지는 식이다.
서로 무관한 프로젝트 네 곳에서 독립적으로 나타난 패턴도 있다. 관리자가 원격 클라이언트 접근 규칙을 IP 대신 호스트명이나 와일드카드로 작성하면, 서버는 접속한 클라이언트의 호스트명과 규칙을 비교해야 한다. 그런데 서버가 호스트명을 알 수 있는지는 역방향 DNS 조회를 제어하는 별도 옵션에 달려 있고, 대부분의 프로젝트에서 이 조회는 꺼져 있었다.
이 연구가 나온 배경에는 방어 쪽 활용에 대한 문제의식이 있다. 프론티어 모델이 보안 취약점을 찾아내고 실제로 악용까지 할 수 있다는 데이터는 이미 충분히 쌓였다. 그러나 취약점을 개별적으로 찾아 고치는 방식은 확장성이 나쁘다. 치명적인 취약점 하나를 고쳐도 남아 있는 다른 취약점에 대해서는 아무것도 알려주지 않기 때문이다. 반면 코드 도달 가능성을 줄이면 아직 발견되지 않은 취약점, 심지어 이미 악용되고 있는 취약점의 심각도까지 낮출 수 있다.
개발자 입장에서 이 방식은 당장 적용해볼 만하다. 자기 서비스의 설정 옵션 목록을 먼저 뽑아내고, 그중 보안과 관련된 항목이 기본값에서 어떤 상태인지, 인증 전에 실행되는 코드가 어디까지 뻗어 있는지 확인하는 것만으로 점검의 출발점이 된다. 특히 옵션 두 개를 함께 켰을 때 보안 통제가 조용히 사라지는 조합은 문서화가 안 돼 있으면 사람이 놓치기 쉽다.
다만 이 기법이 알려지지 않은 취약점 자체를 없애주지는 않는다. 코드에 존재하는 결함은 그대로 남고, 다만 도달하기 어렵게 만들어 심각도를 낮출 뿐이다. 연구에서 나온 493건 역시 곧바로 익스플로잇으로 이어지는 것은 아니며, 공격 표면이 불필요하게 넓다는 신호에 가깝다.