AutoSource - Automated Source Code Review Framework Integrated With SonarQube

kitploit 보다가 소스코드 분석 도구 관련 내용(https://www.kitploit.com/2019/05/autosource-automated-source-code-review.html) 있어서 깃들어가서 좀 찾아봣습니다.

음 .. 솔직히 리뷰할 정도의 도구는 아닌데 보다보니 소나큐브 관련해서 이야기도 할겸 글로 작성해봅니다. (쓸만한 소재가 없음…)

What is autoSource?

https://github.com/Securityautomation/autoSource

AutoSource is an automated source code review framework integrated with SonarQube which is capable of performing static code analysis/reviews. It can be used for effectively finding the vulnerabilities at very early stage of the SDLC(Software Development Life Cycle). The user can scan the code by just giving GIT repository link into the framework.

AutoSource framework is capable of performing source code review on all platforms(MAC, Linux and Windows).

라고 하는데, 요약하면 git 링크를 입력으로 주고, sonarqube 돌려서 결과를 주는 도구입니다. 동작은 subprocess로 sonarqube 쉘 스크립트를 실행하는 형태로 작성한 것 같습니다.

def runSonarQubeMac():
    subprocess.call("chmod -R 777 sonarQube", shell=True)
    subprocess.call("./sonarQube/bin/macosx-universal-64/sonar.sh console", shell=True)
    time.sleep(8)    

# ************************************************************************************    
# Function to run Elastic Search Linux
def runElasticSearchLinux():
    subprocess.call("chmod -R 777 sonarQube",shell=True)
    subprocess.call("./sonarQube/elasticsearch/bin/elasticsearch", shell=True)
    time.sleep(8)

Sonar Qube?

소나큐브(https://www.sonarqube.org/).. 엄청 유명한 오픈소스 프레임워크입니다. 정적 코드 분석을 해주는 도구로 소스코드 내 내포된 취약점이나 위험한 코드등을 분석해주는데, 보통 단독으로 사용하거나 배포시스템(jenkins 등)에 붙여서 사용하는 것 같습니다. 물론 저도 테스트 삼아서 몇번 써본게 전부입니다. 일적으로는 상용이 있으니 약간 보조적인 느낌으로만 썼던 것 같네요. (그마저도 거의 없..)

아무튼 이런 구조입니다. 스캐너 통해서 분석된 결과를 서버로 올리고 웹서버+ES+RDBMS로 데이터를 누적하고 보여주는 형태로 동작하며 그래도 오픈소스 도구 중에선 좋은 결과를 준다고 생각드네요. (취약점 분석 입장에선 RIPS가 많이 성장한 이상… 최고라고 하기엔 좀 그렇군요.)

https://docs.sonarqube.org/latest/images/architecture-scanning.png

Conclusion

보통 화이트박스 테스트 즉, 소스코드가 있는 경우에 사용되는 도구인데, 디컴파일된 코드에서 동작 가능할지도 좀 궁긍하긴하네요. 만약 어느정도 된다면 apk 파일 디컴파일하고 돌려주는 시스템? 같은거 하나 만들어도 재미있을듯 싶네요 :)