Skip to main content
Glama
README.mdโ€ข5.69 kB
# ๐Ÿ”’ Security Scanner MCP AI๊ฐ€ ์ƒ์„ฑํ•œ ์ฝ”๋“œ์˜ ๋ณด์•ˆ ์ทจ์•ฝ์ ์„ ์ž๋™์œผ๋กœ ๊ฒ€์ถœํ•˜๋Š” MCP ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค. [![npm version](https://img.shields.io/npm/v/security-scanner-mcp)](https://www.npmjs.com/package/security-scanner-mcp) [![npm downloads](https://img.shields.io/npm/dm/security-scanner-mcp)](https://www.npmjs.com/package/security-scanner-mcp) ![OWASP](https://img.shields.io/badge/OWASP-Top%2010-red) ![License](https://img.shields.io/badge/license-MIT-blue) ![Node](https://img.shields.io/badge/node-%3E%3D18-green) ## Demo <!-- Add your demo GIF here --> ![K8s Doctor Demo](./docs/demo.gif) ## ์™œ ํ•„์š”ํ•œ๊ฐ€์š”? 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์—์„œ ์„ค์น˜ (๊ถŒ์žฅ) ```bash npm install -g security-scanner-mcp ``` ### ๋˜๋Š” ์†Œ์Šค์—์„œ ๋นŒ๋“œ ```bash git clone https://github.com/ongjin/security-scanner-mcp.git cd security-scanner-mcp npm install && npm run build ``` ## Claude Code์— ๋“ฑ๋ก ```bash # 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`** ํ•˜๋‚˜๋งŒ ํ—ˆ์šฉํ•ด๋„ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋„๊ตฌ๊ฐ€ ๋ชจ๋“  ๋ณด์•ˆ ๊ฒ€์‚ฌ๋ฅผ ํ†ตํ•ฉํ•ด์„œ ์ˆ˜ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ## ์‚ฌ์šฉ ์˜ˆ์‹œ 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 ## ๋ฐ๋ชจ ```bash # ๋ฐ๋ชจ ์‹คํ–‰ npm run demo ``` ## ๋กœ๋“œ๋งต - [x] OWASP Top 10 ๊ธฐ๋ฐ˜ ๊ฒ€์‚ฌ - [x] ๋‹ค์ค‘ ์–ธ์–ด ์ง€์› - [ ] ์™ธ๋ถ€ ์ทจ์•ฝ์  DB ์—ฐ๋™ (NVD, OSV) - [ ] ์ž๋™ ์ˆ˜์ • ์ œ์•ˆ ๊ธฐ๋Šฅ - [ ] GitHub Actions ์—ฐ๋™ - [ ] VS Code ํ™•์žฅ ## ๊ธฐ์—ฌํ•˜๊ธฐ PR ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค! ํŠนํžˆ ๋‹ค์Œ ๊ธฐ์—ฌ๋ฅผ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค: - ์ƒˆ๋กœ์šด ๋ณด์•ˆ ํŒจํ„ด ์ถ”๊ฐ€ - ๋‹ค๋ฅธ ์–ธ์–ด ์ง€์› - ๋ฌธ์„œ ๊ฐœ์„  ## ๋ผ์ด์„ ์Šค MIT --- Made with โค๏ธ by zerry

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