막장 SW 리뷰: 삼성 SDS의 인캅스

삼성 SDS에서 개발한 인캅스(INCOPS)라는 툴이 있다[1]. 사내 보안용 솔루션의 탈을 쓰고 있지만 설명하는 기능 중 대부분(그것도 가장 중요한 것들)은 사실 상 의미가 없다. 그리고 시스템 사용자에겐 성능, 시스템 관리, 프로그램 개발 차원에서 여러가지 불이익을 안겨주는 프로그램이다. 그런 차원에서 간단히(?) 리뷰를 진행해보겠다.

문제점

많은 수의 개발툴들이 인캅스와 충돌한다. 주위에 이 솔루션(인캅스)를 도입한 회사에 다니는 사람이 있다면 좀 물어봐라. 내가 경험한, 혹은 알고 있는 것들은 이런 것들이다 (그렇지만 아직 해당 회사에 남아있거나 하는 사람이 있으니 직접적인 출처는 여기엔 안 쓰겠다)

  • 64bit Windows는 지원되지 않는다.[2] 심지어 도입 초기엔 32bit Vista도 지원안되서 말이 많았다.
  • IncrediBuild[3]와 충돌한다. 지금은 해결되었는지 모르겠지만 IncrediBuild를 통한 빌드 작업 자체가 진행이 되지 않는 문제를 들었다.
  • 빌드 자체가 깨지는 문제가 있다. S 모 전자 — SDS의 최대 고객(?)인 — 를 이미 퇴사한 l모씨(l은 이름 가운데 글자다 :p)의 설명에 따르면 전날 멀쩡히 빌드되던게 다음날 출근해보니 (인캅스가 조용히 업데이트 되어있고) 빌드가 깨지는 현상을 목격. …이런 경우의 디버깅은 말 그대로 공포다.
  • USB 암호화 기능을 사용하는데[4] 이게 웃기는게 붓팅된 후에 한 번도 암호화를 해본적이 없으면 복호화도 안된다(…). 조엘의 표현을 빌자면 “코드 한 줄만 수정하면 고쳐지는 버그” 일 것이다.
  • 모든 프로세스에 특정 DLL들을 로드해서 붙여놓는다. 무슨 일이 생기냐고? 부하 테스트 용 머신에 프로세스를 3000개 정도 띄울 수 있었는데, 인캅스가 적용되고 나니 1200개 정도가 뜨더라.[5] 당연히 모든 윈도우 서비스들에도 잘 붙어있기 때문에, 시스템이 기본적으로 사용하는 메모리도 늘어나고, 전체적으로 성능도 떨어지게 된다.

이게 “간단한” 문제들이다. 더 무서운 것은 다음 단락.

지원한다는 기능의 허점

삼성 SDS에서 강조하는 기능들은 크게,

  • 등록된 IP를 통해[6] 외부 접속을 로깅한다
  • USB 를 통한 파일 쓰기/읽기를 통제한다
  • 프린트 서버를 통제해서[7] 인쇄되는 모든 문서에 워터마크를 추가한다

인데, 이 중 마지막 기능을 빼고는 모두 아주 간단한 방법으로 뚫을 수 있다.

우선 IP 통제 자체는 간단한 기능이다. 그렇지만 IP 통신을 로깅하는 것은 현실적으론 불가능하다. 패킷량같은 문제냐고? 아니다. 외부에 SSH[8] 서버만 한 대 있으면 모든 통신을 암호화하고, 어디와 통신하는지 알 수 없게 만들 수 있다.

SSH는 “터널링”이라는 흥미로운 기능을 제공하는데 이 기능을 통해서 이런 연결이 가능하다.

컴퓨터 A (인캅스깔린 녀석) –(C1)– SSH 서버 –(C2)– 어딘가에 있는 다른 컴퓨터 B

여기에서 연결 C1이 암호화되어 있어서 인캅스에서 로그를 남겨봤자고, 다른 컴퓨터 B와의 실제적인 연결인 C2는 아예 로깅조차 할 수가 없다 — 연결이 존재하는지조차 알 수 가 없으니.

이런 방식을 통해 네트웍 로깅 기능은 의미없는 무언가로 전락한다.

USB 파일 암호화가 그나마 의미있는 기능이라고 생각했는데, 어제 점심먹고 소화되는 동안(대략 30분?) 몇 가지 테스트를 해봤더니 단번에 깨지더라. 물론 깨진다는 사실을 발견하고는 팀장님을 통해서 보안팀에는 보고했고 이 자리에선 일단은 밝히지 않겠다. ((당장 밝히면 문제가 될 소지가 있으니… 그렇지만 차후에도 안 밝힐거라고 생각하는 것은 아니겠지? 이거 술안주로 아주 좋아 뵌다. )) 그렇지만 윈도우 프로그래밍 경력 1년짜리 프로그래머한테 30분만에 깨질정도면, 경력 10년차가 충분히 존재하는 IT업계에서는 몇 명이나 이 사실을 알고 있을꺼라고 생각하나? 인캅스 도입한 업체가 100개라 치면 50개 이상은 내부적으로라도 알고 있을걸?

참고로 모든 종류의 파일을 USB파일에 쓰기 위해 내가 작성한 것은 5줄 짜리 python 코드다. 그 중 2줄은 파일 헤딩과 import다(…). 읽기 위해선 달랑 4줄이면 족했다.

결론

득보다 실이 절대로 많다. 프로그램 개발의 편의성을 생각했을 때는 정말로 최악에 가까운 무언가일 것이고, 제공한다는 보안 기능에는 모두 허점이 있다.

도입을 생각하고 있는 IT 담당자가 있다면 절대로 도입하지 않는 쪽을 추천한다.

보안이 정말로 필요한 것인지 생각해보고 필요하다면 이렇게 허술한 툴로 막을 생각은 하지 말아라. 이런 툴을 쓰는 수준에서 보안을 유지한다고 생각하면 차라리 각 구성원의 도덕성을 믿어라.

그리고 이런 xxx같은 프로그램을 돈 받고 팔고있다는 사실에 대해서도 한국 IT 업계에 경종을 울려줄 필요가 있다. 품질이 우수한 — 그리고 사용자가 원하는 기능을 제공하는 — 프로그램들은 삶의 빛이 된다. 그렇지만 제공하는 기능없이 페널티만을 강요하는 프로그램은 그 자체가 악에 가깝다. 그런 이유에서라도 이 프로그램을 도입하지 말아줬으면 하는 소망이 있다.

  1. 대기업에서 개발한 SW 제품 중에 의미있는(물론 SW를 기반으로 성장한 대기업이면 얘기가 다르지만) 제품을 생산하는 곳이 어디가 있을까마는 []
  2. 대용량 서버용 SW를 개발해야하는 곳에선 64bit 서버가 개발용으로 쓰이는데 어쩌자는건지. 문서화되지 않은 기능으로 땜빵 구현한 냄새가 여기에서도 난다. 내가 있는 회사에 64bit 서버가 쓰이기 시작한지 4년은 되었다. 개발에 쓴 것부터하면 5년도 넘을지도 []
  3. 대규모 컴파일작업을 위한 분산 컴파일 도구이다. 대형 SW의 경우 최신의 CPU를 가진 머신에서 30분의 컴파일시간도 우스운 경우가 종종 나온다. 이런 경우에도 극적인 컴파일 시간 감소(심하면 1/10이하로 줄어든다)를 경험하게 해주는 빌드 툴이다. 상용이긴 하지만 적용하는 회사는 좀 많이 알려져있다 []
  4. 모든 USB 쓰기 작업이 불가능하다. Exploer(파일 탐색기)를 통한 복사만 가능하고, 이 복사되는 파일들이 암호화된다. 그리고 인캅스가 깔려있는 다른 컴퓨터에서 복사해올 때 복호화 작업을 한다 []
  5. 물론 이건 극단에 있는 경우긴 하다. 부하 테스트 용 프로세스는 메모리를 최소한으로 쓰게 설계되어있는데 여기에 DLL을 열심히 링크하는 인캅스 덕에 메모리 사용량이 3배정도로 뛰었다 []
  6. 등록 안하면 네턱 연결이 안된다 []
  7. 가상 프린터 서버같은게 동작한다 []
  8. Secure Shell의 약자. 두 개의 컴퓨터 간에 강력한 암호화 통신을 가능케 해주는 프로토콜. *nix 계열의 많은 기능들이 이 프로토콜을 이용해서 안전한 통신을 한다. []

Published by

rein

나는 ...

35 thoughts on “막장 SW 리뷰: 삼성 SDS의 인캅스”

  1. 저는 쓰고 있는 당사자입니다 T.T
    6.0과 2005가 최신성능의 듀얼코어 노트북에서 느린이유가 저놈이었군요 -_- DLL을 엄청나게 가져다 붙이는 …

    회사에서 비스타 노트북을 주고 비스타 OS는 안주는 일이 …

    그 퇴사하신분 cygwin을 사용하셨나봅니다… 저도 겪었던 일;

    // Incredibuild는 잘 됩니다. VS2005와 같이 말이죠 ^^;;

  2. jindog / DLL이상한걸 잔뜩 붙여서 겁나 느려지죠(…)
    cygwin쓰는지는 나중에 만나게되면 물어봐야겠네요;

    // Incredibuild는 패치(?) 한 번 하고나서는 잘되는 듯합니다 ~_~

  3. 하고 싶은 말이 많은 이야기네요. 메모리 많이 잡아먹는거나 느려지는거나 보안이란 이름하에 개발자들에게 가해지는 것들 -_-;

  4. 많은 분들이 비슷한 생각을 할 것 같네요;

    그래도 인캅스는 64비트에선 안돌아서(기능이 한참 부족하단 소리지만 그걸 이용하고 있으니) 64빗 머신에서 개발하는 사람들은 그걸 피해갈 수 있긴해서 전 버티고 있습니다만은;

  5. 재밌있게 잘읽었습니다..^^
    근데 SSH 서버를 써서 붙이면 어디와 통신하는지 알수도 없게 된다는건 사실 불가능합니다. 추적하면 다나옵니다.
    그리고 암호화 한다고 로깅이 불가능하다는것도 로깅할수있는방법이 사실 다 있는지라 절대 안된다는 믿음은 버리시길…하지만 국내보안업체에서 몇몇이나 그취약점에 대해서 대응가능할지는 의문 이긴하네요ㅋ

  6. SSH 위로 지나가서 “다른 어딘가”로 가는걸 파악할 방법은 매우 적습니다. SSH도 일부 MITM 공격에는 약하긴 하지만, 대부분의 경우 안전합니다. 인캅스가 그걸 일일이 파악해서 로깅할거라곤 생각 안하니까요(…).

    ps. “절대로”란 믿음은 원래 안갖습니다. “일반적인 경우”에 한해서도 저 툴이 갖는 기능이 너무 적어서 썼던 글입니다

  7. 그렇다면 SSH-tunneling으로 왔다 갔다 하는 패킷도 해석할 수 있다는 의미인가요?

  8. clq / MITM 으로 A-B-C 연결에서 B가 되어 A에겐 C인척, C에겐 A인척 할 수 있다면 가능은 합니다(…).

    다만 이 마져도 연결하는 SSH 서버의 풋프린트를 미리 알면 별 의미 없고 / SSH 2를 강제하는 경우 사실상 불가능합니다.

  9. *sigh* 아. 그런 의미였군요. 평소에 딴짓을 위해 ssh tunneling을 사용하고 있는지라 잠시 뜨끔했습니다. -_-;;

  10. 궁금한게 있는데요. 저희 회사에서도 인캅스를 사용하던데 점심시간을 제외하고는
    인터넷 사용을 막아놨더라구요. 혹시 이거 우회해서 인터넷에 접속하는 방법이
    있을까요?

    1. 그건 좀 다른 문제라 우회가 안될 것 같은데요(…). 부분적으로 막는걸(black-list 기반으로) 우회하긴 쉬운데 그쯤되거나 white-list 기반이면 저도 딱히 아이디어가 없네요.

Leave a Reply