| 안전한 웹 애플리케이션 개발 | 2008.07.24 |
Web Security Solution All Guide Chapter 3. 웹 보안 전문가 노하우 훔쳐보기
안전한 인터넷 가용성 확보
많은 기업의 비즈니스가 웹 애플리케이션과 서비스 환경에서 이루어지고 있고 그와 더불어 많은 사용자들이 기업의 웹 환경을 통해서 상거래를 하고 있다. 또 인터넷 상에서는 수십억의 네티즌들이 다양한 소셜 네트워크와 블로깅을 통해서 자신이 가지고 있는 정보와 자신의 콘텐트를 인터넷 상의 모든 네티즌과 공유하고 있다. 기업과 개인들은 이를 통해 소중한 정보를 주고 받고 있으며 이를 통해 얻을 수 있는 것이 많다는 것을 알고 있는 크래커와 범죄 집단들은 웹 애플리케이션이 가지고 있는 구조상의 설계상의 문제를 통해 해킹을 시도하고 다양한 사회적인 문제를 발생시키고 있다. 이는 영화에서 있을 법한 일이 아니라, 우리가 처한 현재의 사실이며 수년 전부터 직면하고 있는 문제다. 이러한 현실에서 웹 애플리케이션과 서비스 환경을 안전하게 하도록 안전성이 강화된 웹 애플리케이션을 개발하는 방법론을 개발 적용하고 이를 통해 만들어진 결과에 대한 지속적인 관리와 감사를 통해 비즈니스 안전성과 기업의 가치를 높이며 사용자의 인터넷 이용에 대한 불안을 제거할 수 있는 방안을 고려해야만 한다. 커져만 가는 웹 애플리케이션 보안 문제 초고속 인터넷이 나오기 이전의 인터넷은 웹 사이트로서만 구성되어 있는 정보의 저장소로서 정적인 문서만을 포함하고 있었고 사용자의 웹 브라우저는 검색과 표시의 역할만을 수행하고 있었다. 이러한 환경에서 인터넷에서 행해지는 대부분의 악의적인 행위들은 웹 서버 소프트웨어의 취약점에 대한 보안 위협이었으며 해커는 웹 서버를 손상시키지 않고 변조하거나 와레즈로 삼아 이용했다. 하지만 초고속 인터넷의 등장과 이를 통한 비교적 복잡하고 다양하며 풍부하고 강력한 Rich 콘텐트를 사용자에게 전달할 수 있는 인프라스트럭처가 공급되면서, 기능적이고 대화형인 웹 애플리케이션이 인터넷을 통해 전달되었으며 이는 서버와 브라우저간의 양방향 정보 흐름에 의존하여 경이로운 세계를 사용자에게 전해주고 있다. 웹 애플리케이션은 초고속 인터넷의 진화를 통한 전송속도의 개선과 경이로운 보급율과 함께 더욱 복잡해지고 있고 단순히 웹 사이트를 구성하기 위한 요소가 아닌 기업과 조직의 중요한 시스템으로서 핵심 요소로 자리를 잡게 되었으며 마치 서버-클라이언트 컴퓨팅과 같은 양방향 정보이동이라는 중요한 기능과 TCP/IP 프로토콜이 가지고 있는 오픈 시스템 구조를 악용하여 개인 정보를 빼앗고 금융사기를 수행하고 사용자에 대한 악의적인 행위를 실행하고자 애플리케이션을 손상시키거나 사용자 브라우저를 공격할 수 있게 되었다. 이로 인해 초기 인터넷에서는 그다지 요구하지 않던 사용자 인증에 대한 부분이 강화될 필요성이 늘어나게 되었고 이를 위해 다양한 인증 기법과, 암호화 이를 보완하기 위한 Active-X를 이용한 부가적인 Add-on을 지원하게 되었다. 오늘날 인터넷에서 이용되는 일반적인 웹 애플리케이션들은 온라인 쇼핑몰, Social 네트워킹, 온라인 Banking, 온라인 검색, 옥션, 온라인 게임, 웹 블로그, 웹 메일, 위키-피디아와 같은 기능들을 일반 사용자들에게 제공하고 있으며 이를 통해 상상할 수 없을 만큼 다양하고 많은 정보를 넷을 통해 전달하고 있다. 이러한 서비스 환경의 구축과 제공이 가능했던 이유는 가볍고 연결이 용이하며 다른 프로토콜로 운용되거나 전달될 수 있는 HTTP 프로토콜을 사용하고 있고 초기 인터넷을 이용하던 시점에서는 간단한 정보를 확인하기 위해서 WinSock을 설치하고 넷스케이브를 설치하는 등의 과정을 거쳐야 했지만 이제는 대부분의 클라이언트 운영체제에서 브라우저를 제공하고 있기 때문이다. 게다가 웹 애플리케이션은 브라우저로 사용자 인터페이스를 동적으로 배포되며 사용자 인터페이스의 변경은 단 한 차례 서버에서의 작업만으로 가능하며 즉시 이루어지기 때문에 굉장한 편의성을 지니고 있다. 이러한 변경을 수용할 수 있도록 하는 오늘날의 브라우저는 매우 기능적이고 복잡한 기능을 지원하며 서비스 혹은 판매를 위해 Customize한 사용자 인터페이스를 적절히 제공할 수 있고 이용되는 표준 네비게이션과 사용자 입력 조작을 지원하는 웹 인터페이스는 매우 직관적이며 사용자들에게 매우 친숙하다. 다양한 기능을 제공하는 웹 애플리케이션의 증가와 새로운 기술의 발전으로 인한 애플리케이션 서비스를 제공하는 서버측의 부하가 늘게 되자, 클라이언트 사이드 스크립팅을 이용해 클라이언트 단에서 애플리케이션 프로세스의 일부를 처리할 수 있도록 하는 기술도 이용되고 있다. 이와 더불어 웹 애플리케이션 개발에 이용되는 비교적 간단한 핵심기술과 언어는 광범위한 플랫폼과 개발도구를 이용한 초보자도 강력한 애플리케이션의 개발을 용이하게 하고 방대한 양의 오픈소스 코드와 다른 자원들은 사용자가 개발한 애플리케이션과의 결합이 가능하게 하였고 이를 통해 웹 애플리케이션을 통한 네트워크가 지원될 수 있었다. 하지만 다른 대부분의 새로운 기술과 마찬가지로 웹 애플리케이션은 새로운 보안 취약점의 경향을 초래하게 되었고 가장 일반적으로 겪게 되는 결함의 경향을 대부분 어느 정도의 시간이 지나 나타나게 되었다. 이러한 새로운 공격은 기존에 개발된 애플리케이션이 고려하지 않은 부분에서 나타났고 공격에 대한 새로운 가능성을 소개할 수 있는 새로운 기술들이 개발되었지만, 어떤 문제들은 해당 문제에 대한 이해의 증가 혹은 웹 브라우저의 변화로 인해서 덜 유행하거나 사라지게 되었다. 이러한 진화로 인해 주요 웹 애플리케이션의 손상은 아무리 새로운 것이라도 존재하며 기세가 한풀 꺾였다거나 문제가 감소한다라는 판단은 존재할 수 가 없고 거의 확실하게도 웹 애플리케이션 보안은 오늘날 공격자들과 보호가 요구되는 컴퓨터 자원 및 자료에 있어서 가장 중요한 전장이며 가까운 장래에도 역시 그렇게 될 것이 확실하다. Myth : 보안 요소가 존재하는 사이트는 안전하다? 이슈가 많이 되었기 때문인지 웹 애플리케이션에 있어 보안이 큰 문제라는 광범위한 이해가 존재하지만, 그 정확한 이해의 정도를 위해서라면 웹 애플리케이션에 대한 컨설팅을 통해 실제로 안전하다는 것에 대한 재검증이 요구된다. 예를 들어, 어떤 신뢰할 만한 사이트에서 비인가 사용자가 정보를 확인하는 것을 예방하기 위해 128bit SSL로 설계되었고 해당 사이트에서 SSL과 함께라면 데이터가 안전하다는 확신을 가져도 된다고 한다면 거의 모든 경우에서 SSL을 이용하기 때문에 웹 애플리케이션의 상태가 안전하다고 믿는다. 사용자들은 종종 해당 사이트의 인증서를 검증하는 것을 주목하며 진보된 암호화 프로토콜이 이용되는 것에 감탄하고 이러한 기반에서 그들의 개인정보가 안전하다고 확신한다. 하지만 실제로 대부분의 웹 애플리케이션은 안전하지 못하며 SSL을 통해 이러한 안전성을 보장할 수 없다. 2006년과 2007년에 걸쳐 검사된 애플리케이션의 경향으로 몇몇 일반적인 취약점에 의한 사고 내용을 확인할 수 있다. ● Information Leakage (81%) ● Cross-site Scripting (91%) ● SQL Injection (36%) ● Broken Access Control (78%) ● Broken Authentication (67%) 그렇다고 해서 SSL이 불필요한 기술이라는 것은 아니다. SSL은 사용자의 브라우저와 웹 서버간에 데이터 전송 중 기밀성과 무결성을 보호하는 굉장한 기술이다. 이는 도청자에 대한 방어에 도움을 주고 사용자가 이용하고 있는 웹 서버에 대한 확실한 구별과 사용자 확인에 도움을 제공한다. 하지만 이는 대부분의 성공적인 공격이 그러하듯이 애플리케이션의 서버 또는 클라이언트 요소에 대한 직접적인 공격을 막을 수 없다. 특별히 위에서 언급된 취약점에 대한 예방을 제공하지 못하며 많은 다른 경우에서 알 수 있듯이 애플리케이션에 대한 치명적인 공격에 이용될 수 있다. SSL을 사용하고 있는지 그렇지 않은 지와 관계없이 대부분의 웹 애플리케이션은 보안 문제점을 포함하고 있다. 웹 애플리케이션 보안이 요구되는가? 100개가 넘는 대기업과 정부기관의 애플리케이션에 대한 Sanctum의 연구에 따르면 판정한 애플리케이션의 92%가 통한 혹은 제품과 단계에서 진행된 보안테스트에서 부적합 판정을 받았고 문제수정을 위해 평균 2.5개월과 2천 5백만 달러가 소요되었지만, 부적합 애플리케이션의 재검사시 20%가 보안테스트를 통과하지 못했고 이들 중 절반은 계속적으로 보안 테스트를 통과하지 못했다. 이런 연구 결과로 미루어 보아, 발생한 문제점을 수정하고 안전한 상태를 유지하는 것이 쉽지가 않다는 것을 알 수 있고 국내외 다양한 매체를 통해서 소개된 침해사고를 통해 이러한 위험을 그 누구도 피해갈 수 없다는 사실이다. 또한 지속적으로 증가하고 있는 웹 애플리케이션을 통한 공격과 피해는 웹 애플리케이션이 크래커들의 제일 공격 목표이며 - 웹 애플리케이션은 고객정보, 신용카드, ID탈취, 도용, 사이트 변조를 할 수 있는 매우 가치 있는 표적이기에- 이러한 사실은 악의적인 공격의 75% 이상이 웹 애플리케이션 계층에서 발생(출처 : Gartner)하며, XSS과 SQL Injection이 그 1, 2위가 되는 공격에 이용되는 취약점(출처 : Mitre)이라는 사실을 통해 뒷받침이 되고 있다. 다른 몇몇 연구에 의하면 대부분의 사이트가 취약성을 가지고 있고 사이트의 90%가 애플리케이션 공격에 취약하고(출처 : Watchfire), 쉽게 공격이 가능한 취약점의 78%가 웹 애플리케이션에 영향을 주며(출처 : Symantec), 2010년에 이르러 기업 미 조직의 80% 애플리케이션 보안사고를 겪게 될 것(출처 : Gartner)이기에 웹 애플리케이션에 대한 보안이 시급하게 필요함을 확인할 수 있다. 웹 애플리케이션 보안의 문제점 웹 애플리케이션 보안을 이루는데 있어 가장 큰 문제점은 웹 세션은 기본적으로 보호 기재가 없다는 것이다. 전통적인 보안솔루션의 하나인 방화벽은 웹 공격에 대한 적절한 방어를 제공하지 못한다. 웹 필터, 인증 및 암호화는 다른 역할을 담당하고 있다. 모의 해킹과 같은 작업은 적절한 결과를 얻기 위해 많은 시간과 비용을 지불해야 하며 IT 보안 인력은 일반적으로 문제원인이 되는 애플리케이션 개발에 대한 경험이 없고 개발자와 프로그래머들은 일반적으로 보안과 관련된 경험이 없어 이러한 위협에 대한 적절한 대응이 어렵다. 게다가 아직까지도 많은 사람들이 이러한 문제점이 존재한다는 것조차 모르고 있다는 것이다. 웹 애플리케이션 보안의 주요 원인 웹 애플리케이션을 이용하는 사용자는 클라이언트와 서버간에 전송되는 데이터의 모든 부분에 간섭할 수 있고 간섭된 임의의 입력값은 사용자가 어떤 절차에서라도 요청을 보낼 수 있고 애플리케이션이 예상하는 단계와 다른 단계에서 파라메터를 제공할 수 있다. 또한 사용자가 애플리케이션에 접근하는데 이용하는 브라우저에 제한을 받지 않는다. 이러한 문제는 웹 애플리케이션의 경우 문제를 더욱 악화시키기 위해 조합되는 몇몇 요인이 존재한다. ● 미비한 보안의식(Immature Security Awareness) ● 자체 개발(In-house Development) ● 신뢰할 수 없는 단순함(Deceptive Simplicity) ● 급속한 위협 프로파일의 변화(Rapidly Evolving Threat profile) ● 자원과 시간의 제약(Resource and Time Constraints) ● 지나치게 확장된 기술(Overextended Technologies) 웹 애플리케이션 해킹이 증가하는 원인 위에서 이미 언급한 웹 보안의 문제점과 주요 원인으로 인해 웹 애플리케이션은 이제 더 이상 사용자에게 안전하지 않은 장소로 전락하고 말았다. 웹 애플리케이션 보안에 대한 이해의 부재는 SDLC내에서 필요한 보안 요소의 적용이 부재하도록 만들었고 이 영향으로 인해 취약점을 내재한 애플리케이션을 설계/개발/통합/배포 하게 되었다. 또한 별도의 검증을 하지 않은 자체제작/서드파티 애플리케이션이나 애플리케이션 자체의 대형화 및 다양한 기술의 혼재, 다수의 애플리케이션 운용 및 관리로 인한 업무부하는 다양한 취약점을 내재한 애플리케이션이 증가하도록 방치되게 만들었고 애플리케이션 취약점 관리체게의 미비로 말미암아 주기적인 점검이 불가능하여 지속적으로 점검의 시기를 놓치며 다수의 애플리케이션에 대한 전체적인 관리 및 시정이 결여되게 되었다. 이런 문제점으로 지적된 원인들과 더불어 웹 애플리케이션이 기업 및 조직의 데이터베이스에 접근하는 게이트웨이가되고 많은 사용자의 정보와 온라인 거래가 이루어지며 손쉽게 웹 애플리케이션 취약점을 확인할 수 있다는 공격자에게 주는 매력적인 요소들로 인해 웹 애플리케이션 해킹은 계속적으로 증가되고 있다. 기업이 받는 피해는 침해사고에 그치는 것이 아니라, 언론의 주목을 받아 브랜드에 악영향을 미치고 이는 주식 시가의 급등락의 원인이 되며, 언론/통신/감시에 대한 서비스 비용을 증가 시키며 법적인 수수료(미국의 경우 보고서 작성에만 3~4백만 달러), 다양한 페널티(연방거래위원회의 페널티는 최고 1,500만 달러), 감사의 요구, 고객의 소송 등에 의한 추가적인 피해를 받게 된다. 웹 애플리케이션 보안 취약점 관리, 필요 위에서 언급한 다양한 내용의 웹 애플리케이션에 대한 위협, 문제, 원인과 영향으로 인해 웹 애플리케이션 보안에 대한 위협과 취약점을 파악할 수 있다는 것은 웹 애플리케이션을 안전하게 하고 원활한 서비스를 하는데 도움을 줄 수 있다. 이는 어떤 보호 기술이 드러난 취약점에 대해 가장 효과적으로 애플리케이션을 방어하는데 이용될 수 있는지를 결정할 수 있도록 도움을 주며 문제점을 해결하는데 있어 특정한 기술을 선택하기에 앞서 일반적인 대책을 구상하여 처리하는 것이 바람직하기 때문이다. 이를 통해 해결된 문제점과 해결되지 않은 문제점을 파악함으로써 항상 애플리케이션이 가지고 있는 문제점을 이해하여 발생할 수 있는 사고를 최대한 억제하거나 예상할 수 있다.
이는 각 공정별 보안검토와 이를 보완하기 위한 노력이 각 과정을 마친 후 문제를 확인하여 보완하는 것 보다 효과적임을 증명하며 이를 통해 웹 애플리케이션 취약점을 관리하는 것이 얼마나 중요한지를 알 수 있다. 웹 애플리케이션 보안을 이루기 위한 주체 위협과 문제점, 원인과 필요성 그리고 취약점 관리가 중요하다는 사실을 알게 되었지만 누가, 어떻게 이룰 수 있는지에 대해서는 아직 논의되지 않았다. 대부분의 위협관리가 그렇듯 웹 애플리케이션 보안도 다수의 주요한 주체가 사람, 프로세스, 기술 및 정책/규정에 의해서 반드시 성립되고 유지되어야만 한다. ● 사람 : SDLC의 주체. 개발과 배포에 책임. 안전한 설계원리와 보안 위험의 기본을 이해해야 함. ● 기술 : 자동화된 보안 검사도구의 이용으로 Scale과 비용면에 유리하도록 함. 기업 내 정책 및 규정에 밀접하고 일관성 있는 권고를 제공해야 함. ● 프로세스 : SDLC에 보안검사를 통합하는 것은 좋은 위험관리의 중요한 시작임. 최종 검토의 일부로 이러한 위험에 정통한 책임 있는 보안 및 품질 평가팀에 의해 검사가 요구됨. 이러한 프로세스는 발견된 보안문제에 대한 시간과 비용을 최소화하기 위해 각 공정별로 통합이 요구됨. ● 규정 : 사람과 기술 및 프로세스를 강제할 수 있는 조직 및 산업계의 표준. 각 주체별 적절한 이해와 기능 및 절차를 준수 할 수 있도록 함. 이러한 주체가 SDLC의 각 단계에 따라서 필요한 작업을 수행하고 이를 유지할 수 있도록 함으로써 안전한 웹 애플리케이션 개발과 운용 및 유지를 통해 웹 애플리케이션이라는 전장에서 안전하게 사업을 영위할 수 있을 것이다. ● 웹 애플리케이션을 안전하게 하는 것은 애플리케이션의 개발 주기에 따라 취약점을 최소화 할 수 있도록 각 단계별로 보안요소를 고려한 작업이 요구되며 이를 위해 웹 애플리케이션 보안 교육이 요구된다. ● 교육을 통한 웹 애플리케이션 보안의 이해의 증진은 각 단계별 작업자의 이해도에 따른 보안성을 제고한 단계별 작업이 이루어지며 이에 대한 체크리스트 혹은 도구를 통해 활용도를 높일 수 있다. ● 애플리케이션의 취약점을 검출하고 관리하고 수정하며 감시하기 위한 지속적인 작업이 요구된다. ● 이는 설계, 코딩 단계에서 발생한 취약점을 검출하여 관리하지 않으면 결국 베타 혹은 프로덕션된 애플리케이션을 관리하면서 문제를 수정해야 하기 때문이며 이러한 관리가 체계적으로 이루어지지 않는다면 문제 발생시 이를 적절하게 대처하거나 기존에 수정된 애플리케이션의 내용을 확인하지 못하고 문제점을 가지고 있는 애플리케이션을 재배포하는 등의 문제가 발생할 수 있기 때문이다.
<글·이동일 시드시스템 대표이사(jason@seedsystem.net)> [정보보호21c (info@boannews.com)] <저작권자: 보안뉴스(www.boannews.com) 무단전재-재배포금지> |
|
|
|