기본 콘텐츠로 건너뛰기

Yasca로 시작하는 오픈소스 SAST: 시큐어 코딩과 취약점 진단 가이드

SECURITY / SAST

Yasca로 시작하는 오픈소스 SAST: 시큐어 코딩과 취약점 진단 가이드

복잡한 설정 없이 즉시 도입 가능한 오픈소스 정적 분석 도구(SAST) Yasca의 핵심 사용법을 다룹니다. CLI 기반의 취약점 진단부터 HTML 리포트 분석을 통한 코드 개선 프로세스까지, 실무에 바로 적용 가능한 보안 진단 전략을 확인해 보세요.

1. Yasca 실행 및 기본 사용법

Yasca(Yet Another Source Code Analyzer)는 Java, PHP, C#, C++, HTML 등 다양한 언어를 지원하는 강력한 오픈 소스 정적 분석 도구입니다. 이 도구의 가장 큰 매력은 별도의 복잡한 설정 파일 없이 명령줄(CLI)에서 즉시 분석이 가능하다는 점입니다.

Yasca를 효율적으로 사용하는 방법은 설치 폴더 내의 resource 디렉터리가 아닌, 실행 파일이 위치한 루트 경로에서 분석 대상 프로젝트를 지정하는 것입니다.

다음은 기본적인 실행 명령어 예시입니다. 분석하고자 하는 소스 코드의 절대 경로를 인수로 전달하면 엔진이 구동됩니다.

# Windows 환경 실행 예시
yasca.bat C:\YourProject\SourceCode

명령어를 실행하면 콘솔 창에서 실시간으로 스캔 진행 상황이 출력되며, 엔진이 소스 코드를 파싱하여 잠재적인 보안 위협을 탐지합니다.

Yasca CLI 실행 화면

▲ Yasca CLI 실행 및 스캔 진행 화면

2. 분석 결과 보고서(Report) 해석

분석이 완료되면 실행 경로에 report.html 파일이 자동으로 생성됩니다. 이 파일을 웹 브라우저에서 열면 시각화된 분석 결과를 통해 취약점 현황을 직관적으로 파악할 수 있습니다.

2.1. 대시보드 요약 확인

보고서의 메인 페이지는 전체 프로젝트의 보안 현황을 요약해서 보여줍니다. 주요 지표는 다음과 같습니다.

  • 분석 규모: 전체 스캔 파일 수 및 탐지된 이슈 총합
  • 심각도(Severity) 분류: Critical, High, Medium, Low 등급으로 위험도 시각화
  • 취약점 유형 분포: SQL Injection, XSS 등 발견된 취약점 카테고리별 그래프
Yasca 결과 보고서 요약 화면

▲ 직관적인 차트로 제공되는 분석 결과 요약

2.2. 상세 취약점 및 코드 라인 추적

요약 대시보드에서 특정 심각도나 취약점 유형을 클릭하면, 해당 이슈가 발견된 구체적인 파일 목록과 상세 정보로 이동합니다. 개발자는 이 정보를 바탕으로 즉각적인 조치를 취할 수 있습니다.

  • File Path: 취약점이 발견된 파일의 절대 경로
  • Line Number: 문제가 되는 코드의 라인 번호
  • Description: 취약점에 대한 기술적 설명 및 권장 해결 방안
취약점 상세 목록

▲ 파일 경로와 라인 넘버를 포함한 상세 리포트

리포트가 지목한 소스 코드 위치를 확인하고, 시큐어 코딩 가이드를 적용하여 코드를 수정하는 것이 보안 진단의 핵심입니다.

소스 코드 상세 보기

▲ 코드 레벨에서의 취약점 확인

3. 마치며: 효율적인 보안 진단 전략

Yasca는 고가의 상용 SAST 솔루션을 도입하기 어려운 환경이나, 개발 초기 단계(Early Stage)에서 빠르게 보안 수준을 점검하기에 매우 유용한 도구입니다.

💡 Tip: 정기적인 코드 리뷰 프로세스나 CI/CD 파이프라인에 Yasca 실행을 포함시킨다면, 배포 전 치명적인 보안 위협을 사전에 제거하고 소프트웨어의 품질을 높이는 DevSecOps 환경을 구축할 수 있습니다.

댓글

이 블로그의 인기 게시물

Java Servlet Request Parameter 완전 정복 — GET/POST 모든 파라미터 확인 & 디버깅 예제 (Request Parameter 전체보기)

Java Servlet Request Parameter 완전 정복 — GET/POST 모든 파라미터 확인 & 디버깅 예제 Java Servlet Request Parameter 완전 정복 웹 애플리케이션에서 클라이언트로부터 전달되는 Request Parameter 를 확인하는 것은 필수입니다. 이 글에서는 Java Servlet 과 JSP 에서 GET/POST 요청 파라미터를 전체 출력하고 디버깅하는 방법을 다양한 예제와 함께 소개합니다. 1. 기본 예제: getParameterNames() 사용 Enumeration<String> params = request.getParameterNames(); System.out.println("----------------------------"); while (params.hasMoreElements()){ String name = params.nextElement(); System.out.println(name + " : " + request.getParameter(name)); } System.out.println("----------------------------"); 위 코드는 요청에 포함된 모든 파라미터 이름과 값을 출력하는 기본 방법입니다. 2. HTML Form과 연동 예제 <form action="CheckParamsServlet" method="post"> 이름: <input type="text" name="username"><br> 이메일: <input type="email" name="email"><b...

PostgreSQL 달력(일별,월별)

SQL 팁: GENERATE_SERIES로 일별, 월별 날짜 목록 만들기 SQL 팁: GENERATE_SERIES 로 일별, 월별 날짜 목록 만들기 데이터베이스에서 통계 리포트를 작성하거나 비어있는 날짜 데이터를 채워야 할 때, 특정 기간의 날짜 목록이 필요할 수 있습니다. PostgreSQL과 같은 데이터베이스에서는 GENERATE_SERIES 함수를 사용하여 이 작업을 매우 간단하게 처리할 수 있습니다. 1. 🗓️ 일별 날짜 목록 생성하기 2020년 1월 1일부터 12월 31일까지의 모든 날짜를 '1 day' 간격으로 생성하는 쿼리입니다. WITH date_series AS ( SELECT DATE(GENERATE_SERIES( TO_DATE('2020-01-01', 'YYYY-MM-DD'), TO_DATE('2020-12-31', 'YYYY-MM-DD'), '1 day' )) AS DATE ) SELECT DATE FROM date_series 이 쿼리는 WITH 절(CTE)을 사용하여 date_series 라는 임시 테이블을 만들고, GENERATE_SERIES 함수로 날짜를 채웁니다. 결과 (일별 출력) 2. 📅 월별 날짜 목록 생성하기 동일한 원리로, 간격을 '1 MONTH' 로 변경하면 월별 목록을 생성할 수 있습니다. TO...

CSS로 레이어 팝업 화면 가운데 정렬하는 방법 (top·left·transform 완전 정리)

레이어 팝업 센터 정렬, 이 코드만 알면 끝 (CSS 예제 포함) 이벤트 배너나 공지사항을 띄울 때 레이어 팝업(center 정렬) 을 깔끔하게 잡는 게 생각보다 어렵습니다. 화면 크기가 변해도 가운데에 고정되고, 모바일에서도 자연스럽게 보이게 하려면 position , top , left , transform 을 정확하게 이해해야 합니다. 이 글에서는 아래 내용을 예제로 정리합니다. 레이어 팝업(center 정렬)의 기본 개념 자주 사용하는 position: absolute / fixed 정렬 방식 질문에서 주신 스타일 top: 3.25%; left: 50%; transform: translateX(-50%) 의 의미 실무에서 바로 쓰는 반응형 레이어 팝업 HTML/CSS 예제 1. 레이어 팝업(center 정렬)이란? 레이어 팝업(레이어 팝업창) 은 새 창을 띄우는 것이 아니라, 현재 페이지 위에 div 레이어를 띄워서 공지사항, 광고, 이벤트 등을 보여주는 방식을 말합니다. 검색엔진(SEO) 입장에서도 같은 페이지 안에 HTML이 존재 하기 때문에 팝업 안의 텍스트도 정상적으로 인덱싱될 수 있습니다. 즉, “레이어 팝업 센터 정렬”, “레이어 팝업 만드는 방법”과 같이 관련 키워드를 적절히 넣어주면 검색 노출에 도움이 됩니다. 2. 질문에서 주신 레이어 팝업 스타일 분석 질문에서 주신 스타일은 다음과 같습니다. <div class="layer-popup" style="width:1210px; z-index:9001; position:absolute; top:3.25%; left:50%; transform:translateX(-50%);"> 레이어 팝업 내용 <...