반응형

독일에 사는 보안 전문가 블라디미르 팔란트(Wladimir Palant) 씨가 한국 보안 체계에 대해 분석한 글들이 화제다.

한국의 보안 체계에 대해 상당히 높은 이해를 가지고 심도 있는 비판을 하고 계신다.

그런데, 이 분의 최근 글을 읽고서(저자 허락 하에 한국어로 번역되고 있음) OS의 신뢰할 수 있는 루트 인증서 목록에 뭔가 신뢰하면 안 될 것 같은 인증서들을 설치한다는 것을 알 수 있었다.

 

진짜 문제는 이 인증서들은 보안 프로그램(이라고 쓰고 구라라고 읽는다)을 제거 하더라도 삭제되지 않는다는 것...

 

 

즉, 이러한 보안 프로그램들을 삭제한 뒤에 인증서 관리 기능을 실행해서 직접 인증서를 제거해줘야 진짜 제거가 끝난다는 것이다.

 



이런 작업을 구라제거기에서 해달라는 요청을 몇몇 분들께 받게 되었다.

일단 기술적으로 가능한지를 확인해봤고, 별 문제 없이 가능[각주:1]함을 확인할 수 있었다.

 

그런데, 좀 생각을 하다보니 이걸 구라제거기가 수행하는 게 맞는 건지에 대한 의문들이 몇 가지 들기 시작했다.

 

1. 구라제거기가 이걸 제거하는 것 자체가 맞는 건가?

처음부터 구라제거기를 만들었을 때의 목적은 컴퓨터의 보안을 강화하는 게 아니었다.

키보드 보안 프로그램들이 PC에 너무 많이 설치되어 있어 컴퓨터의 성능을 어이없을 정도로 떨어뜨렸고, 이 문제를 해결하기 위해 "프로그램 추가/제거"의 기능을 "절차대로" 대신 수행하는 것이었다.

물론 프로그램 추가/제거 항목에 들어가지 않는 몇몇 악성 프로그램들을 삭제하기는 하지만, 이게 구라제거기가 제거할 구라인지에 대한 근본적인 의문이 생겼다.

 

2. 구라제거기 기본 동작처럼 선택된 구라를 몽땅 제거하면 되나?

만약 1번 의문이 yes라고 결론난다면... 다음으로 드는 의문은 이것이다.

그냥 보이는 족족 다 지우면 되는 건가?

 

프로그램 추가/제거에선 지우지 않은 목록인데, 인증서만 지워버리는 건 제대로 된 동작일까?

각각의 인증서에 대해서 프로그램 추가/제거 목록을 일일이 확인해서 삭제하는 건 뭔가 배보다 배꼽이 더 큰 거 같은데?

 

3. 루트 인증서 중에 정말로 필요로 하지 않는 인증서인지를 어떻게 정확하게 식별할 것인가?

블라디미르 팔란트 씨가 몇 개의 루트 인증서 목록을 게시했다.

 

 

내 PC들을 뒤져보니 그 목록에 있는 것보다 더 많은[각주:2] 수상한 루트 인증서들이 있었다.

그런데, 이 목록들이 정말로 제거 대상인지 어떻게 확신할 수 있는지를 모르겠다.

게다가 삭제했을 때 발생할 수 있는 사이드 이펙트를 예측하기도 힘들고, 이전 상태로 복원하는 것도 쉽지 않다.

단순하게 삭제의 범위를 최소화하는 방법 외에 어떤 방법이 있을지를 모르곘다...

 


 

아니, 아무리 이름이 구라제거기라지만, 구라제거기가 대체 뭐까지 해줘야 되는 거지?

보안프로그램이란 이름으로 너흰 대체 무슨 짓까지 하는 거냐?

 

덧. 루트 인증서를 삭제하려면 CertDeleteCertificateFromStore() 함수를 사용하면 된다.

그런데, 인터넷에 올라온 대부분의 예제들, MS 홈페이지의 예제들은 물론 ChatGPT가 생성해주는 예제들까지도 "신뢰할 수 있는 루트 인증 기관"의 인증서를 삭제하는데 죄다 실패했다...

별건 아니었지만, CertOpenStore() 함수 호출할 때 인자들에 대한 설명이 좀 부족했던 덕분에(?) 수많은 시행착오 끝에 겨우 적절한 인자를 찾았음...

 

 

  1. 이라고 썼지만, 예제 코드들이 의외로 뭔가 부실했음... [본문으로]
  2. 내 PC는 실제 사용하는 PC이므로 더 많은 프로그램들이 있는 게 당연함 [본문으로]
반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band