본문 바로가기
[Useful tech]/[GIT]

GitHub - 보안성 취약 해결 및 gitignore

by hi_kmin6 2020. 3. 31.

최근 Node.js를 활용하여 Chatting 하는 웹 앱을 만들어보기 위해서 Socket.io의 예시 코드를 공부하고 있었습니다.

 

이제 코드들을 한번씩 따라 쳐보면서 익혔다고 생각했고, 이  코드를 기본으로 하여 Chatting App을 만들어보자는 생각에 GitHub에 올리게 되었습니다. 

 

하지만 GitHub에 올려보니 처음보는 경고 알림이 와있었습니다.

 

보안성 경고

또한 GitHub 가입시 사용했던 메일 주소로도 메일이 도착했습니다.

 

어떤 것 때문에 경고가 왔는지 View security alerts를 눌러 내용을 확인해보았습니다.

 

3개의 보안 취약 부분

모두 패키지들을 dependencies에 관한 문제들이었습니다. 버전이 낮다는 소리 같았습니다.

해결방법 또한 알려주고 있었고, 최소 권장 버전을 알려주었습니다.

 

패키지들만 업데이트해주면 되는 문제 같았지만 혹시 몰라 구글링을 해보았고, https://jiggag.github.io/github-dependency/ 이분의 글이 명확하게 방법을 알려주고 있었기에 이를 그대로 따라 해 보았습니다.

 

일단 npm은 제가 최근에 업데이트했기 때문에 넘어갔습니다.

 

npm 버전 6 이상부터 사용 가능한 npm audit으로 취약한 패키지들을 확인할 수 있다고 합니다.

 

>npm audit


                       === npm audit security report ===
              


# Run  npm install express@4.17.1  to resolve 8 vulnerabilities   


  High            Regular Expression Denial of Service
              


  Package         fresh
              


  Dependency of   express
              


  Path            express > fresh
              


  More info       https://npmjs.com/advisories/526
              






  High            Regular Expression Denial of Service
              


  Package         fresh
              


  Dependency of   express
              


  Path            express > send > fresh
              


  More info       https://npmjs.com/advisories/526
              






  High            Regular Expression Denial of Service
              


  Package         fresh
              


  Dependency of   express
              


  Path            express > serve-static > send > fresh
              


  More info       https://npmjs.com/advisories/526
              






  Low             Regular Expression Denial of Service
              


  Package         debug
              


  Dependency of   express
              


  Path            express > debug
              


  More info       https://npmjs.com/advisories/534
              






  Low             Regular Expression Denial of Service
              


  Package         debug
              


  Dependency of   express
              


  Path            express > send > debug
              


  More info       https://npmjs.com/advisories/534
              






  Low             Regular Expression Denial of Service
              


  Package         debug
              


  Dependency of   express
              


  Path            express > serve-static > send > debug
              


  More info       https://npmjs.com/advisories/534
              






  Moderate        Regular Expression Denial of Service
              


  Package         mime
              


  Dependency of   express
              


  Path            express > send > mime
              


  More info       https://npmjs.com/advisories/535
              






  Moderate        Regular Expression Denial of Service
              


  Package         mime
              


  Dependency of   express
              

  Path            express > serve-static > send > mime

  More info       https://npmjs.com/advisories/535



found 8 vulnerabilities (3 low, 2 moderate, 3 high) in 166 scanned packages
  run `npm audit fix` to fix 8 of them.

확인 결과는 위와 같았고, 총 8개의 취약한 패키지들이 있었습니다. 이들은 모두 express 패키지에서 나왔습니다. Socket.io에서 설치하라고 했던 express가 4.15.2 버전이었는데 이게 조금 낮았던 것 같습니다. 

 

취약한 패키지들을 발견했으니 이를 해결하기 위해서 npm audit fix를 이용하여 모두 보완해보도록 하겠습니다.

 

>npm audit fix
npm WARN socketprac@1.0.0 No description
npm WARN socketprac@1.0.0 No repository field.

+ express@4.17.1
added 9 packages from 11 contributors, removed 4 packages and updated 16 packages in 4.252s
fixed 8 of 8 vulnerabilities in 166 scanned packages

express버전이 4.17.1로 업데이트되었습니다.

그리고 이를 다시 GitHub에 올려보겠습니다.

 

보안성 취약문제 해결

 

이전에 있던 알림 창이 사라진 것을 확인할 수 있었습니다.

 

 

핵심

- npm version 6 이상

 

- npm audit : 취약 패키지 판별

 

- npm audit fix : 취약 패키지 보안

 


.gitignore 작성

 

추가적으로 GitHub를 이용할 때 항상 react app을 만들어서 올렸기에 따로 gitignore 파일을 작성해본 적은 없었습니다. 그래서 이번에 SocketPrac을 올릴 때 gitignore파일이 없었기에 제가 사용하는 nodemodule들이 다 올라갈 뻔하였습니다.

 

그래서 gitignore에 대해 찾아보았고 GitHub에서 제공하는 링크를 따라가 보니 자주 쓰이는 .gitignore template이 있었습니다.

 

https://github.com/github/gitignore

 

github/gitignore

A collection of useful .gitignore templates. Contribute to github/gitignore development by creating an account on GitHub.

github.com

 

사용하는 언어 별로 정리가 되어있어 저는 일단 Node에 대한 것을 가져다 사용했습니다. 본인의 필요에 따라 .gitignore를 편집하시면 되지만, 저처럼 아직 초심자의 경우 위의 링크에서 template을 그대로 가져와 사용하는 것도 괜찮은 방법이라 생각합니다.

 


작성 록

2020.03.31

 

최근 Nodejs공부를 시작했는데 책을 구입해서 보고 있습니다. 이 책을 정리해서 포스팅을 하면 안 될 것 같다는 생각에 포스팅이 조금 뜸해진 것 같습니다. Nodejs 공부를 마치고 얼른 사이드 프로젝트 혹은 자료구조, 알고리즘 공부를 하며 포스팅을 재개해봐야겠습니다.