개념
같은 SAST 계열, 다른 체급
레슨 1에서 SonarQube로 코드를 정적으로 분석하고 Quality Gate를 걸어봤다. Fortify (Micro Focus를 거쳐 현재 OpenText 제품군)도 같은 SAST 계열에서 출발한다 — 소스 코드를 실행하지 않고 훑어 취약점 후보를 찾는다.
하지만 두 도구는 겨냥하는 조직이 다르다.
| SonarQube | Fortify | |
|---|---|---|
| 포지션 | 오픈소스 진영의 사실상 표준 | 상용 엔터프라이즈 통합 솔루션 |
| 범위 | SAST 중심(코드 품질 + 보안) | SAST + DAST + 의존성 분석을 한 플랫폼에 통합 |
| 주 사용처 | 규모를 가리지 않는 개발팀 | 금융·공공기관·방위산업 등 규제가 엄격한 대규모 조직 |
| 결과물 | 대시보드와 Quality Gate | 대시보드 + 감사·규정 준수 리포트 |
| 비용 | 무료판 존재, 유료판도 상대적으로 저렴 | 매우 높은 라이선스 비용 |
하나의 플랫폼 안에 SAST와 DAST가 같이 있다
모듈 16(레슨 12)에서 다룬 ZAP·Burp Suite는 실행 중인 애플리케이션을 밖에서 공격해보는 DAST 였다. 레슨 1의 SonarQube는 코드를 읽는 SAST 였다. 둘은 보는 각도가 달라서 실무에서는 보통 둘 다 쓴다.
Fortify는 이 둘을 제품군 안에 함께 담는다.
Fortify Static Code Analyzer (SCA) → SAST. 소스 코드 분석
Fortify WebInspect → DAST. 실행 중인 앱을 외부에서 스캔
Software Security Center (SSC) → 두 결과를 한 곳에 모아 관리·리포팅핵심은 세 번째 줄이다. 결과를 모으는 자리가 제품 안에 이미 있다는 것.
"기능이 더 강력해서"가 아니다
여기서 자연스럽게 나오는 질문이 있다. SonarQube + ZAP + SQLmap 같은 오픈소스 조합으로 대체하면 되지 않나? 개별 기능만 보면 대체로 된다.
문제는 그다음이다. 오픈소스 도구를 조합하면 각각이 서로 다른 형식의 결과 를 뱉는다. 그리고 규제 산업에서 진짜 일이 되는 건 스캔이 아니라 그 뒤다.
감사 대응에서 실제로 요구되는 것
- 이번 릴리스에 어떤 취약점이 몇 건 발견됐는가
- 각 항목이 언제, 누가, 어떤 근거로 조치 또는 예외 처리됐는가
- 그 조치가 어떤 규정 항목(PCI DSS, OWASP Top 10 등)에 대응하는가
- 지난 분기 대비 위험 추이는 어떠한가오픈소스 조합에서는 이 네 줄을 만드는 작업 자체가 매번 수작업 이 된다. 누군가 스프레드시트를 열고 세 도구의 결과를 붙여넣고 중복을 지우고 규정 항목에 매핑한다. 감사가 분기마다 온다면 이 노동도 분기마다 반복된다.
Fortify가 파는 것이 바로 이 지점이다. 통합·추적·리포팅을 제품이 기본 기능으로 해결해준다. 선택 이유는 "탐지 성능이 더 좋아서"가 아니라 "규제 대응과 통합 리포팅이 필요해서" 다. 이 구분을 못 하면 도입 논의에서 엉뚱한 비교표를 만들게 된다.
실무에서 왜 필요한가
채용공고에 등장하면 읽어야 할 신호
모듈 22(레슨 5 계열)에서 HP ALM 같은 엔터프라이즈 도구를 다룰 때와 같은 독법이 적용된다. 채용공고의 도구 이름은 기능 요구사항이기 이전에 그 조직이 어떤 환경인지 알려주는 신호 다.
"Fortify 운영 경험" 이 적힌 공고에서 읽어낼 것
- 외부 감사·규제 심사를 정기적으로 받는 조직일 가능성이 높다
- 보안 요구사항이 릴리스 게이트로 걸려 있을 가능성이 높다
- 도구 도입·운영에 예산을 쓸 수 있는 규모다
- 반대로, 절차가 무겁고 릴리스 주기가 느릴 가능성도 함께 높다QA 지원자 입장에서 Fortify를 직접 설치해볼 일은 거의 없다. 개인이 라이선스를 구할 수 있는 종류의 도구가 아니다. 그래서 이 레슨의 목표는 사용법 습득이 아니라 "왜 이 조직이 이 도구를 쓰는지 설명할 수 있는 것" 이다. 면접에서 유효한 답은 "써봤습니다"가 아니라 "규제 대응 때문에 통합 솔루션이 필요한 환경이라고 이해합니다"에 가깝다.
트레이드오프를 솔직하게
Fortify는 만능이 아니고, 오히려 대부분의 팀에는 과하다.
- 라이선스 비용이 매우 높다. 스타트업이나 중소 규모 팀이 감당할 수준이 아니다. 비용만으로 후보에서 빠지는 경우가 대부분이다.
- 도입·운영 복잡도가 크다. 전담 인력, 룰셋 튜닝, 서버 운영이 따라붙는다. 도구를 켜두는 것과 제대로 쓰는 것은 다른 일이다.
- 스캔이 느리다. 대규모 코드베이스 전체 스캔은 시간이 오래 걸려, 레슨 1에서 배운 것처럼 매 커밋마다 돌리는 방식과 잘 맞지 않는다.
- 오탐은 여전히 나온다. 상용이라고 오탐이 사라지지 않는다. 모듈 16(레슨 12)에서 배운 "스캐너는 후보를 줄 뿐"이라는 원칙은 그대로다.
그럼에도 규제 준수가 선택이 아닌 조직 에서는 마땅한 대안이 없다. 감사에서 "저희는 오픈소스 도구를 조합해 쓰고 결과는 수작업으로 취합합니다"라고 답했을 때, 그 취합 과정의 신뢰성을 증명하는 부담이 전부 조직에 돌아오기 때문이다.