콘텐츠로 이동

English · 한국어

보안 정책

pqcota는 기업 인트라넷의 암호 자산을 관측하고 정규화하며 전환물을 생성하는 도구입니다. 다루는 데이터(엔드포인트와 암호 자산 인벤토리)와 필요로 하는 권한(수집기의 패킷 관측 등) 때문에 보안 신고를 진지하게 받아들입니다.

지원 버전

보안 수정은 main과 최신 릴리스에 반영됩니다. 이전 태그로는 백포트하지 않습니다. 혼자 운영하는 프로젝트가 여러 브랜치를 유지할 수는 없고, 그런 척하면 사용자가 자신에게 닿지 않은 수정이 있다고 믿게 되기 때문입니다.

버전 보안 수정
main ✅
최신 릴리스 ✅: 다음 릴리스에 실립니다. 그때까지 둘 수 없는 결함은 별도 패치 릴리스로 냅니다
이전 태그 ❌: 최신 버전으로 업그레이드하세요

취약점 신고

공개 이슈, PR, 토론을 열지 마세요. 다음 비공개 경로 중 하나를 쓰세요.

  1. GitHub 비공개 신고(권장): 리포지터리의 Security 탭 → "Report a vulnerability". 조율된 공개(coordinated disclosure) 절차를 따릅니다.
  2. 그럴 수 없다면 메인테이너에게 직접 연락하세요: randyinthedev@gmail.com. 제목 앞에 [security]를 붙이면 더 빨리 눈에 띕니다.

다음을 포함하면 분류가 빨라집니다. 영향받는 구성 요소(수집기/CLI/라이브러리), 재현 절차, 영향(권한 상승·정보 노출·무결성 훼손 등), 가능하다면 PoC.

취약점이 아닌 것은 공개 이슈에 올립니다. 버그, 질문, 제안은 이 리포지터리의 이슈로 보내세요. 숨길 것이 없고, 공개된 논의는 다음 사람에게 남습니다. 비공개 신고는 수정 전에 알려지면 사용자를 공격에 노출시킬 수 있는 것만을 위한 경로입니다.

대응

혼자 운영하는 프로젝트이므로 대응은 최선을 다하는 수준(best-effort)입니다. 접수를 알리고, 재현해 평가한 뒤, 신고자와 수정 계획을 조율합니다. SLA는 없지만 유효한 신고는 다른 작업보다 먼저 처리합니다.

보안 범위(이 프로젝트에 한정)

특히 다음은 보안 문제로 다룹니다.

  • 접속 비밀 유출: 접속 키와 계정은 실행 시에만 존재하는 파일에만 있고, 인벤토리(Postgres)에는 엔드포인트만 적재합니다. 비밀은 저장하지 않습니다. 비밀이 영속 저장소, 로그, 산출물로 새어 들어가면 취약점입니다.
  • 서명·무결성: 수집 결과의 ed25519 서명(수집기가 서명하고, 검증 키가 설정되어 있으면 pqcota-ingest가 확인합니다)이나 계획 승인의 ed25519 서명(pqcota-approve가 서명하고 pqcota-provision이 확인합니다)을 우회하거나 위조·변조를 받아들이는 일.
  • 수집기 권한 오용: 패킷 관측(CAP_NET_RAW)과 프로세스 스캔 권한을 넘어서는 동작, 또는 관측 대상의 평문 페이로드를 수집하는 일(프레임을 메모리로 받아 핸드셰이크 항목만 뽑으며, 복호화하거나 패킷을 파일로 쓰지 않습니다).
  • 산출물 주입: 관측 입력이나 계약 입력의 악성 내용이 생성되는 Ansible 플레이북이나 설정으로 흘러드는 경로.

범위 밖인 것은 신고할 때 함께 논의합니다(예: 사용자가 플레이북을 직접 실행하는 환경의 운영상 문제는 이 도구가 아니라 실행하는 쪽의 책임입니다).

English