SettleLab
Assessment board
EXAM 02Security Testing

Security Testing 실무 시험

권한, pause, fuzz/invariant, EIP-712, upgrade, monitoring을 리뷰 관점에서 평가한다.

출제 목적

보안 지식을 암기하는 것이 아니라 실패 상태를 테스트와 리뷰 체크리스트로 바꾸는 능력을 평가한다.

난이도 정책

  • 핵심 문제는 권한과 pause 정책의 위험을 묻는다.
  • 심화 문제는 invariant와 서명 검증을 코드로 표현하게 한다.
  • 운영 문제는 upgrade/monitoring runbook을 연결한다.

채점 정책

  • 객관식은 취약한 설계와 안전한 검증 순서를 구분한다.
  • 코드형은 invariant, role boundary, replay 방지 신호를 점수화한다.
Preview mode

로그인 후 제출 가능

문제, Starter code, 루브릭은 미리 볼 수 있다. 답안 작성과 점수 저장은 로그인 후 제공된다.

객관식핵심3

01pause 권한 설계

결제형 stablecoin contract에 pause 기능을 넣을 때 가장 안전한 운영 기준은?

객관식심화3

02EIP-712 리뷰 포인트

EIP-712 서명 결제 리뷰에서 replay 위험을 줄이기 위해 반드시 확인해야 하는 조합은?

코드 작성심화10

03Stablecoin invariant 작성

mint, burn, pause, transfer가 있는 stablecoin에 대한 Foundry invariant 의사코드를 작성하라. totalSupply와 balances 합, paused 상태에서 transfer 실패, minter role 경계를 포함해야 한다.

Starter code
function invariant_stablecoinAccounting() public {
  // write invariant checks
}

채점 루브릭

  • totalSupply와 balances 합을 비교한다.
  • paused 상태에서 transfer가 실패해야 한다.
  • minter 권한 없이 supply가 증가하지 않아야 한다.
  • handler 또는 tracked actors를 통해 상태 공간을 제한한다.

자동 채점 신호

  • supply accounting
  • pause invariant
  • transfer revert
  • minter role
  • handler/tracked actors
코드 작성핵심9

04서명 검증 체크 함수 작성

서명 결제 요청을 검증하는 verifySignedPayment 함수를 작성하라. request와 context를 받아 'ok' | 'bad_signer' | 'nonce_used' | 'expired' | 'bad_domain' | 'bad_binding' 중 하나를 반환해야 한다. signer/recoveredSigner, nonce, deadline, domain, amount/recipient invoice binding을 모두 확인한다.

Starter code
function verifySignedPayment(request, context) {
  // return status code
}

채점 루브릭

  • signer recovery와 owner 확인을 포함한다.
  • nonce와 deadline을 확인한다.
  • domain/chain/contract를 확인한다.
  • amount와 recipient가 invoice에 묶여야 한다.
  • 제공된 실행 테스트 케이스를 통과해야 한다.

자동 채점 신호

  • signer 검증
  • nonce
  • deadline
  • domain
  • 결제 바인딩
로그인하고 답안 제출