GitHub 를 사용하다 보면, 뜻하지 않게 경고 메일을 받을 때가 있습니다. 이러한 경고 메일은 물론, 본인이 개발하고 있는 프로그램이 보안에 취약해도 상관이 없다 - 즉, 단순히 공부 목적이라거나 하는 등으로 크리티컬하게 받아들이지 않는 경우에는 무시해도 됩니다.

하지만, 조금이라도 신경쓰이는 부분이 있다면 해결하고 넘어가야 추후 생길 수 있는 문제를 미연에 방지할 수 있습니다. 여기서는 간단히 해결하는 몇 가지 방법에 대해서 이야기 하려고 합니다. 간단한 내용이고, 검색해보면 쉽게 알 수 있는 사항이니 가볍게 읽어내려가면 됩니다.

보안 관련 메일이란?

사실 보안 관련이라고 거창하게 적어 두었지만, 실질적으로 보안이 아닌 취약점에 관련한 내용이 다수입니다. 특히 업무적으로 특정 dependency를 활용하고 있는 경우에 이러한 메일을 받고 놀랄 수 있지만, 실질적으로 회사에서의 서비스들은 인프라 수준에서 이미 여러 백도어들을 다 막아둔 상태라고 봐도 무관하기 때문에 이에 대해서 무관심해지는 것이 사실입니다.

그럼에도 불구하고 이러한 메일을 받으면 신경쓰이는건 당연한 것 같습니다. 이러한 메일을 받거나 GitHub 알림을 받는 것이 크게는 두 가지 경우 정도로 요약할 수 있는데, 각각의 경우에 대해서 수정하는 방법을 살펴봅니다.

보안 관련 메일이 수신되는 경우(2가지)

위 메일을 수신하였거나, 혹은 수신하지 않았다고 하더라도, 본인이 관리하는 repository 에 들어가 보면 아래 그림과 같은 경고를 볼 수 있습니다. 이 경고에서도 사실 충분한 내용을 담고 있어, 해당 내용을 읽어보고 해결하면 됩니다.

Springboot 프로젝트의 dependency 문제

위 경우가 이에 해당합니다. 위에 예로 들어놓은 SpringExample 이라는 repository 는 Springboot 프로젝트이고, 여기에는 build.gradle 파일이 gradle 빌드 receipe 를 담고 있습니다.

상세 내용을 살펴보면, 다음과 같이 분석이 가능합니다.

  • 네가 사용하고 있는 MyBatis 모듈에 Deserialization error 가 있다. (제목)
  • pom.xml 파일에 있는 org.mybatis:mybatis 를 고쳐라.
  • org.mybatis:mybatis3.5.6 버전 이상으로 올려라. 예시도 알려줄게

그저 가이드에 나와 있는 것 처럼 pom.xml 파일을 수정해 보겠습니다. 복잡한 절차 없이, terminal 에서 바로 진행해 보도록 하겠습니다.

		<dependency>
		    <groupId>org.mybatis</groupId>
		    <artifactId>mybatis</artifactId>
		    <version>3.3.0</version>
		</dependency>

위와 같이 되어있는 부분을, 가이드에 맞추어 다음처럼 변경합니다.

		<dependency>
		    <groupId>org.mybatis</groupId>
		    <artifactId>mybatis</artifactId>
		    <version>[3.5.6,)</version>
		</dependency>

그리고 Github 에 다시 push 하면, 다음처럼 문제가 해소된 것을 볼 수 있습니다.

PS D:/dev/git/SpringExample> git add .
PS D:/dev/git/SpringExample> git commit -m "update mybatis to >3.5.6"
[master 7948f45] update mybatis to >3.5.6
 1 file changed, 1 insertion(+), 1 deletion(-)
PS D:/dev/git/SpringExample> git push
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 8 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 318 bytes | 318.00 KiB/s, done.
Total 3 (delta 2), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
remote: 
remote: GitHub found 1 vulnerability on Simplify-study/SpringExample's default branch (1 high). To find out more, visit:
remote:      https://github.com/Simplify-study/SpringExample/security/dependabot/1
remote:
To https://github.com/Simplify-study/SpringExample.git
   8f84dc0..7948f45  master -> master
PS D:/dev/git/SpringExample>

npm 프로젝트의 경우

npm 프로젝트 역시 비슷한 수순이나, 제가 정확한 내용을 완전히는 모르기 떄문에 아래 내용으로 대체합니다. 단순히 업데이트를 해 주고, 새로 푸시하는 것으로 생각하면 되고, 이는 package.json 파일에 적혀있는 일종의 receipe 를 업데이트 해준다는 것으로는 비슷한 내용입니다. 만약 note-extend 라는 모듈의 업데이트가 필요하다면, 아래와 같이 입력합니다.

$ npm update node-extend 
$ npm -D install node-extend 

참고자료 및 출처


Leave a comment