[P0][security] /v1/sign keyless signing endpoint 인증/권한 및 replay 방어 추가 #20
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
문제
crates/portal-relay/src/api/mod.rs의/v1/sign경로가 별도 인증 없이keyless::sign()을 호출합니다.crates/portal-relay/src/api/keyless.rs는key_id,algorithm,digest, timestamp, nonce 등 freshness 중심 검증은 하지만 요청자가 권한 있는 client인지 보장하지 못합니다.위험
public endpoint로 노출되면 relay TLS private key 기반 서명 oracle이 될 수 있습니다. 공격자는 임의 digest에 대해 relay 인증서 private key 서명을 받아낼 수 있습니다. timestamp ±30초와 nonce는 freshness 체크일 뿐이며, nonce replay 저장소도 없습니다.
제안
key_id + nonce기반 replay cache 추가 및 TTL 만료 처리완료 기준
/v1/sign요청은 401/403으로 실패검토 기준: 업로드된 Rust
portal-relay코드 정적 리뷰. 리뷰 환경에서는cargo check/test/clippy를 실행하지 못했습니다.수용했습니다. PR #62에서 /v1/sign에 lease access token 기반 인증, key_id+nonce replay cache, digest length/algorithm 제한, raw error 축소를 추가했습니다. 검증: cargo test --locked, cargo clippy --locked --all-targets -- -D warnings.