Skip to content

fix(security): credentials 하드닝 (fail-open, 디렉토리 퍼미션, spawn env) #188

@justn-hyeok

Description

@justn-hyeok

Summary

자격증명 관련 보안 이슈 3건.

1. checkFilePermissions fail-open

위치: packages/core/src/config/credentials.ts:102-103

statSync 실패 시 true 반환 → 퍼미션 검증 못하면 그냥 로드.

수정: return false (1줄)

2. CONFIG_DIR 생성 시 퍼미션 미지정

위치: packages/core/src/config/credentials.ts:49

mkdirSync(CONFIG_DIR, { recursive: true }) — 기본 umask(0o755)로 생성.

수정: mkdirSync(CONFIG_DIR, { recursive: true, mode: 0o700 }) (1줄)

3. spawn()에 전체 환경변수 상속

위치: packages/core/src/l1/backend.ts:50-53

CLI 백엔드 spawn 시 모든 API 키가 자식 프로세스에 노출.

수정: 필요한 환경변수만 명시적으로 전달:

const child = spawn(cmd.bin, cmd.args, {
  stdio: ['pipe', 'pipe', 'pipe'],
  detached: true,
  env: {
    PATH: process.env['PATH'],
    HOME: process.env['HOME'],
    // 해당 백엔드에 필요한 키만
    ...getRequiredEnvForBackend(backend),
  },
});

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions