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

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

Source: Dev.to

왜 Puma Scan인가?

공식 OWASP Source Code Analysis Tools list 에는 많은 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 injection 취약점이 포함된 최소 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을 이용한 자동 탐지

Step 1: 프로젝트에 Puma Scan 추가

dotnet add package Puma.Security.Rules

Step 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 ..

Step 3: 결과 확인

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

powershell -ExecutionPolicy Bypass -File .\scan.ps1

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

SEC0107: SQL Injection vulnerability

이는 Puma Scan이 샘플 코드에서 삽입된 쿼리를 성공적으로 식별했음을 나타냅니다.

Back to Blog

관련 글

더 보기 »