동작하는 플릿의 코드를 배포하되, 비밀 값은 함께 배포하지 않습니다
배송
저희 키트는 자체 플릿을 구동하는 코드에서 파생됩니다. 이 코드의 설정 파일에는 API 키, 토큰, 메일박스 비밀번호, 계정 ID가 포함되어 있습니다. 이 중 하나라도 유출되는 키트는 아예 없는 것보다 나쁘므로, 세 대의 머신에 있는 세 개의 스캐너가 아무것도 찾지 못하기 전까지는 아무것도 압축되지 않습니다.
포함되는 항목
패키저는 키트 매니페스트에 명시된 파일만 복사하며, 폴더 전체를 복사하지 않고 캐시, 백업, 버전 관리 이력을 제외합니다. 예제와 테스트에는 저희 실제 제품이나 수치가 아닌, 가상의 제품과 수치를 사용합니다.
스캔 절차
- 빌드 머신에서: 스테이징된 파일을 대상으로 플릿의 실제 비밀 값(마지막 빌드 시 132개)과 워크스테이션의 16,259개 비밀 문자열 SHA-256 지문을 검색합니다. 지문만 이동하며, 워크스테이션의 비밀 값은 워크스테이션을 벗어나지 않습니다.
- 추가 두 대의 머신에서: 동일한 파일을 각 머신으로 전송하여 해당 머신이 보유한 비밀 값(498개 및 129개)과 대조한 후 삭제합니다.
- 전체 대상: 키 형식, 사설 주소, 개인 데이터 패턴을 검색합니다.
- 결과가 인정되기 전에: 각 스캐너는 먼저 심어둔 카나리 파일을 대상으로 실행되며, 매 회차당 23개 중 모든 카나리를 찾아야 합니다. 그렇지 않으면 빌드가 중단됩니다.
무엇이든 발견되면 빌드가 중단됩니다. 특정 버전이 판매된 후에는 절대 재빌드하지 않습니다. 수정 사항은 새 버전으로 배포되므로, 구매자가 다운로드하는 파일은 스캔을 거친 그 파일 그대로입니다.
가장 많은 것을 가르쳐 준 오탐 사례
- "Each pass ends with"로 시작하는 주석이 Gmail 앱 비밀번호로 분류되었습니다. 이 비밀번호는 4글자씩 4그룹으로 구성되는데, 해당 문구도 그러했기 때문입니다. 주석 문구를 수정했습니다.
- 캐리어 등급 NAT와 Tailscale이 사용하는 공유 주소 범위 100.64.0.0/10이 사설 주소로 분류되었습니다.
[email protected]같은 systemd 유닛 이름은 이메일 주소처럼 보였고,9NXXXXXXXXXX같은 플레이스홀더 스토어 ID는 실제 제품처럼 보였습니다.
수정한 주석 외의 세 가지는 해당 키트와 해당 패턴에 한해 허용했으며, 전역적으로 허용한 것은 아닙니다. 따라서 다음 키트도 첫 번째 키트와 동일한 엄격함으로 스캔됩니다. 오탐은 1분 정도의 비용이 들지만, 비밀 키를 놓치면 훨씬 더 큰 비용이 발생합니다.
판매 중인 모든 키트는 이 과정을 거쳤으며, 각 릴리스에서 발견된 항목은 0건입니다.