feat: update manifest ECDSA 서명 검증 도입 (v3.8.0) - #37
Merged
Conversation
manifest와 payload가 같은 HTTPS 호스트에서 오기 때문에, SHA-256 체크섬만으로는 그 호스트/레포 자체가 침해됐을 때 위조된 manifest+payload 조합을 걸러낼 수 없었다. install.sh/scripts/lib/update.sh에 공개키를 박아 넣고, 서명 (scripts/update-manifest.txt.sig)이 없거나 다른 키로 만들어졌으면 체크섬이 다 맞아도 설치·업데이트를 하드 실패시킨다. - 서명 방식: ECDSA P-256/SHA-256 (openssl dgst -sign/-verify) — macOS 기본 /usr/bin/openssl(LibreSSL)에서도 동작하는 가장 넓게 지원되는 방식으로 선택. Ed25519는 최신 OpenSSL의 pkeyutl -rawin이 필요해 LibreSSL에서 안 됨 - 서명 개인키는 이 레포/CI 어디에도 없음 — 릴리스 담당자 로컬에만 존재 (scripts/sign-update-manifest.sh). CI secret으로 두면 계정/레포 탈취 시 같이 털려서 원래 막으려던 위협모델을 방어하지 못함 - 기존 optional UBS_UPDATE_MANIFEST_SHA256 pin 제거 — 서명이 항상 켜진 상위호환이라 두 메커니즘을 유지할 이유가 없음 - validate.yml: 커밋된 서명이 커밋된 manifest·공개키와 실제로 맞는지, 그리고 install.sh/update.sh에 박힌 공개키 두 벌이 서로 같은지 CI에서 검증 - 4개 언어 README, 테스트 스위트(install/update) 동기화 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
kimdzhekhon
added a commit
that referenced
this pull request
Jul 29, 2026
manifest와 payload가 같은 HTTPS 호스트에서 오기 때문에, SHA-256 체크섬만으로는 그 호스트/레포 자체가 침해됐을 때 위조된 manifest+payload 조합을 걸러낼 수 없었다. install.sh/scripts/lib/update.sh에 공개키를 박아 넣고, 서명 (scripts/update-manifest.txt.sig)이 없거나 다른 키로 만들어졌으면 체크섬이 다 맞아도 설치·업데이트를 하드 실패시킨다. - 서명 방식: ECDSA P-256/SHA-256 (openssl dgst -sign/-verify) — macOS 기본 /usr/bin/openssl(LibreSSL)에서도 동작하는 가장 넓게 지원되는 방식으로 선택. Ed25519는 최신 OpenSSL의 pkeyutl -rawin이 필요해 LibreSSL에서 안 됨 - 서명 개인키는 이 레포/CI 어디에도 없음 — 릴리스 담당자 로컬에만 존재 (scripts/sign-update-manifest.sh). CI secret으로 두면 계정/레포 탈취 시 같이 털려서 원래 막으려던 위협모델을 방어하지 못함 - 기존 optional UBS_UPDATE_MANIFEST_SHA256 pin 제거 — 서명이 항상 켜진 상위호환이라 두 메커니즘을 유지할 이유가 없음 - validate.yml: 커밋된 서명이 커밋된 manifest·공개키와 실제로 맞는지, 그리고 install.sh/update.sh에 박힌 공개키 두 벌이 서로 같은지 CI에서 검증 - 4개 언어 README, 테스트 스위트(install/update) 동기화 Co-authored-by: 김재현 <231584193+kimdzhekhon@users.noreply.github.com> Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
kimdzhekhon
added a commit
that referenced
this pull request
Jul 29, 2026
manifest와 payload가 같은 HTTPS 호스트에서 오기 때문에, SHA-256 체크섬만으로는 그 호스트/레포 자체가 침해됐을 때 위조된 manifest+payload 조합을 걸러낼 수 없었다. install.sh/scripts/lib/update.sh에 공개키를 박아 넣고, 서명 (scripts/update-manifest.txt.sig)이 없거나 다른 키로 만들어졌으면 체크섬이 다 맞아도 설치·업데이트를 하드 실패시킨다. - 서명 방식: ECDSA P-256/SHA-256 (openssl dgst -sign/-verify) — macOS 기본 /usr/bin/openssl(LibreSSL)에서도 동작하는 가장 넓게 지원되는 방식으로 선택. Ed25519는 최신 OpenSSL의 pkeyutl -rawin이 필요해 LibreSSL에서 안 됨 - 서명 개인키는 이 레포/CI 어디에도 없음 — 릴리스 담당자 로컬에만 존재 (scripts/sign-update-manifest.sh). CI secret으로 두면 계정/레포 탈취 시 같이 털려서 원래 막으려던 위협모델을 방어하지 못함 - 기존 optional UBS_UPDATE_MANIFEST_SHA256 pin 제거 — 서명이 항상 켜진 상위호환이라 두 메커니즘을 유지할 이유가 없음 - validate.yml: 커밋된 서명이 커밋된 manifest·공개키와 실제로 맞는지, 그리고 install.sh/update.sh에 박힌 공개키 두 벌이 서로 같은지 CI에서 검증 - 4개 언어 README, 테스트 스위트(install/update) 동기화 Co-authored-by: 김재현 <231584193+kimdzhekhon@users.noreply.github.com> Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
UBS_UPDATE_MANIFEST_SHA256pin 제거(서명이 상위호환)Test plan
curl install.sh | bash로 신규 설치 검증 (태그는 이 PR 머지 후 별도 진행)🤖 Generated with Claude Code