# 문제를 평가하는 방법

Lockpick이 심각도를 정하는 방법, 확인된 문제가 보여 줘야 하는 것, 각 문제에 대한 확신의 정도, 먼저 고칠 것, 다시 검사로 증명할 수 있는 것을 설명합니다.

Lockpick 보고서의 모든 문제에는 심각도, 판정, 확신도가 함께 표시됩니다. 이 세 가지는 서로 다른 질문에 답합니다. 심각도는 얼마나 나쁠 수 있는지를 말합니다. 판정은 우리가 그 전체를 확인했는지를 말합니다. 확신도는 근거가 얼마나 강한지를 말합니다. Pulse와 Deep은 같은 규칙을 적용합니다.

## 심각도

심각도는 하나의 기준을 사용하며, 앱, 문서, API에서 모두 같습니다. 가장 심각한 것부터 덜 심각한 순서는 **치명적**, **높음**, **보통**, **낮음**, **정보**입니다. Pulse와 Deep은 오늘 현재 문제를 높음까지 평가합니다. 치명적은 Monitor 권고에 사용되며, 발표된 심각도가 없는 Monitor 권고는 **등급 없음**으로 표시됩니다.

문제는 스캔에서 다음 중 하나가 보일 때만 **높음**으로 평가됩니다.

* **누구나 읽을 수 있는 데이터.** 로그인, 쿠키, 자격 증명 없이 보낸 요청에 데이터가 응답되었습니다.
* **한 고객이 다른 고객에 접근함.** 한 계정이나 테넌트에서 다른 계정이나 테넌트로 넘어가는 데이터나 작업입니다.
* **노출된 자격 증명이나 세션.** 비밀 키, 자격 증명이 들어 있는 설정 파일, 또는 로그인한 적 없는 사람에게 넘어간 세션입니다.

도메인의 주소를 탈취할 수 있는 경우도 해당합니다. 그 주소를 아무나 가져갈 수 있다는 것을 우리가 볼 수 있을 때입니다. 그 주소를 가져간 사람은 실제 도메인에서 페이지를 제공하고, 도메인 전체에 설정된 쿠키를 받게 됩니다.

다음은 그것만으로는 높음으로 평가되지 않습니다.

* 보안 헤더 누락, 쿠키 플래그, Content Security Policy의 빈틈
* TLS 설정과 인증서 경고
* 소프트웨어 버전과 기술 정보 노출. 권고와 일치하는 라이브러리 버전도 포함
* 디렉터리 목록, 스택 트레이스, 오류 페이지
* 열린 리디렉션
* DMARC나 SPF 같은 이메일 인증 설정

이런 문제도 보고는 하며, 보통 이하로 표시합니다. 실제 빈틈이고 해결하기 쉽기 때문입니다. 다른 관찰된 근거가 더 큰 이야기를 완성하면, 보고서는 단일 문제를 올리는 대신 그 이야기를 공격 체인으로 설명합니다.

## 확인된 문제가 보여 줘야 하는 것

문제 종류마다 네 부분으로 된 증명이 있습니다.

| 부분        | 답하는 질문                      |
| --------- | --------------------------- |
| 출발점       | 공격이 어디에서 시작되고, 누가 시작할 수 있는가 |
| 가장 가까운 통제 | 공격을 막았어야 하는 보호 장치           |
| 도달점       | 공격자가 실제로 닿는 곳               |
| 영향        | 그곳에 도달했을 때 따라오는 결과          |

공개된 Supabase 테이블의 경우, 출발점은 설계상 클라이언트 번들에 들어 있는 anon 키이고, 가장 가까운 통제는 행 수준 보안(row-level security)이며, 도달점은 행을 돌려준 인증되지 않은 읽기이고, 영향은 반환된 열이 담고 있는 내용입니다.

문제는 스캔이 모든 부분을 관찰했을 때만 **확인됨**입니다. 어떤 부분이 관찰되지 않고 추론된 것이라면, 문제는 **검토 필요**로 표시되며 아직 열려 있는 부분을 알려 줍니다. 증명 규칙이 정의되지 않은 문제 종류는 절대 확인되지 않습니다. 문제는 주장이 적용되지 않는다는 긍정적인 근거를 우리가 가지고 있을 때만 **조치 불필요**가 됩니다. 근거가 없다는 사실만으로는 충분하지 않으며, Pulse와 Deep은 현재 그런 근거를 기록하지 않으므로 그들의 문제는 확인되거나 검토 필요 중 하나입니다.

보이는 증명은 Lockpick이 그 문제 종류에 맞게 작성한 것입니다. 비밀 값, 응답 본문, 스캔이 실행된 방법은 절대 인용하지 않습니다.

## 얼마나 확신하나요?

* **높음.** 사이트의 응답이 노출 자체를 보여 줬습니다.
* **보통.** 공개 기록이나 콘텐츠의 패턴이 그것을 가리킵니다.
* **낮음.** 헤더, 버전, 또는 API가 스스로 설명하는 내용에서 추론했습니다.

같은 것을 보여 주는 두 번째 읽기는 확신도를 한 단계 올립니다. 그것을 보여 주지 않는 두 번째 읽기는 한 단계 낮추고, 문제를 검토 상태로 남겨 둡니다.

## 긴급도를 매기는 방법

모든 발견 항목은 언제 고쳐야 하는지도 네 단계로 알려 줍니다. 심각도는 얼마나 나쁠 수 있는지를 말합니다. 긴급도는 하던 일을 멈춰야 하는지를 말합니다.

* **지금 수정.** 오늘 멈추고 수정하세요. 고객 데이터, 계정 또는 키에 접근할 수 있습니다. 유출된 키, 열린 데이터베이스나 API, 비밀번호 해시, 관찰된 공격 체인이 해당합니다.
* **이번 주에 수정.** 누군가 이를 악용할 수 있습니다. 그 밖의 높음 항목, 그리고 직접 또는 피해자를 통해 악용할 수 있는 중간 항목입니다. 위조할 수 있는 이메일이 예입니다.
* **시간 날 때.** 공격을 쉽게 만들지만, 그 자체로 공격은 아닙니다. 빠진 보안 헤더, 쿠키 속성 같은 보안 강화 공백과 낮음 항목입니다.
* **할 일 없음.** 알아두면 좋은 정보입니다. 수정할 것은 없습니다.

스킬, 플러그인, 마켓플레이스, MCP 서버는 내가 고칠 코드가 아닙니다. 설치할지를 정하는 것이므로, 같은 네 단계를 설치에 관한 말로 보여 줍니다.

* **아직 설치하지 마세요.** 이것 때문에 설치가 안전하지 않습니다. 확인된 치명적 발견 항목이거나 훅 안에 있는 항목입니다. 수정을 기다리거나 다른 것을 고르세요.
* **설치 전에 확인.** 설치하기 전에 이 부분을 읽거나 작성자에게 물어보세요.
* **알아둘 가치 있음.** 미룰 이유는 아닙니다. 무엇을 하는지 알아두면 도움이 됩니다.
* **할 일 없음.** 확인할 것은 없습니다.

발견 항목은 맨 위의 판정보다 더 긴급하게 표시되지 않습니다. 판정이 ‘위험한 점을 찾지 못했습니다’이면 모든 항목은 최대 ‘알아둘 가치 있음’입니다. ‘주의해서 설치’이면 최대 ‘설치 전에 확인’입니다. 저장소를 ‘설치하지 마세요’로 만드는 항목만 ‘아직 설치하지 마세요’로 표시됩니다. 앱 저장소는 위의 말, ‘지금 수정’부터 ‘할 일 없음’까지를 그대로 씁니다.

옆에는 확실한 정도를 한 단어로 보여 줍니다. **확인됨**은 전부 확인했거나 두 번째 읽기에서도 다시 확인했다는 뜻입니다. **가능성 높음**은 한 번 확인했거나 일부가 아직 확인되지 않았다는 뜻입니다. **가능성 있음**은 문제를 가리키지만 확인하지 못했다는 뜻입니다.

발견 항목 그룹은 가장 긴급한 항목만큼 긴급합니다. 보고서 맨 위의 배지는 가장 긴급한 카드를 따르므로, 카드에 지금 수정이 있을 때만 지금 수정이라고 표시됩니다. 빠른 검사, Skill Check, 이메일, CLI, MCP 도구도 같은 말을 씁니다. 긴급도는 점수나 목록 순서를 바꾸지 않습니다.

## 먼저 고칠 것

보고서는 심각도 라벨이 아니라, 누군가 얼마나 직접 악용할 수 있는지에 따라 고칠 것을 나열합니다.

1. 그 자체로 누구나 쓸 수 있는 문제. 확인된 것을 먼저 둡니다
2. 피해자나 두 번째 단계가 필요한 문제. 예를 들어 위조될 수 있는 이메일입니다
3. 공격자의 일을 쉽게 만드는 강화가 덜 된 부분

각 그룹 안에서는 확인된 문제가 검토가 필요한 문제보다 먼저 옵니다. 근거가 강한 것이 약한 것보다 먼저이고, 그다음에 더 높은 심각도가 옵니다.

## 다시 검사로 증명할 수 있는 것

**다시 검사**는 새 스캔을 이전 스캔과 비교하고, **이 레코드 다시 읽기**는 공개 DNS 레코드를 새로 읽어 이전 문제와 비교합니다. 이전 문제는 각각 다음 세 가지 상태 중 하나로 끝납니다.

* **수정됨.** 문제의 바탕이 되는 리소스나 레코드를 다시 읽었고, 문제가 더 이상 없었습니다.
* **여전히 열려 있음.** 같은 문제가 다시 발견되었습니다.
* **판단 불가.** 새로 읽은 결과로는 문제의 근거를 읽을 수 없었거나, 두 스캔을 비교할 수 없었습니다.

티켓을 닫았거나 작업 항목에 체크했다고 해서 문제가 수정됨으로 표시되지는 않습니다. 사이트에서 노출된 키를 지운다고 키가 폐기되는 것은 아니므로, 제공자와 함께 키를 교체하세요.