Skip to main content
Glama
Security Scanner MCP

Security Scanner MCP

by ongjin

๐Ÿ”’ Security Scanner MCP

AI๊ฐ€ ์ƒ์„ฑํ•œ ์ฝ”๋“œ์˜ ๋ณด์•ˆ ์ทจ์•ฝ์ ์„ ์ž๋™์œผ๋กœ ๊ฒ€์ถœํ•˜๊ณ , ์ˆ˜์ •๊นŒ์ง€ ์ œ์•ˆํ•˜๋Š” ์ง€๋Šฅํ˜• ๋ณด์•ˆ ํŒŒํŠธ๋„ˆ MCP ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค.

npm version npm downloads Documentation OWASP License Node

ํ•œ๊ตญ์–ด | English | ๐Ÿ“š Documentation

Demo

Security Scanner Demo

Related MCP server: Cybrium MCP Server

์™œ ํ•„์š”ํ•œ๊ฐ€์š”?

AI๊ฐ€ ์ƒ์„ฑํ•œ ์ฝ”๋“œ์—๋Š” ๋ณด์•ˆ ์ทจ์•ฝ์ ์ด 322% ๋” ๋งŽ๋‹ค๋Š” ์—ฐ๊ตฌ ๊ฒฐ๊ณผ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด MCP๋Š” ๋‹จ์ˆœ ๊ฒ€์‚ฌ๋ฅผ ๋„˜์–ด์„œ:

  • ๐Ÿ’ก ์ž๋™์œผ๋กœ ์ˆ˜์ • ์ฝ”๋“œ๋ฅผ ์ œ์•ˆํ•˜๊ณ 

  • ๐Ÿ—๏ธ IaC (Dockerfile, Kubernetes, Terraform)๊นŒ์ง€ ๊ฒ€์‚ฌํ•˜๋ฉฐ

  • ๐Ÿ“Š Mermaid ๋‹ค์ด์–ด๊ทธ๋žจ๊ณผ SARIF ๋ฆฌํฌํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ 

  • ๐Ÿณ Docker ์ƒŒ๋“œ๋ฐ•์Šค์—์„œ ์•ˆ์ „ํ•˜๊ฒŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ”๋“œ๋ฅผ ์ปค๋ฐ‹ํ•˜๊ธฐ ์ „, ํด๋ผ์šฐ๋“œ์— ๋ฐฐํฌํ•˜๊ธฐ ์ „, ํ•œ ๋ฒˆ๋งŒ ๊ฒ€์‚ฌํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

โœจ ์ฃผ์š” ๊ธฐ๋Šฅ

๐ŸŽฏ ์ฝ”๋“œ ๋ณด์•ˆ ์Šค์บ”

Tool

์„ค๋ช…

scan-security

์ข…ํ•ฉ ๋ณด์•ˆ ์Šค์บ” - ๋ชจ๋“  ๊ฒ€์‚ฌ๋ฅผ ํ•œ๋ฒˆ์— ์ˆ˜ํ–‰

scan-secrets

ํ•˜๋“œ์ฝ”๋”ฉ๋œ API ํ‚ค, ๋น„๋ฐ€๋ฒˆํ˜ธ, ํ† ํฐ ๊ฒ€์ถœ

scan-injection

SQL/NoSQL/Command Injection ์ทจ์•ฝ์  ๊ฒ€์‚ฌ

scan-xss

Cross-Site Scripting ์ทจ์•ฝ์  ๊ฒ€์‚ฌ

scan-crypto

์•”ํ˜ธํ™” ์ทจ์•ฝ์  (์•ฝํ•œ ํ•ด์‹œ, ๋ถˆ์•ˆ์ „ํ•œ ๋žœ๋ค ๋“ฑ)

scan-auth

์ธ์ฆ/์„ธ์…˜ ์ทจ์•ฝ์  (JWT, ์ฟ ํ‚ค, CORS ๋“ฑ)

scan-path

ํŒŒ์ผ/๊ฒฝ๋กœ ์ทจ์•ฝ์  (Path Traversal, ์—…๋กœ๋“œ ๋“ฑ)

scan-dependencies

package.json ๋“ฑ์—์„œ ์ทจ์•ฝํ•œ ์˜์กด์„ฑ ๊ฒ€์‚ฌ

1.2.0 AST ๊ธฐ๋ฐ˜ JS/TS ํƒ์ง€

JavaScript/TypeScript ์Šค์บ๋„ˆ๋Š” ์ด์ œ AST๋ฅผ ํŒŒ์‹ฑํ•ด ๋‹จ์ˆœ ๋ฌธ์ž์—ด ํŒจํ„ด์œผ๋กœ ๋†“์น˜๋˜ ํ๋ฆ„์„ ์ถ”์ ํ•ฉ๋‹ˆ๋‹ค.

  • ํ•จ์ˆ˜ ํŒŒ๋ผ๋ฏธํ„ฐ taint: h(req.body.x)๊ฐ€ function h(input) { db.query(input); } ์•ˆ์˜ sink๊นŒ์ง€ ์ด์–ด์ง€๋ฉด ํƒ์ง€ํ•ฉ๋‹ˆ๋‹ค.

  • ๋‹ค๋‹จ๊ณ„ ๋ณ€์ˆ˜ ํ๋ฆ„: req.body โ†’ a โ†’ b โ†’ sink ํ˜•ํƒœ๋ฅผ ํƒ์ง€ํ•ฉ๋‹ˆ๋‹ค.

  • innerHTML์€ ๋™์  ๊ฐ’ ํ• ๋‹น๋งŒ ๋ณด๊ณ ํ•˜๊ณ , ๋ฆฌํ„ฐ๋Ÿด HTML ๋ฌธ์ž์—ด์€ false positive๋กœ ๋ณด๊ณ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  • res.setHeader('Access-Control-Allow-Origin', '*') ํ˜•ํƒœ์˜ CORS ์™€์ผ๋“œ์นด๋“œ๋„ ํƒ์ง€ํ•ฉ๋‹ˆ๋‹ค.

  • Python / Java / Go ๋ฐ JS/TS parse ์‹คํŒจ ํŒŒ์ผ์€ ๊ธฐ์กด regex ๊ฒฝ๋กœ๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ—๏ธ Infrastructure as Code (IaC) ์Šค์บ”

Tool

์„ค๋ช…

scan-iac

Dockerfile, Kubernetes, Terraform ๋ณด์•ˆ ๊ฒ€์‚ฌ

  • Dockerfile: CIS Docker Benchmark ๊ธฐ๋ฐ˜ 15๊ฐœ ๊ทœ์น™

  • Kubernetes: Pod Security Standards (PSS) ๊ธฐ๋ฐ˜ 13๊ฐœ ๊ทœ์น™

  • Terraform: AWS/GCP/Azure ๋ณด์•ˆ ์„ค์ • 15๊ฐœ ๊ทœ์น™

๐Ÿ› ๏ธ ์ž๋™ ์ˆ˜์ • & ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ

Tool

์„ค๋ช…

get-fix-suggestion

์ทจ์•ฝ์ ์— ๋Œ€ํ•œ ์ˆ˜์ •๋œ ์ฝ”๋“œ ์ž๋™ ์ƒ์„ฑ

generate-security-report

Mermaid ๋‹ค์ด์–ด๊ทธ๋žจ + SARIF + CVE ์ •๋ณด ์ข…ํ•ฉ ๋ฆฌํฌํŠธ

scan-in-sandbox

Docker ๊ฒฉ๋ฆฌ ํ™˜๊ฒฝ์—์„œ ์•ˆ์ „ํ•˜๊ฒŒ ์Šค์บ” ์‹คํ–‰

์„ค์น˜

npm์—์„œ ์„ค์น˜ (๊ถŒ์žฅ)

npm install -g security-scanner-mcp

๋˜๋Š” ์†Œ์Šค์—์„œ ๋นŒ๋“œ

git clone https://github.com/ongjin/security-scanner-mcp.git
cd security-scanner-mcp
npm install && npm run build

Claude Code์— ๋“ฑ๋ก

# npm ์ „์—ญ ์„ค์น˜ ํ›„
claude mcp add --scope project security-scanner -- security-scanner-mcp

# ๋˜๋Š” ์†Œ์Šค์—์„œ ๋นŒ๋“œํ•œ ๊ฒฝ์šฐ
claude mcp add --scope project security-scanner -- node /path/to/security-scanner-mcp/dist/index.js

๋น ๋ฅธ ์„ค์ • (๋„๊ตฌ ์ž๋™ ํ—ˆ์šฉ)

๋งค๋ฒˆ ๋„๊ตฌ ์‚ฌ์šฉ ์Šน์ธ์„ ๋ˆ„๋ฅด๋Š” ๊ฒƒ์ด ๋ฒˆ๊ฑฐ๋กญ๋‹ค๋ฉด, ์•„๋ž˜ ๋ฐฉ๋ฒ•์œผ๋กœ ์ž๋™ ํ—ˆ์šฉ์„ ์„ค์ •ํ•˜์„ธ์š”.

๐Ÿ–ฅ๏ธ Claude Desktop App ์‚ฌ์šฉ์ž

  1. Claude ์•ฑ์„ ์žฌ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

  2. security-scanner ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ฒซ ๋ฒˆ์งธ ์งˆ๋ฌธ์„ ๋˜์ง‘๋‹ˆ๋‹ค.

  3. ์•Œ๋ฆผ์ฐฝ์ด ๋œจ๋ฉด "Always allow requests from this server" ์ฒดํฌ๋ฐ•์Šค๋ฅผ ํด๋ฆญํ•˜๊ณ  Allow๋ฅผ ๋ˆ„๋ฅด์„ธ์š”. (์ดํ›„์—๋Š” ๋ฌป์ง€ ์•Š๊ณ  ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.)

โŒจ๏ธ Claude Code (CLI) ์‚ฌ์šฉ์ž

ํ„ฐ๋ฏธ๋„ ํ™˜๊ฒฝ(claude ๋ช…๋ น์–ด)์„ ์‚ฌ์šฉ ์ค‘์ด๋ผ๋ฉด ๊ถŒํ•œ ๊ด€๋ฆฌ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

  1. ํ„ฐ๋ฏธ๋„์—์„œ claude๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  2. ํ”„๋กฌํ”„ํŠธ ์ž…๋ ฅ์ฐฝ์— /permissions๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ์—”ํ„ฐ๋ฅผ ์นฉ๋‹ˆ๋‹ค.

  3. Global Permissions (๋˜๋Š” Project Permissions) > Allowed Tools๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  4. mcp__security-scanner__scan-security๋งŒ ์ž…๋ ฅํ•˜๊ฑฐ๋‚˜, ๋ชจ๋“  ๋„๊ตฌ๋ฅผ ํ—ˆ์šฉํ•˜๋ ค๋ฉด mcp__security-scanner__*๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก Tip: ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ scan-security ํ•˜๋‚˜๋งŒ ํ—ˆ์šฉํ•ด๋„ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋„๊ตฌ๊ฐ€ ๋ชจ๋“  ๋ณด์•ˆ ๊ฒ€์‚ฌ๋ฅผ ํ†ตํ•ฉํ•ด์„œ ์ˆ˜ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์‚ฌ์šฉ ์˜ˆ์‹œ

๐Ÿ“ ๊ธฐ๋ณธ ์ฝ”๋“œ ์Šค์บ”

๋‚˜: ์ด ์ฝ”๋“œ ๋ณด์•ˆ ๊ฒ€์‚ฌํ•ด์ค˜

const apiKey = "AIzaSyC1234567890abcdef";
const query = `SELECT * FROM users WHERE id = ${userId}`;
element.innerHTML = userInput;

Claude: [scan-security ํ˜ธ์ถœ]

## โš ๏ธ ๋ณด์•ˆ ์ทจ์•ฝ์  ๋ฐœ๊ฒฌ!

### ๐Ÿ”ด Critical (1๊ฐœ)
- **Google API Key** (๋ผ์ธ 1)
  - Google API Key๊ฐ€ ์ฝ”๋“œ์— ํ•˜๋“œ์ฝ”๋”ฉ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค
  - ๐Ÿ’ก ํ•ด๊ฒฐ์ฑ…: ํ™˜๊ฒฝ๋ณ€์ˆ˜๋กœ ๊ด€๋ฆฌํ•˜๊ณ , API ํ‚ค ์ œํ•œ ์„ค์ •ํ•˜๊ธฐ

### ๐ŸŸ  High (2๊ฐœ)
- **Template Literal SQL** (๋ผ์ธ 2)
  - ํ…œํ”Œ๋ฆฟ ๋ฆฌํ„ฐ๋Ÿด๋กœ SQL ์ฟผ๋ฆฌ์— ๋ณ€์ˆ˜๋ฅผ ์‚ฝ์ž…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค
  - ๐Ÿ’ก ํ•ด๊ฒฐ์ฑ…: Prepared Statement๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”

- **innerHTML Assignment** (๋ผ์ธ 3)
  - innerHTML์— ๋™์  ๊ฐ’์„ ํ• ๋‹นํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค
  - ๐Ÿ’ก ํ•ด๊ฒฐ์ฑ…: textContent๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ DOMPurify๋กœ sanitizeํ•˜์„ธ์š”

๐Ÿ› ๏ธ ์ž๋™ ์ˆ˜์ • ๋ฐ›๊ธฐ

๋‚˜: innerHTML ์ทจ์•ฝ์  ์ˆ˜์ • ์ฝ”๋“œ ๋ณด์—ฌ์ค˜

Claude: [get-fix-suggestion ํ˜ธ์ถœ]

## โœ… ์ˆ˜์ •๋œ ์ฝ”๋“œ

// โŒ Before (์ทจ์•ฝ)
element.innerHTML = userInput;

// โœ… After (์•ˆ์ „)
element.textContent = userInput;
// ๋˜๋Š” HTML์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ:
import DOMPurify from 'dompurify';
element.innerHTML = DOMPurify.sanitize(userInput);

๐Ÿ—๏ธ IaC ํŒŒ์ผ ๊ฒ€์‚ฌ

๋‚˜: Dockerfile ๋ณด์•ˆ ๊ฒ€์‚ฌํ•ด์ค˜

Claude: [scan-iac ํ˜ธ์ถœ]

## ๐Ÿณ Dockerfile ๋ณด์•ˆ ์ทจ์•ฝ์  ๋ฐœ๊ฒฌ!

### ๐Ÿ”ด Critical (2๊ฐœ)
- **DOC001**: root ์‚ฌ์šฉ์ž๋กœ ์‹คํ–‰
  - ๐Ÿ’ก ํ•ด๊ฒฐ์ฑ…: USER ๋ช…๋ น์œผ๋กœ non-root ์‚ฌ์šฉ์ž ์„ค์ •

- **DOC005**: ํ•˜๋“œ์ฝ”๋”ฉ๋œ ์‹œํฌ๋ฆฟ
  - ๐Ÿ’ก ํ•ด๊ฒฐ์ฑ…: ARG์™€ ๋นŒ๋“œ ์‹œํฌ๋ฆฟ ์‚ฌ์šฉ

### ๐ŸŸ  High (3๊ฐœ)
- **DOC002**: latest ํƒœ๊ทธ ์‚ฌ์šฉ
  - ๐Ÿ’ก ํ•ด๊ฒฐ์ฑ…: ๋ช…์‹œ์  ๋ฒ„์ „ ํƒœ๊ทธ ์‚ฌ์šฉ (์˜ˆ: node:20-alpine)
...

๐Ÿ“Š ์ข…ํ•ฉ ๋ฆฌํฌํŠธ ์ƒ์„ฑ

๋‚˜: ์ „์ฒด ๋ณด์•ˆ ๋ฆฌํฌํŠธ๋ฅผ Mermaid ๋‹ค์ด์–ด๊ทธ๋žจ์œผ๋กœ ๋ณด์—ฌ์ค˜

Claude: [generate-security-report ํ˜ธ์ถœ]

# ๐Ÿ›ก๏ธ ๋ณด์•ˆ ์Šค์บ” ๋Œ€์‹œ๋ณด๋“œ

## ๐Ÿ“Š ์ „์ฒด ์š”์•ฝ
์ด **8๊ฐœ**์˜ ์ทจ์•ฝ์ ์ด ๋ฐœ๊ฒฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

## ๐ŸŽฏ ์‹ฌ๊ฐ๋„๋ณ„ ๋ถ„ํฌ
```mermaid
pie title ์‹ฌ๊ฐ๋„๋ณ„ ์ทจ์•ฝ์  ๋ถ„ํฌ
    "๐Ÿ”ด Critical" : 2
    "๐ŸŸ  High" : 3
    "๐ŸŸก Medium" : 2
    "๐ŸŸข Low" : 1
\```

## โš”๏ธ ๊ฐ€๋Šฅํ•œ ๊ณต๊ฒฉ ์‹œ๋‚˜๋ฆฌ์˜ค
```mermaid
flowchart TD
    Start([๊ณต๊ฒฉ์ž]) --> Recon[์ •์ฐฐ]
    Recon --> Secrets[ํ•˜๋“œ์ฝ”๋”ฉ๋œ<br/>์‹œํฌ๋ฆฟ ๋ฐœ๊ฒฌ]
    Secrets --> Access[์ธ์ฆ ์šฐํšŒ]
    ...
\```

+ SARIF ๋ฆฌํฌํŠธ (GitHub Code Scanning ํ˜ธํ™˜)
+ CVE/OWASP ์ƒ์„ธ ์ •๋ณด

๐Ÿณ ์ƒŒ๋“œ๋ฐ•์Šค์—์„œ ์•ˆ์ „ํ•˜๊ฒŒ ์‹คํ–‰

๋‚˜: ์ด ์ฝ”๋“œ๋ฅผ ์ƒŒ๋“œ๋ฐ•์Šค์—์„œ ์•ˆ์ „ํ•˜๊ฒŒ ๊ฒ€์‚ฌํ•ด์ค˜

Claude: [scan-in-sandbox ํ˜ธ์ถœ]

## ๐Ÿณ ์ƒŒ๋“œ๋ฐ•์Šค ์Šค์บ” ๊ฒฐ๊ณผ

โœ… **์Šค์บ” ์™„๋ฃŒ**

### ๐Ÿ”’ ์ƒŒ๋“œ๋ฐ•์Šค ์„ค์ •
- **๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ**: 512MB
- **CPU ์ œํ•œ**: 0.5 ์ฝ”์–ด
- **ํƒ€์ž„์•„์›ƒ**: 30000ms
- **๋„คํŠธ์›Œํฌ**: ๋น„ํ™œ์„ฑํ™”
- **๊ถŒํ•œ**: ์ตœ์†Œ ๊ถŒํ•œ

๊ฒ€์ถœํ•˜๋Š” ์ทจ์•ฝ์ 

๐Ÿ”‘ ํ•˜๋“œ์ฝ”๋”ฉ๋œ ์‹œํฌ๋ฆฟ

  • AWS Access Key / Secret Key

  • Google API Key / OAuth Secret

  • GitHub Token / Slack Token

  • Database Connection String

  • Private Key (RSA, EC ๋“ฑ)

  • JWT Token

  • Kakao / Naver API Key

  • Stripe / Twilio API Key

๐Ÿ’‰ Injection

  • SQL Injection (๋ฌธ์ž์—ด ์—ฐ๊ฒฐ, ํ…œํ”Œ๋ฆฟ ๋ฆฌํ„ฐ๋Ÿด, ํ•จ์ˆ˜ ํŒŒ๋ผ๋ฏธํ„ฐ ํ๋ฆ„)

  • NoSQL Injection (MongoDB, tainted query object)

  • Command Injection (exec, spawn, execSync)

  • LDAP Injection

๐ŸŒ XSS

  • dangerouslySetInnerHTML (React)

  • innerHTML / outerHTML (๋™์  ๊ฐ’ ํƒ์ง€, ๋ฆฌํ„ฐ๋Ÿด HTML์€ ์ œ์™ธ)

  • jQuery .html() / Vue v-html

  • eval() / new Function()

  • document.write()

๐Ÿ” ์•”ํ˜ธํ™”

  • ์•ฝํ•œ ํ•ด์‹œ (MD5, SHA1)

  • ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ๋žœ๋ค (Math.random)

  • ๋‹ค๋‹จ๊ณ„ taint๊ฐ€ ๋“ค์–ด๊ฐ„ ํ‰๋ฌธ ๋น„๋ฐ€๋ฒˆํ˜ธ ์ €์žฅ

  • ํ•˜๋“œ์ฝ”๋”ฉ๋œ ์•”ํ˜ธํ™” ํ‚ค/IV

  • SSL ์ธ์ฆ์„œ ๊ฒ€์ฆ ๋น„ํ™œ์„ฑํ™”

  • ์ทจ์•ฝํ•œ TLS ๋ฒ„์ „ (1.0, 1.1)

๐Ÿ”’ ์ธ์ฆ/์„ธ์…˜

  • JWT ์„ค์ • ์˜ค๋ฅ˜ (none ์•Œ๊ณ ๋ฆฌ์ฆ˜, ๋งŒ๋ฃŒ ์—†์Œ)

  • ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ์ฟ ํ‚ค ์„ค์ •

  • CORS ์™€์ผ๋“œ์นด๋“œ (setHeader / header ํฌํ•จ)

  • ์•ฝํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ ์ •์ฑ…

๐Ÿ“ ํŒŒ์ผ/๊ฒฝ๋กœ

  • Path Traversal (๋‹ค๋‹จ๊ณ„ ๋ณ€์ˆ˜/ํ•จ์ˆ˜ ํŒŒ๋ผ๋ฏธํ„ฐ ํ๋ฆ„ ํฌํ•จ)

  • ์œ„ํ—˜ํ•œ ํŒŒ์ผ ์‚ญ์ œ

  • ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ํŒŒ์ผ ์—…๋กœ๋“œ

  • Zip Slip (Java)

  • Pickle ์—ญ์ง๋ ฌํ™” (Python)

๐Ÿ—๏ธ Infrastructure as Code

Dockerfile (CIS Docker Benchmark):

  • root ์‚ฌ์šฉ์ž๋กœ ์‹คํ–‰

  • ํ•˜๋“œ์ฝ”๋”ฉ๋œ ์‹œํฌ๋ฆฟ

  • latest ํƒœ๊ทธ ์‚ฌ์šฉ

  • ๋ถˆํ•„์š”ํ•œ ํฌํŠธ ๋…ธ์ถœ

  • ํ—ฌ์Šค์ฒดํฌ ๋ˆ„๋ฝ

Kubernetes (Pod Security Standards):

  • Privileged ์ปจํ…Œ์ด๋„ˆ

  • Root ์‹คํ–‰

  • Host ๋„คํŠธ์›Œํฌ/PID/IPC ์‚ฌ์šฉ

  • ์œ„ํ—˜ํ•œ Capability ์ถ”๊ฐ€

  • Resource limit ๋ฏธ์„ค์ •

Terraform (Multi-Cloud):

  • ๊ณต๊ฐœ IP ํ• ๋‹น

  • ์•”ํ˜ธํ™” ๋ฏธ์„ค์ •

  • ๋ฐฉํ™”๋ฒฝ ์ „์ฒด ์˜คํ”ˆ (0.0.0.0/0)

  • Public ์ ‘๊ทผ ๊ฐ€๋Šฅ ๋ฆฌ์†Œ์Šค

๐Ÿ“ฆ ์ทจ์•ฝํ•œ ์˜์กด์„ฑ

  • npm audit ์—ฐ๋™

  • Python requirements.txt ๊ฒ€์‚ฌ

  • Go go.mod ๊ฒ€์‚ฌ

์ง€์› ์–ธ์–ด

  • โœ… JavaScript / TypeScript

  • โœ… Python

  • โœ… Java

  • โœ… Go

  • โœ… Dockerfile

  • โœ… Kubernetes YAML

  • โœ… Terraform HCL

๐ŸŽจ ๋ฆฌํฌํŠธ ํฌ๋งท

  • Markdown: ์ฝ๊ธฐ ์‰ฌ์šด ํ…์ŠคํŠธ ๋ฆฌํฌํŠธ

  • Mermaid: ์‹œ๊ฐํ™” ๋‹ค์ด์–ด๊ทธ๋žจ (Pie, Bar, Flowchart)

  • SARIF: GitHub Code Scanning / VS Code ํ˜ธํ™˜ ํฌ๋งท

  • CVE Enrichment: NVD ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๋™

  • OWASP Mapping: OWASP Top 10:2021 + CWE ๋งคํ•‘

๐Ÿณ Docker ์ƒŒ๋“œ๋ฐ•์Šค

์•…์˜์ ์ธ ์ฝ”๋“œ๋กœ๋ถ€ํ„ฐ ํ˜ธ์ŠคํŠธ๋ฅผ ๋ณดํ˜ธํ•˜๊ธฐ ์œ„ํ•ด Docker ๊ฒฉ๋ฆฌ ํ™˜๊ฒฝ์—์„œ ์Šค์บ”์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Docker ์ด๋ฏธ์ง€ ์ค€๋น„

Docker Hub์—์„œ pull (๊ถŒ์žฅ)

# ๋ฏธ๋ฆฌ ๋นŒ๋“œ๋œ ์ด๋ฏธ์ง€ ๋‹ค์šด๋กœ๋“œ (Trivy, GitLeaks, Checkov ํฌํ•จ)
docker pull ongjin/security-scanner-mcp:latest
docker tag ongjin/security-scanner-mcp:latest security-scanner-mcp:latest

ํฌํ•จ๋œ ์™ธ๋ถ€ ๋ณด์•ˆ ๋„๊ตฌ:

  • Trivy v0.50.4 - ์ปจํ…Œ์ด๋„ˆ/IaC ์ทจ์•ฝ์  ์Šค์บ๋„ˆ

  • GitLeaks v8.18.4 - ์‹œํฌ๋ฆฟ ํƒ์ง€

  • Checkov - Infrastructure as Code ๋ณด์•ˆ ์Šค์บ๋„ˆ

์†Œ์Šค์—์„œ ์ง์ ‘ ๋นŒ๋“œ (์„ ํƒ์‚ฌํ•ญ)

npm run docker:build

์ฐธ๊ณ : ๋นŒ๋“œ์—๋Š” 5-10๋ถ„ ์ •๋„ ์†Œ์š”๋˜๋ฉฐ, ์ด๋ฏธ์ง€ ํฌ๊ธฐ๋Š” ์•ฝ 500MB์ž…๋‹ˆ๋‹ค.

์ƒŒ๋“œ๋ฐ•์Šค์—์„œ ์Šค์บ” ์‹คํ–‰

Claude Code์—์„œ:

scan-in-sandbox ํ˜ธ์ถœ

๋ณด์•ˆ ์„ค์ •:

  • ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ: 128MB ~ 2GB

  • CPU ์ œํ•œ: 0.1 ~ 2.0 ์ฝ”์–ด

  • ํƒ€์ž„์•„์›ƒ: 5์ดˆ ~ 5๋ถ„

  • ๋„คํŠธ์›Œํฌ: ๊ธฐ๋ณธ ๋น„ํ™œ์„ฑํ™”

  • ํŒŒ์ผ์‹œ์Šคํ…œ: ์ฝ๊ธฐ ์ „์šฉ

  • ๊ถŒํ•œ: ์ตœ์†Œ ๊ถŒํ•œ (no-new-privileges, drop all capabilities)

๋ฐ๋ชจ

# ๋ฐ๋ชจ ์‹คํ–‰
npm run demo

์•„ํ‚คํ…์ฒ˜

src/
โ”œโ”€โ”€ index.ts                    # MCP ์„œ๋ฒ„ (12๊ฐœ ๋„๊ตฌ)
โ”œโ”€โ”€ scanners/                   # ์ฝ”๋“œ ์Šค์บ๋„ˆ (8๊ฐœ)
โ”‚   โ”œโ”€โ”€ secrets.ts
โ”‚   โ”œโ”€โ”€ injection.ts
โ”‚   โ”œโ”€โ”€ xss.ts
โ”‚   โ””โ”€โ”€ ...
โ”œโ”€โ”€ iac-scanners/              # IaC ์Šค์บ๋„ˆ (3๊ฐœ)
โ”‚   โ”œโ”€โ”€ dockerfile.ts          # 15๊ฐœ ๊ทœ์น™
โ”‚   โ”œโ”€โ”€ kubernetes.ts          # 13๊ฐœ ๊ทœ์น™
โ”‚   โ””โ”€โ”€ terraform.ts           # 15๊ฐœ ๊ทœ์น™
โ”œโ”€โ”€ remediation/               # ์ž๋™ ์ˆ˜์ •
โ”‚   โ”œโ”€โ”€ code-fixer.ts          # AST ๊ธฐ๋ฐ˜ ์ฝ”๋“œ ๋ณ€ํ™˜
โ”‚   โ””โ”€โ”€ templates/             # ์ˆ˜์ • ํ…œํ”Œ๋ฆฟ
โ”œโ”€โ”€ reporting/                 # ๋ฆฌํฌํŒ…
โ”‚   โ”œโ”€โ”€ mermaid-generator.ts   # ๋‹ค์ด์–ด๊ทธ๋žจ ์ƒ์„ฑ
โ”‚   โ”œโ”€โ”€ sarif-generator.ts     # SARIF ํฌ๋งท
โ”‚   โ””โ”€โ”€ markdown-formatter.ts
โ”œโ”€โ”€ external/                  # ์™ธ๋ถ€ API
โ”‚   โ”œโ”€โ”€ cve-lookup.ts          # NVD API ์—ฐ๋™
โ”‚   โ””โ”€โ”€ owasp-database.ts      # OWASP Top 10 DB
โ””โ”€โ”€ sandbox/                   # ์ƒŒ๋“œ๋ฐ•์Šค
    โ””โ”€โ”€ docker-manager.ts      # Docker ์‹คํ–‰ ๊ด€๋ฆฌ

๐Ÿ–ฅ๏ธ CLI ๋ชจ๋“œ (CI/CD ํ†ตํ•ฉ)

Claude ์—†์ด ๋…๋ฆฝ์ ์œผ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” CLI ๋ชจ๋“œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Jenkins, GitHub Actions, GitLab CI ๋“ฑ ์–ด๋””์„œ๋“  ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•

# ํŒŒ์ผ ์Šค์บ”
npx security-scanner-mcp scan ./src/app.js

# ๋””๋ ‰ํ† ๋ฆฌ ์Šค์บ”
npx security-scanner-mcp scan ./src

# ๊ฒฐ๊ณผ๋ฅผ ํŒŒ์ผ๋กœ ์ €์žฅ
npx security-scanner-mcp scan ./src --output report.txt

์ถœ๋ ฅ ํฌ๋งท

# JSON ํฌ๋งท (ํŒŒ์‹ฑ์šฉ)
npx security-scanner-mcp scan ./src --format json

# SARIF ํฌ๋งท (GitHub Code Scanning ํ˜ธํ™˜)
npx security-scanner-mcp scan ./src --format sarif --output report.sarif

CI/CD ์˜ต์…˜

# Critical ์ทจ์•ฝ์  ๋ฐœ๊ฒฌ ์‹œ ๋นŒ๋“œ ์‹คํŒจ (exit code 1)
npx security-scanner-mcp scan ./src --fail-on critical

# High ์ด์ƒ ์ทจ์•ฝ์  ๋ฐœ๊ฒฌ ์‹œ ๋นŒ๋“œ ์‹คํŒจ
npx security-scanner-mcp scan ./src --fail-on high

# ํŠน์ • ํŒŒ์ผ๋งŒ ํฌํ•จ
npx security-scanner-mcp scan ./src --include "*.ts,*.js"

# ํŠน์ • ํด๋” ์ œ์™ธ
npx security-scanner-mcp scan ./src --exclude "node_modules,dist,test"

Jenkins ์˜ˆ์‹œ

pipeline {
    agent any
    stages {
        stage('Security Scan') {
            steps {
                sh 'npx security-scanner-mcp scan ./src --format json --output security-report.json --fail-on high'
            }
        }
    }
    post {
        always {
            archiveArtifacts artifacts: 'security-report.json', fingerprint: true
        }
    }
}

GitHub Actions ์˜ˆ์‹œ

name: Security Scan
on: [push, pull_request]

jobs:
  security:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Run Security Scan
        run: npx security-scanner-mcp scan ./src --format sarif --output results.sarif --fail-on critical

      - name: Upload SARIF to GitHub
        uses: github/codeql-action/upload-sarif@v2
        with:
          sarif_file: results.sarif

GitLab CI ์˜ˆ์‹œ

security_scan:
  stage: test
  script:
    - npx security-scanner-mcp scan ./src --format json --output gl-security-report.json --fail-on high
  artifacts:
    reports:
      security: gl-security-report.json

๋กœ๋“œ๋งต

  • OWASP Top 10 ๊ธฐ๋ฐ˜ ๊ฒ€์‚ฌ

  • ๋‹ค์ค‘ ์–ธ์–ด ์ง€์› (JS/TS/Python/Java/Go)

  • IaC ์Šค์บ” (Dockerfile, Kubernetes, Terraform)

  • ์ž๋™ ์ˆ˜์ • ์ œ์•ˆ ๊ธฐ๋Šฅ (AST ๊ธฐ๋ฐ˜)

  • ๊ณ ๊ธ‰ ๋ฆฌํฌํŒ… (Mermaid, SARIF)

  • ์™ธ๋ถ€ ์ทจ์•ฝ์  DB ์—ฐ๋™ (NVD, OWASP)

  • Docker ์ƒŒ๋“œ๋ฐ•์Šค ์‹คํ–‰

  • CLI ๋ชจ๋“œ (CI/CD ํŒŒ์ดํ”„๋ผ์ธ ํ†ตํ•ฉ)

  • GitHub Actions Marketplace ๋“ฑ๋ก

  • VS Code ํ™•์žฅ

๊ธฐ์—ฌํ•˜๊ธฐ

PR ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค! ํŠนํžˆ ๋‹ค์Œ ๊ธฐ์—ฌ๋ฅผ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค:

  • ์ƒˆ๋กœ์šด ๋ณด์•ˆ ํŒจํ„ด ์ถ”๊ฐ€

  • ๋‹ค๋ฅธ ์–ธ์–ด ์ง€์› (Rust, C#, PHP ๋“ฑ)

  • IaC ๊ทœ์น™ ํ™•์žฅ (Ansible, CloudFormation ๋“ฑ)

  • ๋ฌธ์„œ ๊ฐœ์„ 

๋ผ์ด์„ ์Šค

MIT


Made with โค๏ธ by zerry

๋‹จ์ˆœ ์Šค์บ๋„ˆ๋ฅผ ๋„˜์–ด, ์ง€๋Šฅํ˜• ๋ณด์•ˆ ํŒŒํŠธ๋„ˆ๋กœ.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelogโ€ฆ

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      F
      maintenance
      Predeploy security scanner for AI-generated code. 80+ vulnerability patterns across secrets, auth, injection, config, Supabase, and logging. Runs locally, code never leaves your machine. Optional x402 witnessed attestation.
      193 npm
      Apache 2.0
    • A
      license
      Not graded
      quality
      C
      maintenance
      Provides AI coding assistants with real-time security scanning superpowers, including SAST, secrets detection, dependency CVE scanning, and web vulnerability assessment.
      24 npm
      Apache 2.0
    • A
      license
      Not graded
      quality
      D
      maintenance
      AI-powered security scanner for Python projects and GitHub repositories. Detects vulnerabilities, secrets, and provides AI risk assessment.
      11
      MIT