VPN 포털의 다운로드 버튼은 정확히 하나의 파일을 반환하며, 그 파일은 구성 프로필이 함께 이동하는 공급업체의 기성 설치 프로그램이거나 조직이 직접 컴파일한 빌드라는 아주 다른 두 가지일 수 있습니다. 페이지는 두 경우 모두 같아 보이므로 버튼만으로는 어느 것인지 알 수 없습니다. 그 뒤에는 세 가지 질문이 있습니다 — 실행 파일을 누가 게시했는지, 설치가 어떤 구성을 기록하는지, 다음 클라이언트 릴리스가 나올 때 누가 이를 수리하는지. 첫 번째는 아티팩트 메타데이터에서, 두 번째는 패키지 내용에서, 세 번째는 배포를 소유한 팀에서만 답할 수 있습니다.

브라우저 자물쇠는 전송을 덮을 뿐, 아티팩트를 덮지 않습니다.

다운로드 엔드포인트가 실제로 반환하는 것

대부분의 포털은 다운로드 요청을 작은 핸들러에 넘기며, 핸들러는 저장된 파일을 스트리밍하거나 즉석에서 파일을 조립한 뒤 응답이 나가기 전에 파일 이름과 콘텐츠 유형을 설정합니다. 도착하는 것은 MSI, PKG, DEB 또는 RPM, 또는 그중 하나를 감싸는 자동 압축 해제 래퍼라는 컨테이너입니다. 안에는 클라이언트 바이너리가 있으며, 파일 이름만으로는 그 바이너리가 공급업체에서 왔는지 내부 빌드 파이프라인에서 왔는지 신뢰할 수 있게 말할 수 없습니다. client-setup.exe라는 파일은 출처의 사실이 아니라 명명 결정을 기록합니다.

다운로드한 바이트를 공급업체가 게시한 체크섬과 비교하십시오. 불일치는 악의를 증명하지 않습니다; 파일이 공급업체 빌드가 아님을 증명하며, 바로 그것이 조치할 가치가 있는 차이입니다.

프로필이 클라이언트로 들어가는 곳

미리 채워진 설정은 보통 별도 파일로 이동하며, 설치 프로그램이 이를 사용자별 또는 컴퓨터별 경로에 복사합니다: Windows에서는 JSON 또는 XML 프로필, macOS에서는 구성 프로필, Linux에서는 /etc 아래의 조각입니다. 그 파일의 값 — 게이트웨이 호스트 이름, 신뢰 앵커, 때로는 등록 자료 — 은 첫 실행 시 클라이언트의 기본값이 됩니다. 그래서 한 번의 다운로드가 코드뿐 아니라 비밀도 운반할 수 있습니다.

업그레이드 경로가 프로필로 무엇을 하는지 물으십시오. 패키징에 따라 클라이언트 업데이트를 견딜 수도, 그것에 의해 덮어쓰일 수도, 새 버전에서 스키마 검증에 실패할 수도 있습니다.

서명 체인이 증명하지 않는 것

코드 서명은 게시자 신원을 파일 해시에 묶으며, Windows에서는 Authenticode 타임스탬프 덕분에 서명이 이를 만든 인증서보다 오래 살 수 있습니다. 유효한 결과는 어느 게시자가 이 바이트에 서명했는지, 이후 변경되었는지라는 두 가지 질문에 답합니다. 설치 프로그램의 서비스, 레지스트리 쓰기, 함께 제공되는 드라이버를 열거하지 않으며, 그 게시자를 여기서 신뢰해야 하는지도 결정하지 않습니다. Microsoft의 Authenticode 문서 는 그 메커니즘을 설명하고 이 좁은 범위에 대해 분명히 밝힙니다.

포털 인증은 세 번째 질문, 즉 세션이 의도한 서버에 도달했는지에 답합니다. 세 가지 다른 검사, 세 가지 다른 실패 방식.

누군가 실행하기 전에 아티팩트를 검증하십시오

파일을 격리된 컴퓨터에 두고 무엇이든 실행하기 전에 메타데이터를 읽으십시오. 이 명령은 세 가지 주요 플랫폼에서 게시자 질문에 답합니다.

# Windows PowerShell
Get-AuthenticodeSignature .\client-setup.exe | Format-List Status, SignerCertificate, TimeStamperCertificate

# macOS
pkgutil --check-signature ./Client.pkg
codesign -dv --verbose=4 /Applications/Client.app

# Debian/Ubuntu
dpkg-deb -I ./client_amd64.deb
sha256sum ./client_amd64.deb

상태 단어만이 아니라 서명자의 주체를 읽으십시오. 내부 인증 기관이 내부 빌드에 서명하는 것은 예상되는 일입니다; 공급업체 릴리스라고 주장하는 패키지에 같은 인증서가 있는 것은 예상되지 않습니다.

프로필만 있는 패키지의 경우 아카이브를 열고 포함된 모든 호스트 이름과 키를 설명 책임이 있는 데이터로 취급하십시오. 프로필에 재사용 가능한 것이 있으면 포털 배포는 이를 배포 일정이 있는 공유 비밀로 바꿉니다.

배포 전 소유권 확정

마지막 질문에는 명령이 없습니다. 공급업체가 새 클라이언트를 내놓을 때 누가 아티팩트를 업데이트하는지, 내부 빌드의 서명 키를 누가 보유하는지, 엔드포인트가 이동할 때 프로필을 어떻게 교체하는지 알아내십시오. 그 이름을 다운로드 링크 옆에 적어 두십시오.

아무도 그 답을 소유하지 않는다면, 그 다운로드는 유지보수 계약이 없는 배포 채널이며, 그것이 보고할 가치가 있는 발견입니다.

관련 글