사례로 드러난 보안 취약성, WAF의 필요성을 보여주다

F5 에코시스템 | 2017년 10월 05일

온라인 학습은 큰 비중을 차지합니다. 특히 스스로를 개발자라고 생각하는 사람들에게는 더욱 그렇습니다. Stack Overflow의 연례 개발자 설문조사(수만 명이 응답하는 설문조사)를 살펴보면 정규 교육을 받지 않은 개발자가 상당히 많다는 사실을 알 수 있습니다:

개발자 교육
  • 전 세계 현직 전문 개발자 중 76.5%가 석사 학위 또는 이에 준하는 학위를 포함해 학사 이상의 학위를 보유하고 있다고 답했습니다.
  • 20.9%는 경영학, 사회과학, 자연과학, 컴퓨터 공학 이외의 공학 또는 예술 등 다른 분야를 전공했다고 답했습니다.
  • 현재 활동 중인 전문 개발자 가운데 32%는 정규 교육이 자신의 경력 성공에 그다지 중요하지 않았거나 전혀 중요하지 않았다고 답했습니다. 다음 사실을 고려하면 이는 그리 놀라운 일이 아닙니다. 전체 개발자의 90%가 자신을 적어도 어느 정도는 독학으로 배웠다고 생각합니다: 정규 학위는 교육의 한 측면일 뿐이며, 실질적인 일상 업무의 상당 부분은 회사가 개별적으로 결정한 기술 스택에 따라 달라지기 때문입니다.

설문 조사 결과에서 강조 표시된 부분을 주목해 보세요. 왜 이것이 사실인지에 대해서는 논문 한 편도 쓸 수 있겠지만, 간단히 말해 제가 학사 과정을 밟을 때는 Pascal, C++, LISP로 코드를 작성했습니다. 첫 정식 개발자 직장에서는 C/C++가 필요했기 때문에 그 부분은 문제가 없었습니다. 하지만 나중에는 Java를 배워야 했고, SQL도 익혀야 했습니다. 그렇다고 다시 학교에 다니지는 않았습니다. 대신 책과 도움말 파일을 비롯해 구할 수 있는 온갖 문서를 찾아봤습니다. 정규 교육을 받았든 아니든 독학이 일반적인 이유는 기술이 계속 변하고, 전문가들에게는 새로운 언어나 프레임워크를 배우기 위해 다시 학교에 다닐 시간이 없기 때문입니다.

이런 일은 우리 누구에게나 전혀 드물지 않다고 생각합니다. 새로운 CLI나 API를 배우려고 다시 학교에 가지는 않습니다. Python이나 Node.js를 배우기 위해 새 학위 과정에 등록하지도 않습니다. 대신 책과 인터넷 콘텐츠, 커뮤니티를 활용하며, ‘예제 코드’에 크게 의존합니다.

개발자들이 독학하는 방법

저는 여전히 블로그와 문서에 의존합니다. 우리 회사의 엔지니어와 아키텍트가 작성한 것뿐만 아니라 다른 사람들이 작성한 것도 참고하죠. 지금 박사 과정에 등록한다고 해서 Express 프레임워크나 JQuery의 세세한 부분까지 익히는 데 실질적인 도움이 되지는 않을 테니까요.

따라서 네트워크 엔지니어와 운영 담당자들(DevOps의 두 번째 물결을 이끄는 주역인 이들을 앞으로는 NetOps라고 부르겠습니다) 역시 필요한 도구와 기술을 능숙하게 다루는 데 필요한 역량을 습득하기 위해 비슷한 유형의 자료를 찾을 가능성이 높다는 것은 놀라운 일이 아닙니다. 이제 막 이 글을 읽기 시작한 분들을 위해 말씀드리자면, 여기서 말하는 역량은 스크립팅 언어와 API입니다. 이들 역시 언어와 시스템에 익숙해지고 프로덕션 파이프라인 자동화를 시작하면서 마음껏 복사하여 붙여넣기를 하게 될 것이 분명합니다.

이제 오늘 제가 이 글을 쓰는 이유에 대해 이야기해 보겠습니다. 바로 예제 코드입니다.

예제 코드는 아주 많습니다. 게다가 좋은 코드이기도 합니다. 제가 예제 코드의 가치를 인정하지 않거나 고마워하지 않는다고 생각하지는 마세요. 예제 코드는 새로운 언어와 API를 배우려는 누구에게나 매우 귀중한 자료입니다. 제가 불만을 제기하려는 부분은 예제 코드와 보안 사이에 반드시 해결해야 할 괴리가 있다는 점입니다. 새로운 사람들에게 코딩을 가르칠 때는 보안을 노골적으로 무시할 것이 아니라, 적어도 보안에 대한 인식 을 심어 주어야 하기 때문입니다.

제가 이렇게 말하는 이유는 애플리케이션 보안은 선택 사항이 아니기 때문입니다. 다시 한번 강조하지만, 절대 선택 사항이 아닙니다. 통계를 끝없이 늘어놓을 수도 있지만, 이쯤이면 이미 잘 아는 분들께 하는 이야기이길 바랍니다. 애플리케이션 보안은 선택 사항이 아니며, 보안이 개발의 필수 요소로 여겨질 때까지 이러한 인식을 널리 확산하는 것이 중요합니다. 애플리케이션뿐만 아니라 DevOps와 NetOps 담당자가 손쉽게 자동화를 구현하는 데 사용하는 스크립트와 시스템도 마찬가지입니다.

제가 우려하는 이유를 보여 주는 사례로 다음 예를 들겠습니다.

코드 자체는 아름답습니다. 정말로요. 형식도 잘 갖춰져 있고, 간격도 적절하며, 읽기도 쉽습니다. 저는 이 코드를 정말 좋아합니다. 다만 보안 규칙 제0조를 완전히 위반하는 부분만 빼고요.

보안 규칙 제로를 위반하는 예시

사용자 입력을 절대로 신뢰하지 말지어다.

입력값을 정제해야 한다는 점을 최소한 언급조차 하지 않은 것이 실망스럽습니다. 댓글에도, 본문에도 그런 내용은 없습니다. 코드는 “username”에 악성 콘텐츠가 포함되어 있을 가능성을 전혀 고려하지 않은 채 그 값을 다른 함수로 넘길 뿐입니다.

하지만 Lori, 이 코드는 실제 프로덕션 환경에 적용하도록 설계된 것이 아니라 어떤 기능의 구현 방식을 설명하기 위한 예시일 뿐이잖아요. 위험할 건 없어요.

요점은 그게 아닙니다. 요점은 우리가 계속 사람들에게 코딩을 가르치려 한다면, 적어도 안전하게 코딩하는 법도 가르치려고 노력해야 한다는 것입니다. C/C++를 처음 접하는 개발자에게 포인터에 메모리를 할당하지 않고 접근하면 문제가 생긴다고 늘 알려 주듯이, 보안에 대해서도 언급해야 합니다. 포인터는 접근하기 전에 메모리를 할당하지 않으면 프로그램이 충돌합니다.

보안과 SDLC가 말로만 중요하게 다뤄지다가도, 막상 실질적인 문제와 코딩 교육에 들어가면 갑자기 구석에 홀로 내팽개쳐진 채 SEP(다른 누군가의 문제) 장막에 둘러싸이는 사례만으로도 블로그 글을 몇 편이고 쓸 수 있다.

이는 웹 애플리케이션 방화벽이 모든 애플리케이션 보안 전략에서 핵심 요소인 또 하나의 이유입니다. 조직은 수많은 애플리케이션 보안 취약점의 새로운 피해자가 되지 않도록 사용자 입력과 이를 무조건 정상적인 것으로 받아들이는 애플리케이션 사이에 방화벽을 마련해야 합니다.

코드 보안의 중요성을 아무리 강조해도, 실제로 다른 사람들에게 가르칠 때는 이를 제대로 실천하지 않기 때문입니다. 개발자들(그리고 점점 더 많은 NetOps 담당자들)이 예제 코드를 통해 배우는 만큼, 예제 코드에서조차 보안에 충분한 주의를 기울이지 않는 현실을 더욱 경계해야 합니다. 하지만 이를 실천하기 전까지는 안전하지 않은 코드가 남긴 보안 공백을 메우기 위해 WAF와 같은 보안 솔루션이 필요합니다.

* 아니, 영어도 마찬가지인 모양이다. 아, 왜 이래. 난 일부러 그러는 거라고. 가끔은 일부러 틀리게 말하는 게 재미있으니까.

공유
태그: 2017

작성자 소개

Lori Mac Vittie
Lori Mac Vittie수석 엔지니어 겸 최고 에반젤리스트 | F5

Lori MacVittie는 F5 CTO 오피스의 수석 엔지니어이자 최고 에반젤리스트로, 애플리케이션 딜리버리, 자동화 전략 및 인프라 분야에서 깊이 있는 전문성을 보유하고 있습니다. AI 에이전트를 위한 가드레일을 정의하고, 취약한 멀티클라우드 아키텍처를 분석하며, 확장 가능한 시스템의 한계를 탐구하는 등 복잡한 문제를 명확하게 풀어내는 것으로 잘 알려져 있습니다. 애플리케이션 개발, IT 아키텍처, 네트워크 및 시스템 운영 전반에 걸쳐 30년 이상의 업계 경험을 쌓았습니다. F5에 합류하기 전에는 수상 경력이 있는 기술 편집자로 활동했습니다. MacVittie는 컴퓨터 과학 석사 학위를 보유하고 있으며, 보안, 클라우드 및 엔터프라이즈 아키텍처 분야를 아우르는 다수의 저서를 집필한 작가입니다. 또한 보드게임과 비디오 게임을 열정적으로 즐기며, 치즈에 대해서는 거리낌 없이 확고한 견해를 갖고 있습니다.

Lori Mac Vittie의 다른 블로그 게시물

관련 블로그 게시물

성평등을 향한 여정: 사이버 보안 분야에서 성공적인 커리어를 개척하는 방법에 관한 Jenn Gile과의 Q&A
F5 에코시스템 | 2023. 07. 13.

성평등을 향한 여정: 사이버 보안 분야에서 성공적인 커리어를 개척하는 방법에 관한 Jenn Gile과의 Q&A

F5의 ‘성평등을 향한 여정’ 시리즈 네 번째 Q&A에서는 Rachael Shah와 NGINX 제품 마케팅 책임자 Jenn Gile이 사이버 보안 직종에 대한 오해를 바로잡고, 사이버 보안 분야의 성별 격차를 해소하기 위한 조언과 그 이점에 대해 이야기합니다.

TLS 검사에서 피터 파커 원칙 다루기
F5 에코시스템 | 2019. 12. 09.

TLS 검사에서 피터 파커 원칙 다루기

“큰 힘에는 큰 책임이 따른다.” 볼테르와 처칠도 이와 비슷한 말을 남겼지만, 이 문구는 스파이더맨 코믹스에서 벤 삼촌의 말로 가장 널리 알려져 있습니다. 물론 이 문구가 문화적으로 널리 통용되는 이유 중 하나는 TLS 검사를 비롯해 수많은 상황과 주제에 적용할 수 있기 때문입니다.

Venafi와 F5를 통한 머신 아이덴티티 보호
F5 에코시스템 | 2018. 12. 11.

Venafi와 F5를 통한 머신 아이덴티티 보호

‘머신 아이덴티티’란 간단히 말해 자동화된 프로세스가 자신의 신원을 식별할 수 있도록 하고, 다른 자동화 시스템과 프로세스가 관련 리소스에 적절한 수준의 접근 권한을 부여하도록 하는 방법을 의미합니다. 이 개념 자체는 새로운 것이 아닙니다. 비교적 새로운 점은 이를 구현해야 하는 규모입니다.

마이너와 미니언: 데이터 유출만이 비용을 초래하는 것은 아닙니다
F5 에코시스템 | 2018. 07. 23.

마이너와 미니언: 데이터 유출만이 비용을 초래하는 것은 아닙니다

물론 데이터 유출은 더 큰 비용을 초래할 수 있고(적어도 지금은), 실패 사실을 세상에 드러낼 수밖에 없게 합니다(통지 의무가 있으니까요). 하지만 보안을 단순히 데이터 노출 문제로만 봐서는 안 됩니다. 요즘은 데이터가...

내 클라우드에서 나가!
F5 에코시스템 | 2016. 10. 12.

내 클라우드에서 나가!

F5의 Jay Kelley가 전하는 최신 소식에는 Microsoft Office 365용 신규 ID 및 액세스 솔루션을 배포할 때 고려해야 할 사항이 정리되어 있습니다.

Shift(웹 앱) 보안 레터
F5 에코시스템 | 2015. 07. 06.

Shift(웹 앱) 보안 레터

웹 앱 보안을 개발 초기 단계로 앞당기세요. F5 블로그에서 DevOps 파이프라인 초기에 보안을 통합하여 취약점을 예방하고 시간을 절약하는 방법을 알아보세요.