자, NetOps 여러분. 자동화를 본격적으로 도입하고 열심히 스크립트를 작성하고 계신 지금, 보안에 대해 가볍게 짚고 넘어갈 때입니다. 여기서 말하는 보안은 여러분이 배포하고 관리해야 할 수도 있는 방화벽이나 WAF 또는 기타 보안 서비스를 뜻하는 것이 아닙니다. 디지털 트랜스포메이션이라는 여정을 시작하면서 여러분이 작성하게 될 스크립트와 코드를 말하는 것입니다.
오늘은 보안 규칙 제0조를 다시 한번 상기시켜 드리고자 합니다. 기억을 되살려 보자면 다음과 같습니다:
보안 규칙 제0조: 사용자 입력은 절대로 신뢰하지 말라. 어떤 경우에도.
아주 간단한 규칙이죠?
그래야 하지만, 현실은 그렇지 않습니다. 보안 침해 또 보안 침해가 잇따라 발생하는 비즈니스 세계에서 그 원인을 거슬러 올라가 보면 보안 규칙 제0조를 위반한 경우가 많습니다. 이 규칙을 위반하는 사례는 개발자들이 새로운 언어와 프레임워크를 조사하고 학습할 때 접하는 예제 코드에 만연해 있으며, 안타깝게도 흥미로운 신흥 분야인 NetOps에도 스며들고 있습니다.
증거물 A를 제시하겠습니다:

공정하게 말하자면, 적어도 이 스크립트는 데이터가 검증되지 않았다는 경고 정도는 해줍니다. 다행인 일입니다. 이 스크립트는 이후 입력값을 바탕으로 라우터 구성을 원격에서 온갖 방식으로 조작하기 때문입니다.
제가 이 부분에서 아쉽게 생각하는 점은 이 코드가 NetOps 담당자에게 스크립팅을 시작하여 운영 환경의 네트워크 장비를 자동화하는 방법을 알려 주기 위한 것임에도, 데이터 검증을 언급만 할 뿐 이를 어떻게 해야 하는지에 관한 유용한 정보는 전혀 제공하지 않는다는 것입니다.
Python에서 IP 주소를 검증하는 방법에 관한 유용한 조언은 이 Stack Overflow 토론을 참고하세요.
하지만 로리, 이건 스크립팅이고 우리는 CLI 작업을 하는 거잖아요. 솔직히 이게 얼마나 위험하겠어요?
나쁜 습관은 고치기 어렵습니다.
보안 규칙 제로를 무시하면 두 가지 문제가 발생합니다.
첫째, 친구여, CLI의 시대는 이제 얼마 남지 않았습니다. API가 새로운 CLI로 자리 잡고 있으며, 대부분의 자동화 프레임워크는 네트워크 장치와 서비스를 프로비저닝하고 관리하기 위해 RESTful API를 적극적으로 도입하고 있습니다. 이는 애플리케이션 스택과 파서를 사용한다는 뜻입니다. 또한 취약점이 있을 수 있는 API를 통해 구성을 변경할 수 있기 때문에 장치가 잠재적으로 공격에 노출될 수 있다는 뜻이기도 합니다.
제가 과장하는 것이 아니라는 증거로, 널리 논의된 Apache Struts 취약점과 관련된 이 Cisco 보안 권고를 제시합니다. 일반적으로 정제되지 않은 입력값을 Struts 프레임워크에 전달하면 온갖 문제가 발생한다고 알려져 있습니다.
하지만 악용될 가능성만으로는 보안 규칙 제로를 반드시 적용해야 한다는 경각심이 들지 않을 수도 있으니, 입력값을 정제하지 않을 경우 그 피해 범위가 단일 장치를 훨씬 넘어설 수 있다는 점을 말씀드리겠습니다. 2017년 초에 발생한 Amazon S3 장애에 대해 알려진 사실을 살펴보겠습니다.
태평양 표준시 오전 9시 37분, 권한을 부여받은 S3 팀원이 기존 플레이북에 따라 S3 결제 프로세스에 사용되는 S3 하위 시스템 중 하나에서 소수의 서버를 제거하기 위한 명령을 실행했습니다. 안타깝게도 명령의 입력값 중 하나가 잘못 입력되어 의도했던 것보다 더 많은 서버가 제거되었습니다.
-- 미국 북부 버지니아(US-EAST-1) 리전의 Amazon S3 서비스 중단 요약
그가 스크립트에 입력한 숫자는 의도했던 것보다 훨씬 컸습니다. 하지만 운영자가 입력하는 값을 무조건 받아들이는 스크립트는(보안 규칙 제0조를 무시한 채) 결국 이런 실수를 초래하기 마련입니다. 스크립트가 간단한 확인 절차를 거쳤다면, 다소 번거롭기는 해도 이 문제가 일주일 넘게 트위터에서 화제가 되는 일은 막을 수 있었을지도 모릅니다.
네트워크와 프로덕션 환경에서 우리는 흔히 권한 부여의 관점으로 보안을 바라봅니다. Bob에게 이 작업을 수행할 권한이 있는가? Alice가 이 스크립트를 실행할 수 있는가? 물론 권한 부여는 필요하며, 여전히 매우 중요합니다.
하지만 (내부) 디지털 혁신 여정에 속도를 내고, 더 많은 프레임워크를 도입하며, API와 스크립트를 활용해 프로비저닝과 관리를 최대한 자동화해 나가는 만큼, 개발 관점에서도 보안을 반드시 고려해야 합니다.
그리고 그 규칙들 가운데 가장 먼저 명심해야 할 것은 보안 제0원칙입니다. 사용자 입력은 절대로 신뢰하지 말라. 어떤 경우에도.
입력값은 항상 검증해야 합니다. 이는 보안을 한층 강화할 뿐만 아니라, 잘 만든 자동화가 잘못 작동하는 것도 방지할 수 있습니다.
작성자 소개

Lori MacVittie는 F5 CTO 오피스의 수석 엔지니어이자 최고 에반젤리스트로, 애플리케이션 딜리버리, 자동화 전략 및 인프라 분야에서 깊이 있는 전문성을 보유하고 있습니다. AI 에이전트를 위한 가드레일을 정의하고, 취약한 멀티클라우드 아키텍처를 분석하며, 확장 가능한 시스템의 한계를 탐구하는 등 복잡한 문제를 명확하게 풀어내는 것으로 잘 알려져 있습니다. 애플리케이션 개발, IT 아키텍처, 네트워크 및 시스템 운영 전반에 걸쳐 30년 이상의 업계 경험을 쌓았습니다. F5에 합류하기 전에는 수상 경력이 있는 기술 편집자로 활동했습니다. MacVittie는 컴퓨터 과학 석사 학위를 보유하고 있으며, 보안, 클라우드 및 엔터프라이즈 아키텍처 분야를 아우르는 다수의 저서를 집필한 작가입니다. 또한 보드게임과 비디오 게임을 열정적으로 즐기며, 치즈에 대해서는 거리낌 없이 확고한 견해를 갖고 있습니다.
Lori Mac Vittie의 다른 블로그 게시물관련 블로그 게시물
성평등을 향한 여정: 사이버 보안 분야에서 성공적인 커리어를 개척하는 방법에 관한 Jenn Gile과의 Q&A
F5의 ‘성평등을 향한 여정’ 시리즈 네 번째 Q&A에서는 Rachael Shah와 NGINX 제품 마케팅 책임자 Jenn Gile이 사이버 보안 직종에 대한 오해를 바로잡고, 사이버 보안 분야의 성별 격차를 해소하기 위한 조언과 그 이점에 대해 이야기합니다.
TLS 검사에서 피터 파커 원칙 다루기
“큰 힘에는 큰 책임이 따른다.” 볼테르와 처칠도 이와 비슷한 말을 남겼지만, 이 문구는 스파이더맨 코믹스에서 벤 삼촌의 말로 가장 널리 알려져 있습니다. 물론 이 문구가 문화적으로 널리 통용되는 이유 중 하나는 TLS 검사를 비롯해 수많은 상황과 주제에 적용할 수 있기 때문입니다.
Venafi와 F5를 통한 머신 아이덴티티 보호
‘머신 아이덴티티’란 간단히 말해 자동화된 프로세스가 자신의 신원을 식별할 수 있도록 하고, 다른 자동화 시스템과 프로세스가 관련 리소스에 적절한 수준의 접근 권한을 부여하도록 하는 방법을 의미합니다. 이 개념 자체는 새로운 것이 아닙니다. 비교적 새로운 점은 이를 구현해야 하는 규모입니다.
마이너와 미니언: 데이터 유출만이 비용을 초래하는 것은 아닙니다
물론 데이터 유출은 더 큰 비용을 초래할 수 있고(적어도 지금은), 실패 사실을 세상에 드러낼 수밖에 없게 합니다(통지 의무가 있으니까요). 하지만 보안을 단순히 데이터 노출 문제로만 봐서는 안 됩니다. 요즘은 데이터가...
내 클라우드에서 나가!
F5의 Jay Kelley가 전하는 최신 소식에는 Microsoft Office 365용 신규 ID 및 액세스 솔루션을 배포할 때 고려해야 할 사항이 정리되어 있습니다.
Shift(웹 앱) 보안 레터
웹 앱 보안을 개발 초기 단계로 앞당기세요. F5 블로그에서 DevOps 파이프라인 초기에 보안을 통합하여 취약점을 예방하고 시간을 절약하는 방법을 알아보세요.