본문 바로가기

나의 이야기/낙서장

병무청 시스템과 삼성SDS시스템의 결함...

요즘은 한겨례일보로 신문을 변경한 후로는 아침에 신문보면서 막 짜증은 안난다.
오늘은 문득 자그마한 기사로 나온...

'납품한 삼성SDS시스템에 근본적 결함'
http://www.hani.co.kr/arti/society/society_general/301572.html

내용을 읽어보니...
병무청이 운영하는 '공직자 병역사항 조회'코너에서 3만 1천명의 고위 공직자 주민등록번호를 노출시킨 실수아닌 실수를 지적한 기사였다.

2006년 3월 '병무행정 차세대 정보시스템'을 조달청을 통해서... 삼성SDS가 117억원을 들여서 만든 시스템의 일부라고 하는데...

기사내용을 읽어보니... 데이터를 검색하는 키와 비슷하게 주민등록번호를 사용하였고 이를 스크립트에 넣어서 동작하는 방식으로 코딩한 내용이었다는데... ~.~

다음과 같이 결론을 내릴 수 있겠다.

1. 소프트웨어 개발자가 주민등록번호를 외부로 노출시키면서 동작하게 만든 설계를 한 곳에서 이 책임을 지어야 한다. 공공SI의 특성상 노가다맨으로 들어가는 프로그래머에게 무슨 잘못이 있으랴... 이는 전적으로 설계한 사람의 책임이다.

2. 마찬가지로 건설현장과 똑같은 감리시스템을 통해서 시스템을 점검하고 있는데... 이를 알아보지 못한 감리한 회사나 담당자 책임도 똑~~같다. 보통 공공SI의 감리실태를 파악할때에 세부적인 코드까지 보는 경우를 본적이 없다. ~.~ 어차피 문서로만 씨름할뿐...

3. 정부의 웹표준화 방향이나 보안성 표준에도 문제가 있다. 얼마전에 인증서와 관련하여 금결원에서 오픈웹에게 소송 패소를 내린것과 마찬가지로 http://openweb.or.kr/?p=143  보안성에 대해서 IE만 체크한다는... 2MB 스러운 답변만 이야기한다.

4. 이번 문제는 사실 보안성의 문제라기 보다는... 공공SI를 수행하는 수행방식의 문제점으로 인하여 발생한 문제로 보인다.

자... 여기서 이 문제가 보안성의 문제가 아니라 공공SI의 수행상의 문제라고 보는 이유가 무엇인지 이야기 해보겠다.

문제의 핵심...

이번에 발생한 문제는 아주 단순한 거다...
실제 병무청에 들어가서 보니... 프로그램은 매우 단순했다.

원하는 공직자의 이름과 소속단체를 지정한후 그 사람의 데이터를 보는 방식에서
어처구니 없게도 주민등록번호를 사용하였고...
웹에서 이를 스크립트화 할때에 그 번호를 그냥 사용한 것이 문제점인 것이다.

더더군다나... 스크립트의 코드를 IE6에 맞추었다는 삼성SDS의 이야기는 더 웃긴다... ~.~
머, 사업수행계획서에 그렇게 나열하면 자기 책임은 없다고 우기겠지만...

이 문제를 해결할 방법은 없었는가?

아주 간단한 방법들이 많다.
1. 주민등록번호를 암호화하는 방법을 사용하였으면 이런 문제가 발생안했겠죠. ~.~
2. 검색시에 주민등록번호를 사용하지 않았으면 마찬가지로 이문제가 발생안했겠죠...
3. 내부적으로 사용했더라도... 브라우저보안이나 스크립트내부에서 잘 숨겼으면 마찬가지로 안보였겠죠.

하지만... 이번 사건을 보니... 아주 원시적이고 기초적인 보안만 하고 넘어갔다.

자... 그럼 이 문제가 어떻게 발생되었는지 유추해볼까요?
머.. 이건 전적으로 저의 개인적인 생각입니다.

말그대로 믿거나 말거나...

~.~

보통 공공SI프로젝트를 수행하면 대한민국의 모든 SI업체들은 실제 개발자들은 거의 프리렌서나 하청업체의 인력을 사용합니다.
머... 갑,을,병,정... 쭉쭉... 내려가는 전형적인 하청구조이죠.

보나마다... 해당 부분의 작업은 어느 이름모를(?) 개발 하청업체에서 어디선가 구해온 프리랜서가 일을 했겠죠.

머... 당근... 보안성과 관련된 메뉴얼이나 기타 교육을 받기는 커녕...
막판까지 몰아치기 개발을 진행하다가...
결국 설계를 한 사람과 이야기도 없이.
그냥 기능을 구현하려고 하니...
가장 빨리 개발하는 방식은...

'사람'의 '키'인... '주민등록번호'가 있으니...
이를 스크립트로 노출시키고...
이를 통해서 Call하는 방식이 아주 교과서(!)적인 방식이 되겠죠.

머... 누가 뭐라는 사람도 없고.
감독은 커녕 표준이나 보안성에 대한 이야기도 없으니...
그냥 진행했을 것이고...

결국... 대한민국 공공SI의 폐해를 그대로 보여준 대표적인 사례로 남지 않을까 합니다.

~.~

머... 이문제를 들들 볶아봐야...
결국...

똑똑한 '을'인.. 삼성SDS에서 요리조리 피해놓은 문서상에서 왔다리 갔다리..
감리회사인 어떤 회사도 요리조리 왔다리 갔다리...

결국 아무도 책임지지않고...

나중에는...
아마도...

해당 코드는... ~.~
주민등록번호가 아닌...
머 임시테이블을 생성하고...
이를 보여주는 아주 간단한 코드정도로나 바뀔까요?

다만...

이를 유지보수하는 SM업체에서는...
엄청 많은 문서나 대책방안들에 대해서... 골치는 좀 아프겠죠.

.
.
.

하지만...
근본적인 부분은 그대로 남겨두고...

'땜질'하는 전형적인 대한민국 SI의 행태만 나오고 말겠죠.
~.~