본문 바로가기

위협·취약점·위험·통제

잠기지 않은 창문은 약점이지만 아무도 접근할 수 없는 곳이라면 당장 위험은 작을 수 있다. 반대로 공격자가 있어도 이용할 약점과 가치 있는 대상이 없다면 피해경로가 끊긴다. 보안 판단은 위협과 취약점을 자산·영향·통제와 연결해야 한다.

약점이 있다고 항상 사고가 나는 것은 아니다

잠기지 않은 창문은 약점이지만, 아무도 접근할 수 없는 곳에 있다면 당장의 위험은 작을 수 있다. 반대로 공격자가 있어도 이용할 약점과 가치 있는 대상이 없다면 피해경로가 끊긴다. 그래서 보안 판단은 위협과 취약점을 자산·영향·통제와 연결해서 해야 한다.

위협과 취약점

위협(threat)은 자산을 해칠 수 있는 원인, 사건 또는 행위자와 그 가능한 행위다. 취약점(vulnerability)은 설계·구현·설정·절차·사람에 존재해 위협이 악용할 수 있는 약점이다. 그런데 취약점이 있다는 것과 실제 위험이 크다는 것은 같은 말이 아니다. 실제 위험은 노출 정도와 악용 가능성, 자산 가치, 피해, 기존 통제를 함께 보고 판단해야 한다.

위협경로를 문장으로 잇는다

위협경로는 외부 공격자가 탈취한 계정으로 관리 API를 호출해 고객정보를 내려받는다처럼 행위자·진입점·약점·행위·자산·결과를 한 문장으로 잇는 것이다. 이렇게 이어 두면 각 연결에 어떤 통제를 둘지가 보인다. 예를 들어 인증 강화와 최소권한, 호출 제한은 예방에, 이상탐지는 탐지에, 계정차단은 대응에 해당한다. 통제를 배치한 뒤에도 남은 경로와 통제가 실패할 가능성을 함께 기록한다.

목록을 복사하면 우선순위를 잃는다

유명한 공격명만 나열하면 그 공격이 우리 자산과 접속 범위에서 실제로 가능한 경로인지 알 수 없다. 또 점수가 높은 취약점을 무조건 먼저 고치면, 노출되지도 않은 약점에 자원을 쓰다가 치명적인 업무경로를 놓칠 수 있다. 그래서 판단 시점의 구조와 노출, 공격능력, 피해를 기준으로 우선순위를 정하고, 구조가 바뀌면 다시 평가한다.

의도적 공격 위협이 실제 피해로 이어지는 경로

외부 접속을 막아도 조직망의 인가 누락은 남는다

상자 안의 대상과 화살표의 조건을 함께 읽으세요. 좁은 화면에서는 같은 관계를 세로로 재배치한 도식을 보여 줍니다.

외부 접속을 막아도 조직망의 인가 누락은 남는다관리 API를 조직망으로 제한한 변경 조건이다. 외부 접속 거부는 한 경로를 줄인다. 조직망 일반계정도 접속할 수 있으면 객체별 인가 누락을 거쳐 다른 고객정보를 조회하는 경로가 남는다. 내부 오용·탈취 위협과 고객정보 피해를 연결해 같은 우회·탐지 시험을 한다.outside → blocked: 차단inside → entry: 접속 가능entry → vulnerability: 악용 가능vulnerability → abuse: 인가 없음abuse → damage: 훼손·영향차단접속 가능악용 가능인가 없음훼손·영향조직망 관리 API · 접속 가능한 일반계정 포함외부 계정·공격자: 직접 접속 시도외부 계정·공격자직접 접속 시도외부 접속 거부: 조직망 제한 통제외부 접속 거부조직망 제한 통제조직망 일반계정: 오용·탈취 가능 위협조직망 일반계정오용·탈취 가능 위협노출된 관리 API: 조직망에서는 접속 허용노출된 관리 API조직망에서는 접속 허용취약점: 객체별 권한검사 누락취약점객체별 권한검사 누락허용되지 않은 행위: 다른 고객번호로 조회허용되지 않은 행위다른 고객번호로 조회자산·업무 피해: 대량 고객정보 조회 기밀성·신뢰·업무 피해자산·업무 피해대량 고객정보 조회기밀성·신뢰·업무 피해
외부 접속을 막아도 조직망의 인가 누락은 남는다관리 API를 조직망으로 제한한 변경 조건이다. 외부 접속 거부는 한 경로를 줄인다. 조직망 일반계정도 접속할 수 있으면 객체별 인가 누락을 거쳐 다른 고객정보를 조회하는 경로가 남는다. 내부 오용·탈취 위협과 고객정보 피해를 연결해 같은 우회·탐지 시험을 한다.outside → blocked: 차단inside → entry: 접속 가능entry → vulnerability: 악용 가능vulnerability → abuse: 인가 없음abuse → damage: 훼손·영향차단접속 가능악용 가능인가 없음훼손·영향조직망 관리 API ·접속 가능한 일반계정포함외부 계정·공격자: 직접 접속 시도외부계정·공격자직접 접속 시도외부 접속 거부: 조직망 제한 통제외부 접속 거부조직망 제한 통제조직망 일반계정: 오용·탈취 가능 위협조직망 일반계정오용·탈취 가능 위협노출된 관리 API: 조직망에서는 접속 허용노출된 관리 API조직망에서는 접속허용취약점: 객체별 권한검사 누락취약점객체별 권한검사 누락허용되지 않은 행위: 다른 고객번호로 조회허용되지 않은행위다른 고객번호로 조회자산·업무 피해: 대량 고객정보 조회 기밀성·신뢰·업무 피해자산·업무 피해대량 고객정보 조회기밀성·신뢰·업무피해

관리 API를 조직망으로 제한한 변경 조건이다. 외부 접속 거부는 한 경로를 줄인다. 조직망 일반계정도 접속할 수 있으면 객체별 인가 누락을 거쳐 다른 고객정보를 조회하는 경로가 남는다. 내부 오용·탈취 위협과 고객정보 피해를 연결해 같은 우회·탐지 시험을 한다.

그림은 관리 API를 조직망으로 제한한 뒤의 상태다. 외부 계정과 공격자의 접속은 차단되지만, 조직망 일반계정은 여전히 노출된 관리 API에 접속할 수 있고 객체별 인가가 없는 취약점을 거쳐 대량 고객정보 조회라는 피해에 이른다. 이처럼 의도적 공격에서는 위협원·사건의 능력·의도·발생조건 → 노출된 진입점 → 악용 가능한 취약점 → 허용되지 않은 행위 → 자산 훼손·업무 피해를 잇는다. 예방은 진입과 악용을 막고, 탐지는 행위를 알아채며, 대응은 진행을 제한하고, 복구는 자산과 업무를 되찾는다.

이 공격 시나리오에서 위협과 취약점 사이에는 실제 악용 가능한 연결이 있어야 한다. 약점이 있지만 외부에서 도달하지 못하고 내부 사용자에게도 필요한 권한이 없다면 현재 경로의 가능성은 낮아질 수 있다. 반대로 작은 설정오류라도 인터넷에 노출된 중요 관리기능과 연결되면 피해경로가 짧다. 그래서 통제를 둔 뒤에도 남은 경로와 실패했을 때의 피해를 기록해야 우선순위를 설명할 수 있다.

다만 이 그림은 의도적 공격의 경로만 보여 준다. 위협은 공격자만을 뜻하지 않는다. 잘못된 운영 명령 같은 비의도적 오류나 저장장치 고장, 침수 같은 환경사건도 자산과 업무를 해칠 수 있다. 이때는 악용 의도를 억지로 넣지 않고 “발생조건→취약한 보호/복구 구조→영향”을 대조한다. 예컨대 실수로 삭제할 가능성에는 승인·복구본·복원시험이, 침수에는 위치·방수·분산복구가 영향을 얼마나 줄이는지 평가한다.

위협·취약점·위험·통제를 섞지 않는다

구분답하는 질문주문 관리 예
위협무엇이 자산을 해칠 수 있는가탈취 계정을 이용하는 외부 공격자
취약점악용 가능한 약점은 무엇인가관리 기능에 객체별 권한검사가 없음
위협경로어떤 순서로 자산에 도달하는가로그인 → 다른 고객번호 입력 → 주문정보 조회
위험그 경로로 피해가 발생할 가능성과 영향은 무엇인가대량 개인정보 유출과 신뢰·업무 피해
통제경로·가능성·영향을 어떻게 바꾸는가서버 인가, 호출제한, 탐지, 계정차단과 통지

취약점 개수는 위험 크기와 같지 않고, 통제 개수도 위험 감소량과 같지 않다. 그래서 실제 경로에서 통제가 어느 연결을 끊는지, 그 통제가 실패하면 무엇이 남는지를 설명해야 한다.

모든 약점을 동시에 고칠 수 없을 때

패치가 있는 약점부터 기계적으로 고르면 진행 정도를 재기는 쉽지만 중요한 노출경로를 놓칠 수 있다. 반대로 치명적인 시나리오만 보다가 넓게 퍼진 기본설정 오류를 방치할 수도 있다. 그래서 우선순위를 정할 때는 자산 피해와 외부·내부 노출, 악용에 필요한 조건을 본다. 여기에 이미 배치된 통제와 발견 가능성, 복구 난이도, 수정에 따른 중단비용까지 함께 따진다.

즉시 수정하기 어렵다면 접근차단이나 기능중지, 감시 강화로 경로를 임시로 줄일 수 있다. 다만 임시통제에는 담당자와 만료일, 원래의 수정계획을 붙인다. 위험을 수용한다는 말도 방치한다는 뜻이 아니다. 남은 경로와 피해, 결정권자, 재검토 조건을 알고 선택했다는 뜻이다.

실무 사례: 관리 API의 세 경로를 비교한다

고객관리 기능에 다음 세 후보가 발견됐다고 하자.

후보노출·악용조건예상 피해판단
오래된 시험페이지외부에서는 차단, 운영망 읽기만 가능제한된 내부정보 노출접근기록을 보며 계획에 따라 수정
객체별 인가 누락일반 고객 계정으로 다른 고객번호 조회 가능대량 개인정보 조회즉시 서버 인가 추가, 호출제한·탐지 병행
관리화면 표시 오류관리자만 접근, 저장값은 정상운영 혼선검증 후 다음 배포에서 수정

두 번째 후보를 우선하는 것은 기술 이름이 화려해서가 아니라, 낮은 권한으로 중요 자산에 곧바로 도달하기 때문이다. 수정한 뒤에는 자신의 정보 조회는 성공하고 다른 고객 조회는 거부되는지 시험한다. 반복 시도가 탐지되는지, 이미 일어난 조회를 기록으로 찾을 수 있는지도 확인한다. 이것이 약점 목록을 통제와 확인 결과로 바꾸는 과정이다.

이제 조건을 바꿔 보자. 서버 인가는 아직 고치지 않고 관리 API의 접속만 조직망으로 제한했으며, 조직망에서는 일반 계정도 이 API에 접속할 수 있다고 가정한다. 외부 접속이 거부되었다는 시험 하나로 두 번째 취약점을 해결했다고 판단할 수 있을까? 그렇지 않다. 외부에서 바로 들어오는 경로는 줄었지만, 조직망 안의 일반 계정이 다른 고객번호로 조회하는 경로에는 여전히 객체별 인가가 없다.

그래서 내부 계정의 오용이나 탈취라는 위협을 고객정보라는 자산과 연결해 같은 우회 시험을 해야 한다. 접속제한 통제 하나 추가=취약점 제거라는 오답은 통제가 실제로 끊은 연결과 아직 남은 연결을 구분하지 않아서 생긴다. 위협경로 그림과 기존통제 평가로 돌아가 남은 위험을 다시 기록한다.

접속·인증·인가를 같은 조회에서 차례로 확인한다

세 통제는 서로 다른 질문을 던진다. 조직망 제한은 API까지 접속할 수 있는지를, 인증은 요청자가 누구인지를, 인가는 그 요청자가 이 고객정보를 읽어도 되는지를 묻는다. 그래서 조직망에서 로그인에 성공했다는 사실만으로 모든 고객정보의 조회 권한이 생기지는 않는다. 위 그림의 조직망 일반계정 → 노출된 관리 API와 객체별 권한검사 누락 → 다른 고객번호로 조회는 서로 다른 연결이다.

기존 사례에 시험 조건을 붙여 보자. 자체 교육용 권한정책으로, 일반 계정 A는 고객 101만, 일반 계정 B는 고객 202만 읽을 수 있고 두 계정 모두 관리자 역할은 없다고 정한다. 서버는 검증된 로그인 신원과 서버에 저장한 고객별 읽기 권한으로 요청한 고객 객체를 읽어도 되는지 판단한 뒤에 데이터를 반환한다. 클라이언트가 보낸 계정명이나 권한표를 그대로 믿거나, 사용자번호와 고객번호가 같은지만 비교하는 방식으로 일반화하지 않는다.

같은 고객 조회 기능을 다음 입력으로 대조한다.

  1. 외부망에서 A가 고객 101을 요청하면 조직망 제한에서 거부된다. 뒤의 인증·인가 시험을 통과했다는 뜻은 아니다.
  2. 조직망에서 로그인 없이 고객 101을 요청하면 인증에서 거부된다. 조직망에 있다는 사실이 신원을 대신하지 않는다.
  3. 조직망에서 인증된 A가 고객 101을 요청하면 이 정책의 읽기 권한이 있어 허용된다. 응답에는 허용된 고객 101의 정보만 있어야 한다.
  4. 조직망에서 인증된 A가 고객 202를 요청하면 접속·인증은 통과해도 객체별 인가에서 거부된다. 고객 202의 데이터가 응답에 없어야 한다. 이 경우를 고객 101의 정상 조회와 짝지어야 인가 보완 뒤에도 필요한 업무가 가능한지 확인할 수 있다.

네 입력은 통제별로 예상되는 판단을 설명하는 시험 설계이며, 실제 API를 실행한 결과가 아니다. 어떤 응답코드를 쓸지는 서비스 정책으로 정하되, 거부 응답에 다른 고객의 데이터가 새지 않는지와 인가 결정·반복 시도가 기록되는지를 확인한다. 관리화면에서 버튼을 숨기거나 고객번호를 추측하기 어려운 UUID로 바꾸는 것만으로는 4번의 서버 권한검사를 대신할 수 없다.

객체마다 요청자의 권한을 확인하는 원칙은 OWASP API1:2023의 객체 수준 인가 누락과 대조했다. 인증과 인가의 구분 및 요청마다 권한을 검사하는 원칙은 OWASP Authorization Cheat Sheet를 참고했다. 위 계정·고객번호·허용정책과 네 시험 입력은 원문 사례에 붙인 자체 교육 예다.

시험에서는 무엇을 요구하는가

위협과 취약점의 차이를 설명하고, 정보시스템의 위협경로 분석과 통제 우선순위 결정방안을 제시하시오.

차이는 원인·행위와 악용 가능한 약점을 분리하라는 요구다. 위협경로 분석에는 행위자–진입점–취약점–행위–자산–피해 순서가 필요하다. 우선순위는 가능성과 영향뿐 아니라 노출·기존통제·복구성과 수정비용까지 판단 기준으로 삼아야 한다.

풀이 방향과 모범답안 보기

답안 목차

  1. 위협·취약점·위험·통제의 경계
  2. 행위자에서 자산피해까지의 위협경로
  3. 자산·노출·악용조건·기존통제 평가
  4. 예방·탐지·대응·복구 통제 배치
  5. 우선순위·임시통제·잔여위험과 재평가

답안에 그릴 도식

공격 경로의 연결통제와 판단
위협원 → 진입점차단·노출·도달 가능성
진입점 → 취약점 → 악용행위예방·악용조건·기존통제
행위 → 자산 → 업무피해탐지·대응·복구
통제와 시험 결과 → 잔여위험 결정가능성·영향·시험 결과 재평가

남은 내부 경로 그림에서 어느 연결이 실제로 끊겼고 어느 연결이 남았는지를 대조한다. 이 도식의 진입과 악용행위는 공격 시나리오에 해당한다. 비의도적 오류나 기술고장, 환경사건은 별도의 발생 경로로 평가하며, 공격자가 없다는 이유만으로 위험이 0이라고 판단하지 않는다.

모범답안

위협은 자산을 해칠 수 있는 원인·사건·행위자와 가능한 행위이고, 취약점은 설계·구현·설정·절차·사람에 존재해 위협이 악용할 수 있는 약점이다. 취약점이 있다는 사실만으로 실제 위험이 결정되지는 않는다. 행위자와 진입점에서 약점·행위·자산·업무피해까지 이어지는 경로와 노출, 악용조건, 기존통제를 함께 보아야 한다.

우선순위는 자산피해와 회복곤란성, 경로의 도달 가능성, 필요한 권한과 공격능력으로 정하고, 탐지 가능성과 통제 실패, 수정에 따른 중단비용도 함께 고려한다. 각 경로에는 예방·탐지·대응·복구 통제를 배치하고 정상·거부·우회 사례를 시험한다. 즉시 수정이 어려운 약점은 만료일이 있는 임시통제로 노출을 줄인다. 통제 뒤 남은 경로와 피해는 승인권자가 수용·추가감소·회피 여부를 결정하고, 환경이 바뀌면 다시 평가한다.

한 번에 되찾기

위협은 자산을 해칠 수 있는 원인·행위이고, 취약점은 악용 가능한 약점이다. 실제 위험은 위협경로와 노출, 자산 피해, 통제를 연결해 판단한다.