CounterProof는 현대적 코드베이스 — 무엇보다 기계가 작성한 코드 — 를 위한 독립적 적대적 리뷰 프랙티스입니다. 우리는 사내에서 만들 수 없는 단 하나를 제공합니다: 규제기관, 인수자, 보험사, 기업 고객의 정밀 검증을 견디도록 구축된, 독립적이고 서명되었으며 증거 등급이 매겨진 보안 평가입니다.
모델이 작성하고 같은 모델이 리뷰한 코드는, 아무에게도 리뷰받지 않은 것이다.
아무도 코드 리뷰 자체를 사지 않는다. 사는 것은 그것이 열어주는 것이다.
보안 평가가 갖고 싶어서 잠에서 깬 것은 아닐 겁니다. 무언가가 당신에게 증거를 요구하고 있는 것입니다.
이 넷 중 셋은 당신 자신의 코드에 대한 당신 자신의 말을 결코 받아들이지 않습니다 — 그들이 사는 것은 독립성이고, 그것은 어떤 팀도 자기 작업에 대해서는 공급할 수 없는 유일한 속성입니다. 네 번째인 규제기관은 자체 평가를 흔히 받아들입니다 — 그리고 그 뒤에 있는 모든 기록에 대해 당신에게 책임을 묻습니다. 어느 쪽이든 증거는 버텨야 합니다. 그것이 우리가 만드는 것입니다.
산출물이 핵심입니다.
하나의 인게이지먼트는 영속적인 인게이지먼트 식별자(CPR-YYYY-NNN — 메인테이너, 인수자, 수정 커밋이 인용하는 것) 아래 CounterProof Assessment를 산출합니다. 각 발견은 당신의 소스에 대해 확인되거나 — 정확한 파일과 행, 재현 경로, 영향 분류 — 명시적으로 '개연성만 있음'으로 등급이 매겨집니다. 부풀림도, 스캐너 생성물도, 조치할 수 없는 것도 없습니다.
각 발견은 실제로 도달한 증거 단계 — 소스 추적, 컴파일 증명, 테스트, 실행 재현 — 를 명시하며, 그보다 높은 단계를 결코 암시하지 않습니다. 각 경로:행 인용은 보고서가 우리 손을 떠나기 전에, 우리가 검토한 정확한 리비전에 대해 기계적으로 해석됩니다. 우리 작업은 검증 가능합니다. 의도된 것입니다.
시장은 도구가 몇 개의 발견을 생성할 수 있는지로 경쟁하기 시작했습니다 — 그러나 발견은 증인이지 평결이 아니며, 헤드라인을 만드는 심각도 라벨은 아무도 검증할 수 없는 유일한 필드입니다. 발견은 평결이 아니다 →
유창함은 품질의 표시가 아니다. 그것은 고장 모드다.
사람이 코드 한 줄을 쓸 때, 그 줄을 의심합니다. 자신이 추측하고 있었다는 것을 알고 있습니다 — 그 의심이 안전장치입니다. 바로 그것이 실제로 시험해 보게 만들기 때문입니다.
모델은 같은 줄을 유창하게 씁니다. 정확히, 올바른 줄에 쓰는 것과 같은 목소리로. 읽는 사람에게 유창함은 능력으로 읽힙니다. 주니어 엔지니어가 눈에 띄게 거친 것을 건네면 당신은 확인합니다. 모델이 각 줄마다 자신 있는 근거를 붙인 다듬어진 이백 줄을 건네면, 당신은 확인하지 않습니다.
함정은 모델이 사람보다 더 자주 틀린다는 것이 아닙니다. 틀린 답이 맞는 답과 같은 목소리로 도착한다는 것입니다 — 밖에서 구별할 수 없는 이유는, 안에서 구별할 수 없기 때문입니다.
그리고 같은 프로세스가 코드를 인증하는 테스트를 쓰고, 그것을 설명하는 주석을 씁니다. 셋은 일치합니다. 셋 다 같은 곳에서 나왔기 때문입니다. 그 일치는 세 개의 독립적 확인처럼 읽힙니다. 실은 하나입니다.
그러므로 유용한 질문은 모델이 좋은 코드를 쓸 수 있는가가 아닙니다 — 쓸 수 있습니다, 주위에 방법이 있다면. 질문은, 검사하는 모든 것 — 코드, 테스트, 설명, 그리고 점점 더 그것들을 확인하려고 당신이 만든 도구까지 — 이 같은 원천에서 나왔을 때, 당신의 리뷰 프로세스가 실제로 무엇을 측정하고 있는가입니다. 제대로 하면 출력은 좋습니다. 잘못해도 정확히 똑같이 읽힙니다.
리뷰는 그 리뷰어가 찾을 수 있는 것을 찾는다.
하나의 모델을 코드베이스에 돌리면, 짧은 보고서는 좁은 것을 알려줍니다: 그 모델이, 그 하네스에서, 그날, 이것들을 표면화했다고. 표면화하지 못한 것은 보고서에 없고, 구조상 있을 수 없습니다.
그것이 얼마나 중요한지는 서로 다른 리뷰어들의 사각지대가 얼마나 겹치는지에 달려 있습니다 — 코드 리뷰에 대해서는 아무도 그것을 측정하지 않았습니다. 벤더 간 상관 오류 연구는 객관식 벤치마크와 이력서 심사 과제에서 상당한 겹침을 발견했습니다. 그것이 취약점 발견으로 이어지는지는 확립되지 않았습니다. 보여주는 것은: 서로 다른 벤더가 자동으로 서로 독립적이지는 않다는 것입니다.
한 번의 패스가 놓친 것을 한정할 수 있는 것은 여럿 있습니다: 증명, 테스트 스위트, 퍼저, 전문가, 심어 놓은 결함, 또는 첫 번째와 다른 리뷰어. 한정할 수 없는 것: 같은 패스를 더 자신 있게 읽는 것입니다.
우리는 다중 리뷰어 리뷰가 더 많은 실제 결함을 잡는다는 것을 입증하지 않았습니다 — 그것을 검증하려고 설계한 실험은 실행 전에 철회되었고, 우리는 이를 공개적으로 말합니다. 우리가 서 있는 것은 더 좁은 논점입니다: 한 리뷰어의 깨끗한 패스는 범위가 한정된 결과이며, 그것을 청결 증명서로 읽는 것은 그 결과가 지지하지 않는 추론입니다. 전체 논증 (영어) →
긴 형태의 논증은 글로 남겨 두었습니다. 우리 방법의 한계가 어디에 있고 무엇을 입증하지 못했는지도 포함해서: 평이한 언어의 입문, 그리고 그 뒤의 전체 논문은 프리프린트로 doi:10.5281/zenodo.22030516(CC BY 4.0, 영어)에 공개되어 있습니다. 동료 평가를 받지 않았으며, 그렇게 명시합니다.
같은 모델을 돌릴 수는 있다. 독립적일 수는 없다.
자기 코드에 여러 AI 모델을 돌리는 것은 우리 도구를 복제하지만, 중요한 속성을 잃습니다. 당신의 팀이 리뷰어에게 보여줄 것을 고르고, 질문의 틀을 짜고, 답을 판정합니다 — 그 선택 하나하나가 당신의 전제를 곧장 리뷰로 되돌려 놓습니다. 그것은 규율의 실패가 아니라 구조입니다. 시스템의 저자는 그 시스템의 심판이 될 수 없습니다.
그래서 흠잡을 데 없는 내부 리뷰조차 여전히 자기 코드에 대한 자기 말입니다. 그들이 사는 것은 서명할 의사가 있는 제3자입니다. 우리는 인증기관이 아니고 적합성을 인증하지 않습니다. 당신의 평가를 뒷받침하고, 다른 누구의 평가로도 재검토될 수 있게 구성된 독립적 증거를 만듭니다.
이 방법론은 누가 — 무엇이 — 당신의 코드를 썼는지 상관하지 않습니다. 사람이 쓴 코드에도 독립성은 똑같이 자주 없습니다. 기계가 쓴 코드는 그 간극을 무시할 수 없게 만들 뿐입니다.
어차피 알게 될 일입니다. 우리에게서 듣는 편이 낫습니다.
CounterProof는 결제 및 디지털 자산 커스터디 인프라를 구축하는 그룹의 일부입니다. 이 방법론이 벼려진 곳이 거기입니다 — 그리고 그것은, 당신이 그 시장에서 무언가를 만들고 있다면, 우리 계열사가 당신 곁에 있거나 당신과 경쟁하고 있을 수 있다는 뜻입니다.
그래서: 어떤 인게이지먼트든 시작 전에, 그룹이 무엇을 만들고 어디서 운영하는지 서면으로 정확히 알려드립니다. 받아들일지는 당신이 결정합니다. 그것도 우리에게 아무것도 지불하기 전에. 받아들일 수 없다면 그것은 정당한 답이고, 처음에 듣는 편이 낫습니다.
우리의 독립성 주장이 무엇을 포함하고 포함하지 않는지, 정확히: CounterProof 또는 우리 그룹의 어떤 회사가 작성한 코드에 대해서도 평가를 발행하지 않습니다. 그 경계는 구조적입니다. 이것은 누구의 코드를 리뷰하는가에 대한 진술이지, 당신의 섹터 근처에 어떤 상업적 이해관계도 없다는 주장이 아닙니다 — 진짜 도메인 전문성을 가진 리뷰 회사 중 후자를 정직하게 주장할 수 있는 곳은 없고, 우리는 그런 척하지 않을 것입니다.
세 사람, 실명으로, 기록에.
서명된 평가란 누군가의 이름이 그 위에 있다는 뜻입니다. 이들이 그 사람들입니다 — 그리고 어떤 이름이 무엇을 짊어지는지.
우리는 가족 프랙티스입니다 — 아버지, 아들, 딸 — 그리고 리뷰 벤치는 두 사람입니다. 둘 다 실사팀이 스스로 알아낼 사실이므로, 여기서 먼저 말해 둡니다: 두 명의 리뷰어 벤치는 회사보다 적은 인게이지먼트를 받고, 자기 도메인 밖의 모든 것을 거절하며, 약한 패스를 브랜드 뒤에 숨길 수 없습니다. 그것이 이 거래이고, 방법론이 누군가의 머릿속이 아니라 글로 적히고 기계화되어 있는 이유입니다.
우리가 읽고 있는 것, 그리고 확인하고 있는 것.
AI는 이제 오후 한나절에 수천 건의 취약점 발견을 생성할 수 있다. 발견은 증인이지 평결이 아니다 — 그리고 아무도 검증할 수 없는 유일한 필드가 바로 모두가 부풀리는 필드다. 홍수에 빠지지 않고 그것을 읽는 법.
세 개의 독립적 연구, 세 가지 다른 방법 — 표적 취약점 연구, 인간 대 모델 통제 비교, 실제 저장소 1년 관찰 — 이 같은 결론으로 수렴한다: AI가 생성한 코드는 그것과 함께 온 생산성 이득보다 오래 살아남는, 측정 가능한 품질 비용을 안고 있다.
AI는 취약점 발견의 비용을 붕괴시켰다. 비트코인의 오픈소스 생태계에서 그 충돌은 이번 달에 도착했다 — 그리고 브뤼셀은 다음에 벌어질 일에 시계를 걸어 두었다.