초기에 .NET 취약점 포착하기: Puma Scan과 함께하는 실전 가이드

발행: (2025년 12월 5일 오전 03:50 GMT+9)
3 min read
원문: Dev.to

Source: Dev.to

왜 Puma Scan인가?

공식 OWASP 소스 코드 분석 도구 목록에는 많은 SAST 도구가 존재하지만, 이번 과제에서는 Sonar, Snyk, Semgrep, Veracode를 제외했습니다. C#/.NET 용으로 남은 옵션 중 Puma Scan이 눈에 띈 이유는 다음과 같습니다:

  • .NET 및 C# 전용으로 설계되었습니다
  • Visual Studio, VS Code, 그리고 명령줄과 통합됩니다
  • SQL InjectionCross‑Site Scripting (XSS) 과 같은 일반적인 OWASP Top 10 이슈를 탐지합니다
  • Community Edition이 무료로 제공되어 학습 및 테스트에 적합합니다

전체 데모(코드, 자동화 스크립트, 스캔 결과 포함)는 GitHub에 공개되어 있습니다.

취약한 코드 샘플

데모를 간단하고 재현 가능하게 만들기 위해, 고전적인 SQL 인젝션 취약점을 가진 최소한의 C# 클래스를 사용합니다:

// TestVuln.cs
using System;
using System.Data.SqlClient;

public class VulnerableClass
{
    public void UnsafeQuery(string userInput)
    {
        // ⚠️ SQL Injection: user input concatenated directly into query
        string query = "SELECT * FROM Users WHERE Id = " + userInput;
        SqlCommand cmd = new SqlCommand(query);
    }
}

공격자가 1 OR 1=1을 입력하면, 쿼리는 다음과 같이 변형됩니다:

SELECT * FROM Users WHERE Id = 1 OR 1=1

→ 모든 사용자 레코드가 노출됩니다.

이는 CWE‑89 및 OWASP Top 10: A03:2021 – Injection에 해당합니다.

Puma Scan을 이용한 자동 탐지

단계 1: 프로젝트에 Puma Scan 추가

dotnet add package Puma.Security.Rules

단계 2: PowerShell 스크립트 (scan.ps1)

# scan.ps1 - PumaScan SAST Analysis Script
Write-Host "======================================" -ForegroundColor Cyan
Write-Host " PumaScan - SAST Security Analysis" -ForegroundColor Cyan
Write-Host "======================================" -ForegroundColor Cyan
Write-Host ""

# Build the project with PumaScan analysis
Set-Location PumaScanner
dotnet clean | Out-Null
dotnet build

Write-Host ""
Write-Host "======================================" -ForegroundColor Green
Write-Host " Analysis Complete!" -ForegroundColor Green
Write-Host "======================================" -ForegroundColor Green
Write-Host ""
Write-Host "Look for security warnings above:" -ForegroundColor Yellow
Write-Host "  - SEC0107: SQL Injection vulnerability" -ForegroundColor Yellow
Write-Host ""
Set-Location ..

단계 3: 결과 확인

다음 명령으로 스크립트를 실행합니다:

powershell -ExecutionPolicy Bypass -File .\scan.ps1

출력에는 다음과 같은 명확한 경고가 포함됩니다:

SEC0107: SQL Injection vulnerability

이는 Puma Scan이 샘플 코드에서 인젝션된 쿼리를 성공적으로 식별했음을 의미합니다.

Back to Blog

관련 글

더 보기 »