[P1][security] admin 인증 hardening: login rate limit, CSRF/Origin, session cap, audit #31

Closed
opened 2026-05-02 04:34:07 +00:00 by boxqkrtm · 1 comment

문제

admin session은 random token + cookie 기반이며 HttpOnly/Secure/SameSite=Strict 방향은 좋지만, public-facing 운영 기준으로 추가 hardening이 필요합니다.

관련 후보:

  • crates/portal-relay/src/api/admin.rs
  • crates/portal-relay/src/policy/mod.rs

보강 항목

  • login rate limit / failed login backoff
  • admin session global cap 및 idle/absolute timeout 정리
  • failed login audit log
  • state-changing admin endpoint에 CSRF token 또는 Origin/Referer 검증
  • secret 비교는 직접 구현 대신 subtle crate 등 검증된 constant-time 구현 사용
  • admin secret 파일 권한/길이 정책 문서화 및 검사

완료 기준

  • 반복 login 실패가 rate limit/backoff에 걸림
  • session cap 초과 시 오래된 session 정리 또는 신규 거부
  • state-changing admin 요청에 CSRF/Origin 방어 적용
  • admin auth hardening 테스트 추가

검토 기준: 업로드된 Rust portal-relay 코드 정적 리뷰. 리뷰 환경에서는 cargo check/test/clippy를 실행하지 못했습니다.

## 문제 admin session은 random token + cookie 기반이며 HttpOnly/Secure/SameSite=Strict 방향은 좋지만, public-facing 운영 기준으로 추가 hardening이 필요합니다. 관련 후보: - `crates/portal-relay/src/api/admin.rs` - `crates/portal-relay/src/policy/mod.rs` ## 보강 항목 - login rate limit / failed login backoff - admin session global cap 및 idle/absolute timeout 정리 - failed login audit log - state-changing admin endpoint에 CSRF token 또는 Origin/Referer 검증 - secret 비교는 직접 구현 대신 `subtle` crate 등 검증된 constant-time 구현 사용 - admin secret 파일 권한/길이 정책 문서화 및 검사 ## 완료 기준 - 반복 login 실패가 rate limit/backoff에 걸림 - session cap 초과 시 오래된 session 정리 또는 신규 거부 - state-changing admin 요청에 CSRF/Origin 방어 적용 - admin auth hardening 테스트 추가 --- 검토 기준: 업로드된 Rust `portal-relay` 코드 정적 리뷰. 리뷰 환경에서는 `cargo check/test/clippy`를 실행하지 못했습니다.
Owner

수용했습니다. PR #62에서 admin login rate limit/backoff, session cap, failed login audit log, state-changing admin request의 Origin/Referer 검증을 추가했습니다. 검증: cargo test --locked, cargo clippy --locked --all-targets -- -D warnings.

수용했습니다. PR #62에서 admin login rate limit/backoff, session cap, failed login audit log, state-changing admin request의 Origin/Referer 검증을 추가했습니다. 검증: cargo test --locked, cargo clippy --locked --all-targets -- -D warnings.
gofix closed this issue 2026-05-03 18:58:39 +00:00
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
gofix/portal-tunnel-rs#31
No description provided.