무료 보안 도구는 풍성, 실제 사용은 빈약

무료 보안 도구는 풍성, 실제 사용은 빈약
Photo by Kvnga / Unsplash
💡
Editor's Pick
- 루비 언어 생태계의 무료 스캐너인 브레이크맨
- 루비 프레임워크인 레일즈 7.2부터는 브레이크맨 자동 탑재
- 사실 모든 언어에 비슷한 도구들이 존재...활용해야

2010년대 초반 스타트업 붐을 타고 날아올랐던 루비(Ruby)는, 비록 전성기가 지나긴 했지만 여전히 강력한 프로그래밍 언어다. 그런 루비를 활용해 웹 애플리케이션을 만들고자 할 때 사용되는 프레임워크인 ‘루비 온 레일즈(Ruby on Rails, 혹은 그냥 ‘레일즈’)’ 역시 아직까지 많은 사용자들을 거느리고 있다. 

최근 어느 언어를 주력으로 사용하는 개발자이든 상관없이 코드 내 다양한 취약점이 유입되는 것을 막는 게 점점 더 중요한 일로 여겨지고 있다. 보안에 있어 비교적 강력한 편에 속한다는 루비 언어와 레일즈 프레임워크를 능숙하게 다루는 개발자도 마찬가지다. 특히 특정 언어를 보다 간편하고 빠르게 구사할 수 있게 해 주는 프레임워크(예: 레일즈, 스프링, 장고 등)를 사용하는 개발자들의 경우 워낙 프레임워크가 작업을 쉽게 만들어주는 만큼 ‘보안도 알아서 잘 해 줄 거야’라는 착각에 빠지기 쉽다. 

그래서 필요한 게 개발자 자신이 짠 코드 혹은 지금 다루고 있는 코드를 검사해주는 도구다. 개발자로서는 발견하기 힘든 취약점과 공격 루트를 찾아주는 도구가 있으면, 개발자들 손에서부터 좀 더 튼튼하고 안전한 결과물이 나올 수 있을 것이다. 

💡
여기서 잠깐!
개발자와 보안 전문가는 둘 다 프로그래밍을 할 수 있고 코드도 해독할 수 있지만, 하는 일과 사고방식이 전혀 다르다. 개발자는 사업적 확장과 수익 창출을 목표로 삼고 각종 로직과 성능을 만들어내거나 강화한다. 따라서 자신이 만든 코드를 테스트 한다고 했을 때 기능성을 위주로 살핀다. 정상 경로만 확인하는 것이다. 하지만 해커들은 그런 정상 경로의 틀을 벗어나는 방법들을 연구하고, 그렇게 함으로써 개발자가 전혀 의도하지 못한 코드 활용법을 연구한다. 그런 해커들의 눈으로 취약점을 찾아내는 게 보안 전문가다. 즉 개발자의 의도나 정상 활용 방법은 염두에 없다. 어떻게 해야 예외를 만들고, 변칙적으로 움직이며, 오류를 일으킬지를 고민한다.

브레이크맨, 무료 보안 스캐너

레일즈를 자주 사용하는 개발자들이라면 브레이크맨(Brakeman)을 버릇처럼 사용하는 것이 코드 강화에 큰 도움이 될 수 있을 것으로 보인다. 브레이크맨은 저스틴 콜린스(Justin Collins)라는 개발자가 2010년에 만든 정적 분석 도구다. 레일즈 생태계 최초의 정적 보안 도구라고도 할 수 있다. 콜린스는 처음부터 브레이크맨을 오픈소스로 공개했다. 브레이크맨은 애플리케이션을 실제 실행하지 않고, 소스코드 자체만을 분석해 취약점을 탐지해내는 기능을 가지고 있다.

브레이크맨은 루비의 패키지 관리 시스템인 루비젬스(RubyGems)를 통해 설치할 수 있으며, 누구나 자유롭게 사용할 수 있다. 오픈소스로 풀린 덕에 브레이크맨은 현재 수천 개의 루비 및 레일즈 프로젝트에서 사용되고 있으며, 사용자가 많아지면서 기능도 발전해 현재 최초 버전보다 훨씬 다양한 취약점을 탐지할 수 있게 됐다. 레일즈가 업데이트 되고, 레일즈 생태계를 공략하는 공격자들의 수법에 따라 브레이크맨도 지속적으로 업데이트 됐다.

브레이크맨의 상업 버전도 존재한다. 브레이크맨 프로(Brakeman Pro)라고 하며, 현재 보안 기업 시놉시스(Synopsys)가 인수해 판매하고 있다. 하지만 대부분의 개발자들에게는 오픈소스 버전의 브레이크맨도 충분하다. 

그래서인지 루비 온 레일즈 7.2 버전(2024년 10월 출시)부터 브레이크맨이 기본 탑재되기 시작했다. 이는 매우 중대한 소식이다. 개발자들이 자발적으로 보안 도구를 수동으로 설치해 개발과 보안 점검을 동시에 하기는 힘들기 때문이다. 레일즈라는 개발 프레임워크에 보안 도구가 미리 탑재돼 있다는 건, 개발자가 보안 도구를 수동으로 설치해야 한다는 의미를 가지고 있고, 따라서 개발자의 ‘보안 강화 행위’를 북돋는 것이기도 하다. 개발자들에게 보안을 잔소리처럼 강조하는 것 외에, 개발자들의 편의성을 높여줌으로써 보안에의 참여도를 높이는 것도 현명한 방법일 수 있다.

브레이크맨, 어떤 취약점 잘 찾나?

브레이크맨은 SQL 주입 취약점을 가장 잘 찾아낸다. 그 다음 XSS 취약점, 명령 주입 취약점, 매개변수 대량 바인딩 취약점, CSRF 취약점 등도 곧잘 탐지하는 편이다. 레일즈로 만들어진 애플리케이션들에 자주 나오는 유형의 취약점들이라는 걸 감안하면 브레이크맨이 왜 긴 시간 인기를 누려왔는지를 쉽게 이해할 수 있다. 

반대로 잘 못찾는 취약점들도 존재한다. 브레이크맨이 정적 도구이기 때문에 런타임에만 발현되는 취약점의 경우, 탐지 확률이 낮아진다. 또한 환경 설정이나 서버 구성, 배포와 관련된 옵션 관련 문제들도 잘 탐지하지 못한다. 이 때문에 브레이크맨이 기본 탑재된 버전의 레일즈를 사용한다고 해서 모든 취약점들로부터 안전하다고 착각하는 건 되려 위험할 수 있다.

그렇기 때문에 브레이크맨의 약점을 보완할 만한 오픈소스 도구를 같이 쓰는 게 효과 면에서는 훨씬 좋다. 루비 환경에서도 쓸 수 있는 동적 분석 도구 중 대표적인 건 OWASP ZAP이다. 가장 대표적인 오픈소스 동적 분석 도구로, 실행 중인 웹 애플리케이션을 자동으로 크롤링 해 공격 시뮬레이션을 실시함으로써 시험한다. OWASP Top  10에 선정된 취약점들을 자동으로 찾아주기도 한다. 

💡
여기서 잠깐!
오픈소스를 논할 때 빼놓을 수 없는 것 중 하나가 OWASP이다. 보안 진단을 돕는 다양한 소프트웨어를 개발해 오픈소스로 풀고, 취약점 관련 소식은 물론 보안 지식도 모두에게 공개하는 활동을 하는 단체가 바로 OWASP이기 때문이다. 이런 OWASP의 서울 챕터는 매달 정기 세미나를 개최한다. 지난 12월에는 OWASP Top 10 최신 버전을 발표했고, 새해 1월에는 AI 보안의 현재와 미래를 다룰 예정이다. 행사는 오픈소스처럼 누구에게나 열려 있어 보안에 관심이 있다면 무료로 참여 가능하다. 1월 27일 서울 강남구 새롬빌딩 6층에서 오후 7시에 시작한다.

개발자들이 기억해야 할 것

루비를 자주 사용하는 개발자라면 제일 먼저 ‘레일즈 7.2 이상 버전을 사용하는 게 안전하다’는 것부터 기억해야 한다. 다만 오해하지 말아야 할 것은, 레일즈 7.2 이상 버전을 사용한다고 해서 브레이크맨이 자동으로 모든 취약점을 다 찾아주는 게 아니라는 것과, 설사 브레이크맨을 잘 작동시켜 코드 내 취약점을 빠짐없이 찾아냈다 하더라도 동적 분석을 같이 해야 더 완전한 결과를 얻어낼 수 있다는 것이다.

다른 언어를 주력으로 쓰는 개발자들의 경우도 브레이크맨에 해당하는 도구들을 조사해 가장 알맞은 것을 찾아 써 버릇 해야 한다. 예를 들어 자바 환경에는 스팟벅스(SpotBugs)나 OWASP 디펜던시체크(OWASP Dependency-Check) 등이 있고, 파이선 환경에는 밴딧(Bandit)과 세이프티(Safety)가 대표적이다. 자바스크립트에는 이에스린트(ESLint)가, PHP에는 삼(Psalm) 혹은 엑사캣(Exakat)이 있다. 최근 언어인 고에는 고섹(gosec)이 있고, 오래된 언어인 C 계열에는 클랙타이디(clang.tidy) 혹은 씨피피체크(Cppcheck)가 추천할 만하다. 오픈소스로 풀린 보안 도구는 이미 풍성한데, 그 풍성함을 제대로 누리지 못하기 때문에 생기는 보안 사고들이 너무 많다. 

개발을 진행함에 있어서 보안 도구의 ‘활용’은 더 이상 선택으로 남아 있어서는 안 된다. 돈을 낼 필요도 없이, 마음만 먹으면 가져다 쓸 수 있는 강력한 도구들이 이렇게 많은 상황에서, 개발자들이 언제까지나 보안 취약점으로 남아 있어서도 안 된다.🆃🆃🅔

by 문가용 기자(anotherphase@thetechedge.ai)


[OWASP 시리즈] OWASP Top10 2025 A04, 암호 기술을 넘어 ‘암호 사용 실패’를 묻다
💡Editor Pick - ‘암호 기술을 적용했는가?‘보다 중요한 건 ‘암호 기술을 어떻게 사용했는가?’ - 보다 높은 보안성을 위한 암호 알고리즘 사용 방법 고민 필요 OWASP Top10 2025에서 A04로 분류된 Cryptographic Failures는 2021년 A02와 동일한 명칭을 유지하고 있지만, 그 내부를 들여다보면 문제를 바라보는 시선이 달라졌음을 알 수 있다. 더 이상
[TE머묾] 믿고 싶은 대로 믿는 사람들의 믿음을 건드리는 믿음
💡Editor’s Pick - 보안은 만병 통치약 아니라고 아무리 설명해도 - 제로트러스트는 솔루션 이름이 아니라고 아무리 설명해도 - NIST 프레임워크 초안은 실용서가 아니라고 아무리 설명해도 믿음이란 얼마나 강력한 것인가. 보안과 IT 업계를 관찰자 입장에서만 10년 넘게 보아온 입장에서 절로 나올 수밖에 없는 말이다. 단, 이것은 특정 종교나 철학, 사상과 관련된 발언이

Read more

값싼 소프트웨어의 나라 Part2

값싼 소프트웨어의 나라 Part2

💡Editor Pick - 우리나라 소프트웨어 산업은 경제 규모 대비 어떠한가? - 우리나라 소프트웨어는 값싸고 저렴하다? - 구조적인 문제가 있다면 고쳐야 하나 설명이 쉽지 않다. - 꼬리를 물면서 강화되는 이슈의 고리를 끊어야 한다. 구조 속에서 선택지를 잃어버린 공급사, 그리고 다음 질문 Part 1에서 살펴본 구조는 "소프트웨어 공급사는 어떤 위치에 놓여

By Donghwi Shin, Jin Kwak
값싼 소프트웨어의 나라 Part1

값싼 소프트웨어의 나라 Part1

💡Editor Pick - 우리나라 소프트웨어 산업은 경제 규모 대비 어떠한가? - 우리나라 소프트웨어는 값싸고 저렴하다? - 구조적인 문제가 있다면 고쳐야 하나 설명이 쉽지 않다. - 꼬리를 물면서 강화되는 이슈의 고리를 끊어야 한다. 값싼 소프트웨어의 나라를 만드는 구조 소프트웨어 산업을 이야기할 때, 우리는 공급사의 기술력, 인재 부족을 원인을 지목한다. 그러나 실제

By Donghwi Shin, Jin Kwak
미국 강타한 MAGA, 사실은 ‘신토불이’ 정신?

미국 강타한 MAGA, 사실은 ‘신토불이’ 정신?

💡Editor's Pick - 미국 기업들의 갑작스러운 애국심 고취 현상 - Made in America를 전면에 내세우기 시작 - 니어쇼어링과 오프쇼링 기조에 따르는 움직임 미국 기업들 사이에서 새로운 MAGA 유행의 조짐이 보인다. ‘미국을 다시 위대하게 만든다’는 그 MAGA가 아니다. ‘Made-in-America or Go Away’의 MAGA인데, 신기하게 한글로 번역해도 그대로

By 문가용 기자