인증서(Certificates) 감지하기
인증서(Certificates) 감지하기
Vault Radar는 PEM 인코딩된 인증서를 검사하고 암호학적 속성을 평가하여 위험하거나 잘못 구성된 인증서를 식별해요. 이 페이지에서 Vault Radar가 무엇을 감지하고, 어떤 위험 태그를 할당하며, 심각도가 어떻게 결정되는지 설명해 드릴게요.
출처: 문서
본문
인증서 감지하기
[!IMPORTANT] 베타 기능: 이 기능은 현재 베타 릴리스로 제공됩니다. 베타 기능은 안정적이지만 불완전할 수 있고 변경될 수 있습니다. 프로덕션 워크플로에서 베타 기능을 사용하는 것은 강력히 권장하지 않습니다.
Vault Radar는 PEM 인코딩된 인증서를 검사하고 해당 인증서의 암호학적 속성을 평가하여 위험하거나 잘못 구성된 인증서를 식별합니다.
Vault Radar가 감지하는 것
Vault Radar는 다음 헤더를 가진 PEM 블록을 식별합니다:
-----BEGIN CERTIFICATE----------BEGIN TRUSTED CERTIFICATE----------BEGIN X509 CERTIFICATE----------BEGIN PKCS7-----
다중 줄(multiline) 인증서의 경우, 감지기는 일치하는 PEM 끝 경계(boundary), Base64 콘텐츠, 최소 100자의 Base64 문자, 그리고 최소 0.5의 엔트로피 신뢰도(entropy confidence)를 요구합니다. 플레이스홀더(placeholder), 잘못된 형식(malformed), 잘린(truncated), 따옴표 처리된(quoted), 또는 낮은 엔트로피 값은 억제됩니다(suppressed).
X.509 인증서 PEM 블록의 경우, Vault Radar는 인증서를 파싱하고 서명 알고리즘, RSA 키 크기, 유효성, 자체 서명(self-signed) 여부를 평가합니다. 할당된 위험 태그가 없는 유효한 X.509 인증서는 억제됩니다. 인증서는 설계상 공개 아티팩트이므로, 그 존재 자체만으로는 발견 결과(findings)가 아닙니다.
PKCS#7 번들은 감지되지만 X.509 위험 태그를 위해 파싱되지는 않습니다. PKCS#7 블록이 감지 검증을 통과하면 인증서 위험 태그 없이 보고됩니다. 태그가 없는 비밀 범주 발견 결과는 기본 심각도 규칙으로 넘어가므로 Medium 심각도로 표시됩니다.
인증서 위험 태그 (Certificate risk tags)
인증서는 하나 이상의 태그를 받을 수 있습니다. 각 태그는 파싱된 인증서에서 관찰된 한 가지 속성을 나타냅니다.
| 태그 | 할당 시점 | 보안 의미 |
|---|---|---|
| insecure_signing_algorithm | 서명 알고리즘이 MD5WithRSA, SHA1WithRSA, ECDSAWithSHA1 또는 DSAWithSHA1인 경우 | 서명 알고리즘이 암호학적으로 깨져 있음 |
| insecure_key_size | 인증서에 1024비트보다 작은 RSA 공개 키가 포함된 경우 | RSA 키가 치명적으로 약함 |
| weak_signing_algorithm | 서명 알고리즘이 DSAWithSHA256인 경우 | DSA는 사용이 중단되었지만 적극적으로 깨진 알고리즘으로 분류되지는 않음 |
| weak_key_size | 인증서에 1024~2047비트의 RSA 공개 키가 포함된 경우 | RSA 키가 업계 기준인 2048비트보다 낮음 |
| expired_certificate | 인증서가 만료되었거나, 만료까지 30일 미만이 남은 경우 | 인증서가 더 이상 유효하지 않거나 즉시 갱신이 필요함 |
| self_signed_certificate | 주체 고유 이름(subject distinguished name)이 발급자 고유 이름(issuer distinguished name)과 같은 경우 | 인증서에 별개의 발급 CA(인증 기관) 정체성이 없음 |
심각도 매핑 (Severity mapping)
Vault Radar는 발견 결과의 모든 태그에서 표시되는 심각도 하나를 도출합니다. 가장 높은 적용 가능한 인증서 심각도가 우선합니다.
| 표시 심각도 | 이를 유발하는 태그 |
|---|---|
| Critical | insecure_signing_algorithm, insecure_key_size |
| High | weak_signing_algorithm, weak_key_size, expired_certificate |
| Medium | self_signed_certificate |
예시
- SHA-1로 서명되었고 만료된 인증서는
insecure_signing_algorithm과expired_certificate를 받습니다. 표시 심각도는 Critical입니다. - 만료된 자체 서명 인증서는
expired_certificate와self_signed_certificate를 받습니다. 표시 심각도는 High입니다. - 다른 위험 태그가 없는 자체 서명 인증서는 Medium 심각도입니다.
- SHA-256을 사용하는 RSA-2048 인증서로서 남은 기간이 30일 이상이고 주체와 발급자가 다른 경우, 인증서 위험 태그가 없으므로 발견 결과로 보고되지 않습니다.
심각도 우선순위 규칙 (Severity precedence rules)
심각도 선택은 규칙 기반이며, 어떤 단일 태그에 묶여 있지 않습니다. 규칙은 다음 순서로 평가됩니다:
ignore_rule,inactive_secret및 특정 일반 억제 태그는 인증서 심각도가 평가되기 전에 Info를 생성합니다.- Critical 인증서 태그는 High 및 Medium 인증서 태그보다 우선합니다.
- High 인증서 태그는 Medium의 자체 서명 태그보다 우선합니다.
- 자체 서명 태그는 더 높은 우선순위의 인증서 태그가 적용되지 않을 때만 Medium을 생성합니다.
결과적으로 만료 태그(expiry tag)는 특별히 취급되지 않습니다. 즉 High 심각도 인증서 태그 중 하나이며, 어떤 Critical 태그든 High와 Medium 모두보다 우선합니다.
위험 태그를 받지 않는 조건
다음 인증서 속성은 위험 태그를 트리거하지 않습니다:
- 2048비트 이상의 RSA 키
- SHA256WithRSA, SHA384WithRSA 및 ECDSAWithSHA256 서명 알고리즘
- PureEd25519 서명
- 만료까지 30일 이상 남은 인증서
- 주체와 발급자의 고유 이름이 다른 인증서