본문 바로가기
이슈

Next.js SSRF 취약성 이슈

by Piva 2024. 5. 12.

GitHub 보안 알림 이메일이 오다

  어느 날 갑자기 깃허브가 이메일을 보냈다. 뭔가 하고 살펴봤더니, 블로그 레포지터리에 보안 관련 이슈로 온 이메일이었다. 이메일로 보내진 링크를 확인해보니, 아래와 같이 깃허브 Security 탭에 새로운 항목이 생겨있었다.

 

Security 탭에 새 알림이 생겼다.

 

  사실 한 번도 Security 탭을 사용해본 적이 없어서 뭔가 했는데, 내용을 읽어보니 대강 아래와 같았다.

  • Next.js에서 Server-Side Request Forgery(SSRF)에 대한 취약점이 제기되었다.
  • 아래의 조건을 만족할 시 Next.js 어플리케이션이 보낸 것처럼 보이는 요청이 공격자에 의해 만들어질 수 있다.
    • 14.1.1 버전 미만의 Next.js를 사용하고 있다.
    • Next.js 어플리케이션이 Server Actions 기능을 사용한다.
    • Server Action이 '/'로 시작하는 상대 경로로의 리다이렉팅을 수행한다.
  • 이 취약점은 Next.js 14.1.1 버전 이상에서 해결되었으므로, Next.js 버전을 업데이트해라!

 

  나는 딱히 서버 액션을 사용하진 않지만...? 일단 신경쓰이는 알림이긴 하기에, 이메일을 받고 난 후 블로그 프로젝트의 Next.js 버전 업데이트를 진행했다. 나는 yarn을 통해 수동으로 업데이트해서 몰랐는데, 나중에 좀더 찾아보니 위 이미지에서도 볼 수 있는 "Create Dependapot security update" 버튼을 통해 자동적으로 문제되는 패키지를 업데이트 할 수 있다고 한다.

 그 후에 다시 살펴보니 블로그 레포지터리의 Security 알림이 사라져 있어, 일단 해결된 것으로!

 

 

+) GitHub Security 기능?

  사실 써본 적이 없어서 눈길을 별로 주지 않았었는데, 이번 이메일을 계기로 어떤 기능을 제공하는지 알아보았다.

참고: https://docs.github.com/ko/enterprise-cloud@latest/code-security/getting-started/github-security-features

 

GitHub security features(GitHub 보안 기능) - GitHub Enterprise Cloud Docs

GitHub 보안 기능에 대한 개요입니다.

docs.github.com

 

  GitHub는 기본적으로 보안 기능을 제공한다. 기본적으로 모든 플랜에 제공하는 보안 기능이 있고, 사용하는 플랜에 따라 추가적으로 제공되는 기능 또한 존재한다. 모든 레포지터리에서 사용할 수 있는 기능엔 대강 아래와 같은 기능이 있다.

  • 깃허브 사용자는 레포지터리의 보안 취약성을 보고할 수 있다.
  • 사용자들이 올린 취약성을 깃허브 내에서 논의하고, 이에 대한 공지를 게시할 수 있다. 이렇게 함으로써 해당 레포지터리와 관련된 사용자들이 취약점을 해결할 수 있도록 알릴 수 있다.

  • 사용하는 패키지의 모든 정보를 알기는 어려운 일이다. 이런 식으로 취약점을 알리는 기능이 있는 줄 몰랐는데, 우연찮게 새로운 걸 알게된 기분이다.