LabHub

폐쇄망 현장 — 방산·국방 도메인 · 바꿀 수 없는 구성과 넘겨주는 일 · 이론

최신 패치를 적용하면 인증이 무효가 된다

LabHub 에서 이어서 보기

한 줄 요약

인증받은 구성에서는 취약점 대응이 업데이트가 아니라 완화 조치와 문서화로 끝나는 일이 흔하고, 그 문서가 없으면 다음 감사에서 방치로 읽힌다.

왜 이게 필요했나

상용 환경에서 취약점 공지를 받으면 우리가 하는 일은 대개 하나입니다. 올립니다. 파이프라인이 있고, 테스트가 있고, 롤백이 있으니 올리는 것이 언제나 가장 싼 선택입니다.

방산·공공 국방 환경에는 여기에 조건이 하나 더 붙습니다. 시스템 구성이 인증을 받아 운용됩니다. 어떤 구성요소가 어느 버전으로 들어가 있는지가 인증 문서에 적혀 있고, 그 목록대로 동작하는 것이 운용의 근거입니다. 그래서 버전을 바꾸면 그 구성은 인증받은 그 구성이 아니게 됩니다. 재인증에는 몇 달이 걸립니다.

여기서 처음 들어간 엔지니어가 가장 당황하는 순간이 옵니다. 고위험 취약점 공지를 받고, 패치 버전을 확인하고, "이건 바로 올려야 합니다" 라고 말했는데, 돌아오는 답이 "그건 못 올립니다" 인 순간입니다.

어떻게 동작하나

못 올리는 것이 곧 아무것도 안 하는 것은 아닙니다. 할 일이 세 가지로 바뀝니다.

하나, 영향 판정. 공지가 나왔다고 다 영향이 있는 것이 아닙니다. 설치된 버전과 수정된 버전을 비교해 실제로 해당되는지 가릅니다. 여기서 가장 흔한 사고가 버전을 문자열로 비교하는 것 입니다. 16.216.10 을 문자열로 재면 16.2 가 더 커 보이고, 그 순간 진짜 영향 항목이 조용히 '해당 없음' 으로 넘어갑니다. 반대 방향도 있습니다 — 설치된 3.12.3 과 수정된 3.9.20 을 문자열로 재면 영향이 있는 것처럼 보여, 멀쩡한 항목에 대응 인력을 씁니다. 마침표로 끊어 숫자로 비교해야 합니다.

경계값도 자주 틀립니다. 수정 버전이 1.24.0 인데 설치된 것도 1.24.0 이면 이미 고쳐진 것입니다. 그리고 아예 설치돼 있지 않은 구성요소에 대한 공지는 영향이 없습니다 — 목록에 없는 것을 조치할 수는 없습니다.

둘, 조치 구분. 영향이 있는 항목을 두 갈래로 나눕니다. 인증 형상 밖의 응용 프로그램이면 올릴 수 있으니 패치 입니다. 인증 형상에 묶여 있으면 완화 입니다. 완화는 취약점이 성립하는 조건을 없애는 일입니다 — 취약 경로가 외부 입력에서만 성립한다면 외부 입력 경로를 차단하고, 확장 모듈 로딩에서만 성립한다면 그 확장을 설치하지 않고 설치 권한을 회수합니다.

셋, 문서화. 이것이 가장 자주 빠지고 가장 크게 문제가 됩니다. 완화는 눈에 보이는 산출물이 없습니다. 버전 번호가 그대로이니 밖에서 보면 아무것도 안 한 것과 구별되지 않습니다. 그래서 판단했다는 사실을 남기는 것 자체가 일 입니다. 무엇이 영향인지, 왜 못 올리는지(인증 번호), 무엇으로 성립 조건을 없앴는지, 언제 다시 볼 것인지. 이 네 가지가 한 줄에 있어야 다음 감사에서 '방치' 가 아니라 '판단' 으로 읽힙니다.

현장에서 만나는 모습

형상 목록 자체를 지켜야 합니다. 인증받은 목록이 조용히 바뀌어 있는 것이 최악입니다. 누가 언제 무엇을 왜 바꿨는지가 없으면, 지금 도는 것이 인증받은 그것인지 아무도 답할 수 없습니다. 그래서 목록 파일의 해시를 따로 기록해 둡니다. 목록이 바뀌면 해시가 바뀌고, 해시가 바뀐 것은 즉시 드러납니다.

재평가 시점이 없는 완화는 완화가 아닙니다. "지금은 이렇게 막아 둡니다" 로 끝나면 그 완화는 영원히 남습니다. 다음 재인증 주기가 언제인지, 그때 이 항목을 어떻게 처리할 것인지를 함께 적어야 완화가 끝을 가집니다.

조치 대상이 아닌 것을 표에 넣지 마십시오. 영향 없음으로 판정한 항목까지 조치 표에 올려 두면, 표가 길어지면서 진짜 대상이 묻힙니다. 판정 근거는 별도로 남기고, 조치 표에는 조치할 것만 올립니다.

이어서 읽을 것

바꿀 수 없는 구성을 지키는 이야기가 여기까지라면, 바로 뒤에 오는 글은 '누가 무엇을 언제 했는지' 를 남기는 설계와, 그 설계를 다음 사람에게 넘기는 일을 다룹니다. 감사 추적은 사고 뒤에 찾는 것이 아니라 작업 전에 남게 만들어 두는 것이고, 인수인계 문서는 그 설계가 이어지는 통로입니다. 그다음 실습에서 두 글의 내용을 한 번에 손으로 밟습니다.