최근에 golang으로 개발한 도구 중 jwt 라이브러리를 사용한 대다수의 프로젝트에서 아래와 같이 Security dependency alert이 나타났습니다.
지난주중에 모두 수정했지만 겸사겸사 알고 있으면 좋은 내용이 있어서 글로 남겨둡니다.
CVE-2020-26160
사실 위 alert은 CVE-2020-26160에 대한 패치를 적용하라는 의미입니다. 다만 내용을 보면 마지막줄에 아주 중요한 내용이 있습니다.
Thers is no patch available and users of jwt-go are advised to migrate to golang-jwt at version 3.2.1
네, jwt-go가 golang-jwt로 migrate 됨에 따라서 jwt-go에서는 패치를 진행하지 않는다는 이야기입니다. 그럼 어떤 뒷 이야기가 있는지 조금 더 살펴보죠.
Story of dgrijalva and golang-jwt
github.com/dgrijalva/jwt-go
는 golang에서 보편적으로 사용되는 jwt 라이브러리로 이미 star 수가 10k에 근접한 프로젝트입니다. 다만 해당 프로젝트가 개인에 의해 운영되기 때문에 이슈 등에 대해 빠르게 대응되기 힘들다는 한계점이 있었는데요, 이를 해소하기 위해서 일부 github 유저들이 golang-jwt
라는 org를 만들고 팀 단위로 유지보수 하기 위해 dgrijalva와 논의했습니다.
결과적으론 dgrijalva/jwt-go
에서 golang-jwt/jwt
로 프로젝트가 migrate 되고, maintainers 또한 변경되었죠. 아직은 golang-jwt/jwt가 star 수나 인지도 선에선 당연히 떨어지는 상태인데, 이제부터 유지보수되고 관리되는 jwt library가 golant-jwt/jwt
라는 점은 꼭 알고 있어야합니다.
IMPORT PATH CHANGE: Starting from v3.2.1, the import path has changed from github.com/dgrijalva/jwt-go to github.com/golang-jwt/jwt. After the original author of the library suggested migrating the maintenance of jwt-go, a dedicated team of open source maintainers decided to clone the existing library into this repository. See dgrijalva/jwt-go#462 for a detailed discussion on this topic.
스토리는 어찌하던 이로인해 기존에 jwt-go를 사용하셨던 분들은 가급적이면 golang-jwt/jwt
로 이사 가셔야할 것 같습니다.
Migrate in My Projects
뭐 크게 어려운 작업은 없습니다. 이미 두 프로젝트간 migration이 있었기 떄문에 호환성에 대한 걱정은 해당 프로젝트의 개발자들이 고려해야할 부분이고, 우리는 import로 가져온 라이브러리의 경로만 변경해주면 됩니다.
다만 이 과정 이후에는 go.mod
와 go.sum
에도 변화가 생기기 때문에 잘 테스트하시고 적용하시길 바래요!