← 목록
기타 2026-06-21 2KB 읽기 3분

연락처 결함 수정 (2026-06-21)

개요

/Users/ef/crowny-ai/engine/contacts.js 연락처 동기화 엔진 보안 수정. 한선씨 동반 /Users/ef/crowny-ai/연락처.한선 반영 + 재컴파일 검증 완료.

수정 내용

1. [MED] 호출자 인증 — verifyOwnership() 추가

  • sync/matches/feed 세 함수 모두 진입 시 callerOwner(SSO 헤더 추출) vs crownyId(요청값) 일치 검증
  • 불일치 시 { ok: false, error: 'forbidden', status: 403 } 즉시 반환
  • IP 버킷 + 계정 버킷 이중 rate limit 추가 (rateLimitAccount 함수 신설)
  • 배선 runbook(배선-연락처.md) 라우팅도 callerOwner 전달 + r.status === 403 → HTTP 403 처리 업데이트

2. [MED] matches() crowny_id 원문 비노출

  • 기존: [{ crowny_id: o, matched_at }] — 식별자 수확 공격 가능
  • 수정: [{ matched: true, display_name: null, matched_at }] — crowny_id 원문 제거
  • _selfIdx 조회로 전환 (버그 3 수정과 연동)

3. [기능결함] buildIdx selfHashes 인덱스 누락 수정

  • 기존: buildIdx()rec.hashes_hashIdx에 인덱싱, rec.selfHashes는 누락 → matches() 항상 0건
  • 수정: _selfIdx 분리 신설 (Map<selfFoneHash, Set<crownyId>>)
  • buildIdx(): selfHashes → _selfIdx 추가 (누락 수정)
  • sync(): selfIdxAdd/Remove 함수로 _selfIdx 관리
  • matches(): _selfIdx에서 조회 (가입된 사람 = selfHash 등록자)
  • whoHasMe(): 기존대로 _hashIdx 사용 (나를 주소록에 가진 사람)
  • 파일

    • /Users/ef/crowny-ai/engine/contacts.js — 엔진 수정
    • /Users/ef/crowny-ai/연락처.한선 — 한선씨 동반 (8/8 자가검증 PASS)
    • /Users/ef/crowny-ai/배선-연락처.md — 라우팅 runbook 업데이트

    검증

    bash# 한선씨 컴파일+실행
    cd /Users/ef/CrownyOS/crownyc
    ./hanseonc_high /Users/ef/crowny-ai/연락처.한선 > /tmp/연락처.toau
    ./crownyc run /tmp/연락처.toau
    # → 연락처.한선 자가검증 PASS (8/8)
    
    # JS 문법
    node --check /Users/ef/crowny-ai/engine/contacts.js  # OK
    node -e "require('./engine/contacts')"  # OK
    

    잔여 이슈

    • matches() display_name: 현재 null (contact record에 username 없음). 추후 auth.findByOwnerToken 연계로 보강 가능.
    • 배선-연락처.md는 runbook(라이브 무접촉 원칙) — 메인세션이 server.js에 적용.