Skip to main content
Glama

๐Ÿ”’ Security Scanner MCP

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

npm version npm downloads OWASP License Node

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

AI๊ฐ€ ์ƒ์„ฑํ•œ ์ฝ”๋“œ์—๋Š” ๋ณด์•ˆ ์ทจ์•ฝ์ ์ด 322% ๋” ๋งŽ๋‹ค๋Š” ์—ฐ๊ตฌ ๊ฒฐ๊ณผ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด MCP๋Š” ์ฝ”๋“œ๋ฅผ ์ปค๋ฐ‹ํ•˜๊ธฐ ์ „์— ์ž๋™์œผ๋กœ ๋ณด์•ˆ ๊ฒ€์‚ฌ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋Šฅ

Tool

์„ค๋ช…

scan-security

์ข…ํ•ฉ ๋ณด์•ˆ ์Šค์บ”

(๋ชจ๋“  ๊ฒ€์‚ฌ๋ฅผ ํ•œ๋ฒˆ์—)

scan-secrets

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

scan-injection

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

scan-xss

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

scan-crypto

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

scan-auth

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

scan-path

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

scan-dependencies

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

์„ค์น˜

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

npm install -g security-scanner-mcp

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

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

Claude Code์— ๋“ฑ๋ก

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

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

Claude Code์—์„œ:

๋‚˜: ์ด ์ฝ”๋“œ ๋ณด์•ˆ ๊ฒ€์‚ฌํ•ด์ค˜ 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ํ•˜์„ธ์š”

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

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

  • 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

๐Ÿ’‰ Injection

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

  • NoSQL Injection (MongoDB)

  • Command Injection (exec, spawn)

๐ŸŒ XSS

  • dangerouslySetInnerHTML (React)

  • innerHTML / outerHTML

  • jQuery .html() / Vue v-html

  • eval() / new Function()

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

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

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

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

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

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

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

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

  • CORS ์™€์ผ๋“œ์นด๋“œ

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

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

  • Path Traversal

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

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

  • Zip Slip (Java)

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

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

  • npm audit ์—ฐ๋™

  • Python requirements.txt ๊ฒ€์‚ฌ

  • Go go.mod ๊ฒ€์‚ฌ

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

  • โœ… JavaScript / TypeScript

  • โœ… Python

  • โœ… Java (Spring Boot ํฌํ•จ!)

  • โœ… Go

๋ฐ๋ชจ

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

๋กœ๋“œ๋งต

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

  • ๋‹ค์ค‘ ์–ธ์–ด ์ง€์›

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

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

  • GitHub Actions ์—ฐ๋™

  • VS Code ํ™•์žฅ

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

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

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

  • ๋‹ค๋ฅธ ์–ธ์–ด ์ง€์›

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

๋ผ์ด์„ ์Šค

MIT


Made with โค๏ธ by zerry

-
security - not tested
A
license - permissive license
-
quality - not tested

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ongjin/security-scanner-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server