[SEC-010][실무] 취약점을 안전하게 찾고 고치는 순서 > IT 기술 공유

본문 바로가기
사이트 내 전체검색

IT 기술 공유

[SEC-010][실무] 취약점을 안전하게 찾고 고치는 순서

페이지 정보

profile_image
작성자 기술팀장
댓글 0건 조회 96회 작성일 26-09-05 02:32

본문

[이번 수업]
보안 테스트를 허가된 범위에서 계획하고, 발견한 취약점을 위험에 따라 고친 뒤 재검증하는 전체 흐름을 배웁니다. 공격 절차가 아니라 방어 운영에 집중합니다.

[선수지식]
위협 모델, 인증·인가, 입력 검증, 의존성 보안을 알아야 합니다. 취약점은 공격자가 시스템의 기밀성·무결성·가용성을 해칠 수 있는 약점입니다.

[학습목표]
- 테스트 범위와 중단 조건을 먼저 문서화합니다.
- 심각도와 실제 환경을 함께 보아 우선순위를 정합니다.
- 수정·재검증·종료 증거를 한 흐름으로 관리합니다.

[핵심개념]
안전한 보안 테스트는 `계획 → 허가 → 점검 → 증거 기록 → 분류 → 수정 → 재검증 → 종료` 순서입니다. 계획서에는 대상 주소와 버전, 제외 대상, 허용 시간, 요청 속도, 담당자, 비상 연락과 즉시 중단 조건을 적습니다. 운영 데이터 손상 가능성이 있으면 복제한 시험 환경과 가짜 데이터를 사용합니다. 자동 도구 결과는 후보일 뿐이며 담당자가 버전·설정·도달 가능성을 확인해야 합니다.

CVSS는 취약점의 기술적 심각도를 공통 방식으로 표현하는 점수 체계입니다. 하지만 수정 순서는 점수 하나로 정하지 않습니다. 인터넷 노출, 실제 악용 확인, 보호 데이터, 영향받는 자산 수, 완화책과 수정 가능 여부를 함께 봅니다. 알려진 실제 악용 목록에 포함됐거나 외부에 노출된 중요한 자산은 빠르게 검토합니다. 오탐은 근거를 남겨 제외하고 예외 승인은 만료일과 보완 통제를 둡니다.

발견 항목에는 고유 ID, 자산과 소유 팀, 영향, 재현에 필요한 최소 방어 증거, 발견·수정 목표일, 상태를 기록합니다. 수정은 패치만이 아니라 설정 변경, 기능 차단, 접근 제한 같은 임시 완화를 포함할 수 있습니다. 같은 안전한 검사로 문제가 사라지고 기능 회귀가 없는지 확인해야 닫습니다. 이후 비슷한 취약점을 코드 검사와 배포 기준으로 예방합니다.

[따라하기]
실제 시스템을 검사하지 않고 가상 결과의 우선순위만 정합니다. triage.py로 저장하세요.

```python
findings = [
    {"id": "F-001", "cvss": 9.1, "known_exploited": False, "internet": True, "owner": "web-team"},
    {"id": "F-002", "cvss": 6.5, "known_exploited": True, "internet": False, "owner": "data-team"},
    {"id": "F-003", "cvss": 4.3, "known_exploited": False, "internet": False, "owner": "ops-team"},
]

def priority(item):
    if item["known_exploited"] or (item["internet"] and item["cvss"] >= 9.0):
        return 1
    if item["cvss"] >= 7.0:
        return 2
    return 3

for item in sorted(findings, key=lambda x: (priority(x), x["id"])):
    print(f"{item['id']} P{priority(item)} owner={item['owner']}")
```

macOS/Linux는 `python3 triage.py`, Windows PowerShell은 `py triage.py`로 실행합니다. 예상 결과입니다.

```text
F-001 P1 owner=web-team
F-002 P1 owner=data-team
F-003 P3 owner=ops-team
```

F-001은 외부 노출과 높은 점수, F-002는 실제 악용 확인 때문에 우선 검토합니다. 이 규칙은 학습용이며 조직의 자산 중요도와 대응 기준을 더해야 합니다.

[흔한 실수]
허가 없이 운영 대상을 점검하거나 점수 순서만 따르기 쉽습니다. 중복 항목을 따로 처리하거나 패치 적용만 보고 닫지 않습니다. 자산 소유자가 없으면 담당 지정부터 해결합니다.

[보안 주의]
본인 소유의 로컬·격리 환경 또는 서면 허가된 대상에서만 방어 목적으로 테스트합니다. 실제 타 시스템 공격, 계정 수집, 우회 시도는 하지 않습니다. 보고서에는 비밀번호·토큰·개인정보를 넣지 말고 증거 접근을 최소 인원으로 제한합니다.

[직접 해볼 과제]
F-004를 추가하되 owner를 빈 값으로 두세요. 출력 전에 owner가 비어 있으면 `needs-owner`라고 표시하도록 코드를 바꾸고, 수정 전에는 종료할 수 없는 이유를 적으세요.

[확인문제]
1. 보안 테스트 전에 범위와 중단 조건을 정해야 하는 이유는 무엇인가요?
2. CVSS 점수만으로 수정 순서를 정하면 부족한 이유는 무엇인가요?
3. 취약점을 수정한 뒤 재검증이 필요한 이유는 무엇인가요?

[다음 학습]
AI-010에서는 도구 호출·MCP·AI 에이전트를 다룹니다. SEC-011에서는 보안 로그·탐지·사고 대응을 배웁니다.

[공식 참고 자료]
- NIST 보안 테스트 지침: https://csrc.nist.gov/pubs/sp/800/115/final
- OWASP 웹 보안 테스트 가이드: https://owasp.org/www-project-web-security-testing-guide/
- CVSS 4.0 명세: https://www.first.org/cvss/v4.0/specification-document
- 실제 악용 취약점 목록: https://www.cisa.gov/known-exploited-vulnerabilities-catalog

댓글목록

등록된 댓글이 없습니다.

회원로그인

회원가입

사이트 정보

회사명 : 회사명 / 대표 : 대표자명
주소 : OO도 OO시 OO구 OO동 123-45
사업자 등록번호 : 123-45-67890
전화 : 02-123-4567 팩스 : 02-123-4568
통신판매업신고번호 : 제 OO구 - 123호
개인정보관리책임자 : 정보책임자명

접속자집계

오늘
4,315
어제
6,862
최대
16,772
전체
770,266
Copyright © 소유하신 도메인. All rights reserved.