Home » LANG » PYTHON » poetry pip-audit 명령어로 패키지 취약점을 검사해 봅시다.

poetry pip-audit 명령어로 패키지 취약점을 검사해 봅시다.

poetry는 local에서 패키지 관리용으로 많이 쓰입니다. 배포할 때에는, requirements.txt만 가지고 패키지를 깔게 됩니다. 깔린 패키지에 취약점이 없는지 검사하는 방법은 없을까요? pip-audit을 세팅해 보겠습니다.


poetry pip-audit 설치하기

먼저, poetry에 Pillow 9.5.0 버전을 깔도록 하겠습니다.

[그림 1] Pillow 설치하기

–group dev 옵션이 붙지 않았기 때문에, root에 설치되게 됩니다. requests도 poetry add로 설치했다면, pyproject.toml 파일은 아래와 같을 겁니다.

[그림 2] 설치된 종속성 패키지들

requests는 2.31.0이고, pillow는 9.5.0입니다. 이 패키지들에 취약점이 없을까요? poetry에 pip-audit 패키지를 설치합니다.

[그림 3] pip-audit 설치

이 패키지를 group dev에 설치하는데요. 프로덕션 환경에 설치할 필요가 없기 때문입니다. local에서 확인하는 용도로만 쓸 것입니다. 해당 패키지가 깔릴 때, 추가로 필요한 패키지를 확인하는 방법은 lock 파일을 보는 것입니다.

[그림 4] 패키지의 종속성 확인하기

CacheControl, html5lib, packaging 등 꽤 많은 패키지들이 걸려 있습니다. pip-audit을 깔 때 같이 딸려오는 것들입니다. 이들이 production에서 필요하지 않은데, 설치할 필요는 없을 겁니다. 필요하지 않다면 제외합시다.

[그림 5] dev 종속성 확인하기

다시, pyproject.toml을 확인해 봅시다. 그러면 dev에만 해당 패키지가 걸려있음을 볼 수 있습니다. poetry 환경에 해당 패키지가 깔린 것이니, 취약점을 확인해 봅시다.


취약점 확인하고 업데이트 하기

poetry pip-audit 명령어를 입력해 봅시다.

[그림 6] 명령어 입력하기

그러면, 6개의 알려진 취약점이 하나의 패키지에 있다고 되어 있습니다. 업데이트를 해야겠군요.

[그림 7] 최신 버전으로 업데이트하기

문제가 생긴 패키지가 Pillow이므로, poetry add Pillow@latest를 입력합니다. 해당 패키지의 최신 버전을 설치한다는 의미입니다.

[그림 8] 업데이트된 pyproject.toml

이제 다시 toml 파일을 보면, 9.5.0에서 10.3.0으로 버전이 올라간 것을 볼 수 있습니다. 다시 명령어를 실행시켜 보겠습니다.

[그림 9] 업데이트 후 pip-audit 실행하기

이제, 알려진 취약점을 찾을 수 없다는 메세지가 떴습니다.

[그림 10] requirements 파일에 설치 정보 쓰기

이제, 배포를 위해서 설치해야 하는 패키지 정보를 requirements 파일들에 쓰겠습니다. 이 때, pip-audit 같이 local에만 설치해야 하는 것은 dev 그룹에 넣어놓았습니다. 따라서 아래와 같이 export 합니다.

  • dev 종속성과 함께 requirements_dev.txt에 export
  • root 종속성만 requirements_prod.txt에 export

–with 옵션을 이용하면 쉽게 할 수 있습니다. 아래 글에서 설명한 적이 있으니 한 번 정도 보고 오시면 좋겠습니다.

[그림 10] 10.3.0으로 업데이트 된 pillow

해당 파일들을 보면 10.3.0으로 버전업이 된 것을 볼 수 있습니다. 배포할 때 스크립트로 pip를 설치하고, pip install -r ~ 요렇게 입력하면 됩니다. requirements.txt 파일을 검사하는 방법은 없을까요? 당연하게도, -r 옵션을 주면 해당 파일에 대해서 검사할 수 있습니다.

[그림 11] -r 옵션으로 req 파일 검사하기

위 명령어는 requirements_prod.txt 파일에 있는 패키지들의 취약점이 없는지 검사합니다.

Leave a Comment

13 + 5 =