매일 업데이트
2023-07-24 05:49 8 min

Python 애플리케이션에서 보안 취약점을 찾는 방법은 무엇입니까?

현대 사회의 발전 속도는 그야말로 경이로우며, 기술이 이 과정에서 핵심적인 역할을 한다는 것은 부인할 수 없습니다.

기술 발전이 멈추지 않는 한, 우리는 인공지능(AI)과 같은 혁신적인 발명과 발견의 부족에 직면할 일은 없을 것입니다. 하지만 이러한 급격한 변화는 개발자들에게 새로운 도구와 매체의 불확실성을 야기하고, 이는 곧 발전의 과제로 이어집니다. 이러한 변화 속에서도 파이썬(Python) 프로그래밍 언어는 여전히 강력한 입지를 지키고 있습니다.

최근 JetBrains의 파이썬 개발자 설문 조사 결과에 따르면, 개발자의 84%가 파이썬을 주력 언어로 사용하고 있으며, 16%는 보조 언어로 활용하고 있습니다. 이 수치는 개발자, 기업, 스타트업 및 젊은 전문가들 사이에서 파이썬의 높은 인기를 보여주는 지표입니다.

그러나 인기에는 항상 위험과 위협이 따르기 마련입니다. 파이썬 코어 자체는 안전하지만, 외부 모듈은 그렇지 않을 수 있다는 점을 개발자들은 인지해야 합니다. 따라서 이러한 문제를 해결하기 위해서는 보안 취약점을 찾아낼 수 있는 스캐너가 필수적입니다.

온라인 보안을 테스트할 수 있는 다양한 스캐너가 존재하지만, 파이썬이나 Node.js와 같은 특정 플랫폼의 취약점을 제대로 감지하지 못할 수 있습니다.

이제 파이썬 애플리케이션의 보안 위험과 취약점을 탐지하는 데 유용한 도구들을 자세히 살펴보겠습니다.

PYT (파이썬 테인트)

PYT는 파이썬 웹 애플리케이션에서 명령 주입, 사이트 간 스크립팅, SQL 주입, 디렉토리 횡단 공격 등의 취약점을 탐지하는 오픈 소스 정적 분석 도구입니다.

PYT는 견고한 이론적 기반을 가지고 있으며, 기여를 원한다면 슬랙 그룹에 참여할 수 있습니다.

밴딧

밴딧은 OpenStack에서 시작된 프로젝트로, 파이썬 코드에서 흔히 발생하는 보안 취약점을 식별하는 데 사용됩니다. 밴딧은 각 파일을 처리하여 AST(추상 구문 트리)를 생성하고, 이를 바탕으로 보고서를 작성합니다.

pip를 통해 간편하게 설치할 수 있습니다.

밴딧은 사용자 정의가 가능합니다. 예를 들어, 기본적으로 모든 프로필에 대한 테스트가 수행되지만, 특정 테스트(예: ShellInjection)만 실행하고 싶다면 다음 명령어를 사용할 수 있습니다.

bandit samples/*.py -p ShellInjection

또한, 심각도 수준(낮음, 중간, 높음)에 따라 보고서를 생성하도록 설정할 수도 있습니다.

세이프티

세이프티는 파이썬 종속성 검사 도구로, 보안 문제가 있는지를 확인하기 위해 로컬 가상 환경, requirements 파일, 그리고 표준 입력을 스캔할 수 있습니다.

세이프티 CLI는 파이프라인 구축부터 프로덕션 시스템에 이르기까지 다양한 상황에서 유용하게 활용될 수 있습니다. 파이썬 애플리케이션에 취약점이나 보안 위협이 있는 경우, 세이프티 CLI는 이를 쉽게 감지해냅니다. 또한, 스캔 결과에 대한 자세한 정보와 함께 기존의 위협 및 취약점에 대한 보고서도 제공하여 개발 작업을 효율적으로 만들어 줍니다.

PyUp

PyUp은 파이썬 애플리케이션을 최신 상태로 유지하고, 규정 준수를 보장하며, 보안을 강화하는 데 도움을 주는 도구입니다. PyUp은 파이썬 종속성에서 발생할 수 있는 수많은 보안 취약점으로부터 코드를 보호해줍니다.

각 종속성을 수동으로 업데이트하고 추적하는 대신, PyUp을 사용하여 이 과정을 자동화할 수 있습니다. 새로운 취약점을 자동으로 수정하고 이미 알려진 취약점으로부터 코드를 보호하여 코드 안정성에 대한 자신감을 높일 수 있습니다.

PyUp은 자체적으로 취약점 데이터베이스를 관리하고 있으며, 현재까지 472,750개의 파이썬 종속성을 기록하고 있습니다. 이 스캐너는 복잡한 환경을 처리하고, 오래되었거나 안전하지 않은 요구 사항 파일들을 스캔하도록 설계되었습니다.

또한, 필요에 따라 구성을 조정할 수 있으며, 안전 CI를 통해 코드가 프로덕션 환경에 배포되기 전에 취약점을 잡아낼 수 있습니다. CI 워크플로우에 명령줄 도구를 통합하여 사용할 수 있습니다.

PyUp은 무제한의 공개 및 비공개 저장소에 대해 월 249달러의 가격으로 이용할 수 있으며, 종속성 라이선스, CVSS, API 키 및 안전 CI 기능을 제공합니다.

스닉(Snyk)

이 흥미진진한 도구 경쟁에서 빼놓을 수 없는 것이 바로 스닉(Snyk)입니다. 스닉 오픈 소스는 소프트웨어 구성 분석(SCA) 기능을 제공합니다. 스닉을 사용하면 취약한 종속성을 쉽게 찾을 수 있으며, 병합 전에 풀 리퀘스트를 스캔하고, 새로운 취약점이 발생하지 않도록 예방하며, 기존의 취약점과 관련하여 프로덕션 환경을 테스트할 수 있습니다.

이러한 기능만으로도 스닉은 개발자에게 매우 매력적인 옵션입니다. 스캔, 모니터링, 수정 및 자동화 기능을 제공하며, 폭넓은 애플리케이션 컨텍스트를 사용하여 접근 가능하거나 배포되었거나 공개적으로 노출된 오픈 소스 문제의 우선순위를 지정할 수 있습니다. 스닉의 주요 기능은 다음과 같습니다.

  • 스닉은 취약점 수정을 자동화할 수 있습니다.
  • 배포된 파이썬 코드의 취약점을 자동으로 모니터링하여 개발자에게 안심을 제공합니다.
  • 규제 및 내부 보안 정책 준수 여부를 지속적으로 평가합니다.
  • 스닉은 보안 엔지니어와 GRC 팀을 위해 특별히 제작되었습니다.

전반적으로 스닉은 파이썬 애플리케이션의 보안 취약점을 찾는 데 매우 효과적인 도구이며, 개발자라면 반드시 고려해야 할 옵션 중 하나입니다.

수스(Soos.io)

수스 SCA는 SCA에 필요한 모든 것을 제공하는 저렴한 올인원 솔루션을 표방합니다. 실제로 수스 SCA는 다음과 같은 뛰어난 기능들을 제공합니다.

  • 가장 빠른 구현 속도
  • 뛰어난 사용 편의성 (실용적인 UX)
  • 취약점 설정 및 스캔의 용이성
  • 뛰어난 성능

이 모든 기능을 저렴한 가격으로 제공한다는 점은 수스가 파이썬 애플리케이션의 보안 취약점을 찾는 모든 개발자의 기대를 충족할 수 있음을 의미합니다. 또한, 원하는 만큼 무제한 스캔을 제공하여 개발자가 모든 취약점을 철저히 검토할 수 있도록 지원합니다.

수스의 또 다른 강점은 순위 알고리즘입니다. 취약점은 심각도, 영향 및 악용 가능성에 따라 순위가 매겨져 개발자가 중요한 문제에 집중할 수 있도록 합니다.

수스의 가장 매력적인 기능 중 하나는 풍부한 대시보드입니다. 대시보드를 통해 필요한 정보를 쉽게 가져올 수 있으며, 진행 상황을 편리하게 확인할 수 있습니다. 수스는 파이썬 애플리케이션을 둘러싼 위협을 제거하는 데 필요한 모든 것을 갖춘 훌륭한 패키지입니다.

파이어(Pyre)

파이어(Pyre)는 보안 취약점을 찾고 탐지하는 데 뛰어난 도구입니다. 파이어를 완벽한 도구라고 부를 수 있는 이유는 수백만 줄의 코드로 구성된 코드베이스를 분석할 수 있는 강력한 성능 때문입니다.

파이어는 코드를 작성하는 동시에 개발자에게 즉각적인 피드백과 보고서를 제공하여 개발 효율성을 높입니다. 파이어에는 파이어를 기반으로 구축된 보안 중심의 정적 분석 도구인 Pysa가 포함되어 있습니다. Pysa는 파이썬 애플리케이션의 데이터 흐름을 분석합니다.

초기 구성은 몇 가지 간단한 단계로 이루어집니다. 먼저 가상 환경을 설정하고, 가상 환경에 파이어 및 SAPP를 설치한 다음, Pysa 및 SAPP를 초기화해야 합니다. 이때 SAPP는 분석을 실행하는 데 필수적입니다. 다음 명령을 사용하여 Pysa 및 SAPP를 실행하기에 적합한 환경을 빠르게 설정할 수 있습니다.

(pysa) $ pyre 초기화-pysa

이 명령은 Pysa를 실행하도록 저장소를 구성합니다. 그런 다음 다음 명령을 사용하여 Pysa 및 SAPP 실행을 진행합니다.

(pysa) $ pyre 분석 –no-verify –save-results-to ./pysa-runs

(pysa) $ sapp 분석 ./pysa-runs/taint-output.json

전반적으로 파이어는 파이썬 개발에 매우 유용한 도구입니다. 파이썬에 대한 긍정적인 지원을 제공하므로, 주저하지 말고 파이어를 사용해 보시기 바랍니다!

트리비(Trivy)

다음으로 소개할 도구는 " 트리비(Trivy)"입니다. 트리비는 뛰어난 성능과 다재다능함을 갖춘 종합적인 보안 스캐너입니다. 또한 파이썬에 대한 특별한 지원을 제공하여 이 목록에 포함될 수 있었습니다.

트리비는 컨테이너 이미지, 파일 시스템, Git 리포지토리, AWS 등을 스캔할 수 있습니다. 또한, 파이썬뿐만 아니라 Ruby, Node.js, Java 등과 같이 널리 사용되는 다양한 언어를 지원하며, 운영 체제까지 지원합니다.

트리비는 다양한 설치 옵션을 제공하며, 대표적인 몇 가지 방법은 다음과 같습니다.

  • brew install trivy
  • docker run aquasec/trivy
  • Aqua Security 메인 페이지에서 바이너리를 다운로드하는 옵션

마지막으로, 트리비의 중요한 측면은 Kubernetes Operator 및 VS Code Plugin과 같은 다양한 플랫폼 및 애플리케이션과 통합될 수 있다는 점입니다.

마지막 말

결론적으로, 파이썬 애플리케이션에서 보안 취약점을 찾을 수 있는 실용적인 도구가 다양하게 존재한다는 점을 강조하고 싶습니다. 이 목록에 언급된 모든 도구들은 각기 고유한 기능을 제공하며, 모두 훌륭한 선택이 될 수 있습니다.

각 도구는 파이썬 코드의 보안을 강화하는 데 도움이 되는 고유한 이점을 제공합니다. 따라서, 도구를 선택할 때는 자신의 특정 요구 사항과 선호도를 고려하는 것이 좋습니다.

다음으로는 소규모 프로젝트부터 엔터프라이즈급 애플리케이션까지 구축하는 데 가장 적합한 파이썬 프레임워크들을 확인해 보시기 바랍니다.

저자
Korea

기술 트렌드와 실용적인 팁을 전하는 लेखक입니다.