회사에서 웹 취약점 조치 업무를 부여받았는데,
정적분석도구로 소나큐브를 이용하면 된다고 했다.
소나큐브는 회사 내에서 아무도 사용하지 않았던 도구라서
내가 따로 소나큐브를 공부를 하고 분석을 해야 했다.
소나큐브는 정말이지 구글링을 해도 많은 자료가 나오지 않는다.
특히 우리말로 쓰여 있는 자료는 잘 볼 수가 없다.
설치까지는 인터넷에 자료가 많아 어렵지 않게 할 수 있지만,
이후 분석에서 골머리 앓을 때가 많다.
소나큐브와 함께 분석도구로 소나스캐너를 사용했는데,
총 2번 분석하면서, 이런 저런 조건들이 잘 맞아야 되는 까다로운 프로그램이라는 것을 느꼈다.
(이것 때문에 야근까지 했기 때문이지…ㅠㅠ)
소나큐브/소나스캐너 모두 쉽지 않은 도구들이지만,
삽질을 통해 얻은 사실들을 개인적으로 기록하고
정적분석을 할 그 누군가에게 도움이 될 것 같아서 써 본다.
1. 소나큐브를 실행한다.
(1) '명령 프롬프트' -> 'cd 소나큐브 저장위치' 입력 -> 'StartSonar.bat' 입력
순으로 소나큐브를 실행하고
(참고: 소나큐브 저장위치 경로로 이동할 때에는 bin -> windows-x86-64까지 이동한 경로를
입력해 주어야 한다.)
이렇게 Process is up 등의 문구가 뜨면 정상적으로 실행된다는 뜻이다.
그게 아니라 '~ is stopped' 등의 문구를 보면
cmd에서 'java -version'을 입력하여 jdk 11 이상을 썼는지 확인
(최근 업데이트된 소나큐브 프로그램은 jdk 11이상을 요구한다.
조금 오래된 프로그램은 jdk 11 이전 버전을 사용해야 하는 것으로 알고 있다.),
혹은 이미 켜져 있는데 충돌해서 그럴 수 있으므로
컴퓨터를 다시 껐다가 켜는 것을 추천한다.
참고로 소나큐브도 환경변수 설정을 해야 하니,
구글링을 통해 '소나큐브 환경변수 설정'을 검색해 따라하면 되겠다.
(2) 브라우저를 켜서 localhost:9000을 접속한다.
(3) 로그인 한다.
비밀번호를 따로 설정하지 않은 이상
Id: admin, pw: admin이다.
그러니 처음 접속하는 사람은 당연히
Id: admin, pw: admin이 되겠다.
참고로 소나큐브는 설치할 때 환경변수 설정을 해야 한다.
'소나큐브 환경변수 설정'을 구글링해서 알아보아야 한다.
2. 소나스캐너를 설치한다.
소나스캐너는 꼭 내가 설치한 소나큐브에 맞는 버전을 설치해주어야 한다.
보통 소나큐브를 다운로드 받을 때에는 가장 최신으로 업데이트 된 버전을 사용하기 때문에
소나스캐너도 그에 알맞게 가장 최신 버전으로 사용해야 한다.
필자는 소나스캐너를 예전 버전으로 설치해서 지속되는 Error 현상을 보게 되었다.
3. 소나큐브에서 프로젝트를 생성한다.
ProjectKey와 ProjectName을 적절히 설정해주면 된다.
예를들어 나는 보통 프로젝트 key는 example:example로 설정하고
프로젝트 Name은 example 이런 형식으로 설정한다.
즉, key는 ':(콜론)'을 사이에 두고 단어를 중복하여 쓴다는 말이다.
4. 소나스캐너 conf에 들어가서 Sonar-scanner.properties를 수정해준다.
인터넷을 검색하면서 Sonar-project.properties를 수정하면 된다 등
소나스캐너 사용법이 조금씩 달랐다.
그렇지만 필자는 sonarscanner 설치 폴더 > conf > Sonar-scanner.properties만
수정해주었고,
sonarscanner 설치 폴더 > bin > sonar-scanner.bat을 더블클릭하면 끝.
이후 소나큐브로 들어가서 프로젝트 분석이 완료되었으면 '성공함'이라고 뜬다.
나는 '실패함'이라는 문구를 본적이 있었는데,
C 드라이브의 용량이 꽉 차서 그럴수도 있다고 해서
간단하게 휴지통만 비워줬더니 가용 용량이 10GB 정도 생겨서
다시 분석한 결과, '성공함'이라는 글씨를 볼 수 있었다.
또한, properties를 수정해줄 때 경로 입력을 제대로 해야 한다.
즉, 'C\...\...\...'가 아니라 'C\\...\\...\\...'(역슬래쉬를 두번씩 사용할 것) 이렇게 해 주어야,
디렉토리 이름을 경로로 인식하지 않게 된다.
'05. etc' 카테고리의 다른 글
[윈도우] 명령프롬프트(cmd)에서 SQL Plus 실행하는 법 (0) | 2024.06.28 |
---|---|
[윈도우] 명령 프롬프트에서 사용중인 포트(port) 죽이기 (0) | 2024.06.27 |
[SSL 인증서] HTTP인증 후 리눅스 서버에 인증서 업로드 방법 (0) | 2024.06.27 |
[JQuery] 배열로 자바스크립트 함수 실행여부 확인하기 (0) | 2024.06.27 |
[네트워크] 실행된 이클립스 프로젝트를 다른 pc에서 접속하는 법 (0) | 2024.06.27 |