Static SQL injection vulnerability scanner for code review. Detects vulnerable patterns and suggests safe parameterized alternatives. Defensive use only — does not generate exploit payloads.
Compatible Platforms any
Findings: ["메타데이터 경고: 권장 필드 없음: 'requirements' (SKILL.md v2 권장)"]
✅ No security risks found.
AI Review Stage
제출된 스킬 패키지 'sql-injection-scanner'에 대한 보안 검수 결과, 다음과 같은 판단 근거로 'approved' 판정을 내립니다. 1. **선언된 permissions(network/filesystem/subprocess)과 실제 코드 일치 여부:** * 메타데이터에 `network: false`, `filesystem: false`, `subprocess: false`로 명확히 선언되어 있습니다. * `main.py` 및 `lib` 디렉토리 내 모든 코드 파일을 검토한 결과, `requests`, `socket`, `urllib`, `subprocess`, `os.system`, `open()` (임의 파일 접근 목적), `shutil` 등 외부 통신, 파일 시스템 접근, 외부 프로세스 실행과 관련된 모듈이나 함수 호출이 전혀 발견되지 않았습니다. `os` 모듈은 `os.path.dirname`, `os.path.abspath`와 같이 현재 스크립트의 경로를 얻는 용도로만 사용되어 안전합니다. 모든 작업은 표준 라이브러리(`json`, `re`, `sys`)를 사용하여 인메모리 문자열 처리 방식으로 이루어집니다. 선언된 권한과 실제 코드가 완벽하게 일치합니다. 2. **악의적 목적의 코드 여부 (데이터 탈취, 시스템 파괴, 난독화 등):** * 스킬의 목적은 'SQL 인젝션 취약점 정적 스캐너'로, 취약점을 '탐지'하고 '안전한 대안을 제안'하는 '방어적' 도구임을 명시하고 있습니다. 공격 페이로드를 생성하지 않는다고 설명되어 있습니다. * 코드 내용 또한 사용자로부터 입력받은 코드/쿼리 문자열에 대해 정규 표현식 기반의 패턴 매칭을 수행하여 취약점을 식별하고, 미리 정의된 안전한 코드 패턴을 제안하는 로직으로 구성되어 있습니다. 데이터 탈취, 시스템 파괴, 또는 기타 악의적인 동작을 유발할 수 있는 코드는 발견되지 않았습니다. * 정적 분석 결과에서도 난독화 경고(`obfuscation_warnings`)가 없었으며, 코드 가독성도 매우 높습니다. 3. **선언되지 않은 외부 통신 여부:** * 위 1번 항목에서 언급했듯이, 네트워크 관련 모듈이나 함수 사용이 전혀 없어 선언되지 않은 외부 통신은 존재하지 않습니다. 4. **사용자 데이터를 무단으로 수집하거나 전송하는가?** * 스킬은 `stdin`으로 입력을 받아 `stdout`으로 결과를 출력하는 `stdin_stdout` 패턴을 따릅니다. 입력된 사용자 코드나 쿼리 문자열은 스킬 내부에서 분석된 후 결과와 함께 `stdout`으로 반환될 뿐, 어떠한 형태로도 외부로 전송되거나 저장되지 않습니다. 무단 데이터 수집/전송 행위는 발견되지 않았습니다. 5. **코드 품질이 스킬의 목적과 일치하는가?** * 코드는 `main.py`와 `lib` 패키지로 잘 분리되어 모듈화되어 있습니다. 각 모듈은 명확한 역할을 가지며, 주석과 타입 힌트가 잘 작성되어 있어 가독성이 높습니다. * 정규 표현식(`re` 모듈)을 활용한 패턴 매칭은 정적 코드 분석이라는 스킬의 목적에 부합하는 적절한 구현 방식입니다. * `dataclasses`를 활용하여 취약점 발견 결과를 구조화하는 등 코드 품질이 우수하며, 스킬의 설명과 예시에서 제시된 기능들을 안전하고 효율적으로 수행할 수 있도록 설계되었습니다. **결론:** 'sql-injection-scanner' 스킬은 선언된 보안 정책을 완벽하게 준수하며, 악의적인 의도나 위험한 동작 없이 사용자에게 유용한 보안 분석 기능을 제공합니다. 따라서 안전하다고 판단되어 승인합니다.
Representative input/output examples for this skill. Agents can use these to understand how to invoke the skill and what output to expect.
Python f-string으로 SQL을 조립하는 취약점을 탐지합니다 / Detects f-string SQL injection in Python
{
"action": "scan_code",
"code": "import sqlite3\n\ndef get_user(username):\n conn = sqlite3.connect(\u0027app.db\u0027)\n cursor = conn.cursor()\n query = f\"SELECT * FROM users WHERE name = \u0027{username}\u0027\"\n cursor.execute(query)\n return cursor.fetchall()\n",
"language": "python"
}
{
"action": "scan_code",
"findings": [
{
"line": 5,
"message_ko": "f-string\uc73c\ub85c SQL\uc744 \uc870\ub9bd\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \ud30c\ub77c\ubbf8\ud130\ud654 \ucffc\ub9ac\ub97c \uc0ac\uc6a9\ud558\uc138\uc694.",
"rule_id": "PY-INJ-002",
"severity": "critical"
}
],
"language_detected": "python",
"severity_counts": {
"critical": 1,
"high": 0,
"low": 0,
"medium": 0
},
"summary_en": "2 finding(s) \u2014 critical: 1, high: 0, medium: 0, low: 0",
"summary_ko": "\ucd1d 2\uac1c \ucde8\uc57d\uc810 \ubc1c\uacac (\uc2ec\uac01: 1, \ub192\uc74c: 0, \uc911\uac04: 0, \ub0ae\uc74c: 0)",
"total_findings": 2
}
Node.js에서 template literal로 SQL을 조립하는 취약점 탐지 / Detects template literal SQL injection in Node.js
{
"action": "scan_code",
"code": "const mysql = require(\u0027mysql2/promise\u0027);\n\nasync function findUser(userId) {\n const sql = `SELECT * FROM users WHERE id = ${userId}`;\n const [rows] = await pool.query(sql);\n return rows;\n}\n",
"language": "nodejs"
}
{
"action": "scan_code",
"language_detected": "nodejs",
"severity_counts": {
"critical": 1,
"high": 0,
"low": 0,
"medium": 0
},
"summary_ko": "\ucd1d 1\uac1c \ucde8\uc57d\uc810 \ubc1c\uacac (\uc2ec\uac01: 1, \ub192\uc74c: 0, \uc911\uac04: 0, \ub0ae\uc74c: 0)",
"total_findings": 1
}
단일 SQL 쿼리 문자열의 위험 패턴을 분석합니다 / Analyzes a SQL query string for injection risk signals
{
"action": "scan_query",
"query": "SELECT * FROM users WHERE id = ${userId} -- admin bypass"
}
{
"action": "scan_query",
"risk_level": "critical",
"risk_score": 90,
"summary_en": "Risk level: critical (score: 90/100). 3 signal(s) detected.",
"summary_ko": "\uc704\ud5d8\ub3c4: \uc2ec\uac01 (\uc810\uc218: 90/100). \ud0d0\uc9c0\ub41c \uc2e0\ud638 3\uac1c."
}
Python 취약 코드에 대한 안전한 파라미터화 패턴 제안 / Suggests safe parameterized patterns for Python vulnerable code
{
"action": "suggest_fix",
"language": "python",
"vulnerable_code": "cursor.execute(\"SELECT * FROM orders WHERE user_id=\" + str(user_id))\n"
}
{
"action": "suggest_fix",
"fix_summary_ko": "python \uc548\uc804 \ud328\ud134: Python DB-API 2.0 \ud30c\ub77c\ubbf8\ud130\ud654 \ucffc\ub9ac",
"general_principles_ko": [
"\uc0ac\uc6a9\uc790 \uc785\ub825\uc744 \uc808\ub300 SQL \ubb38\uc790\uc5f4\uc5d0 \uc9c1\uc811 \uc0bd\uc785\ud558\uc9c0 \ub9c8\uc138\uc694.",
"\ud56d\uc0c1 \ud30c\ub77c\ubbf8\ud130\ud654 \ucffc\ub9ac(Prepared Statement)\ub97c \uc0ac\uc6a9\ud558\uc138\uc694."
],
"language": "python",
"placeholder_style": "%s (psycopg2/MySQL) \ub610\ub294 ? (sqlite3)"
}
Java 취약 코드에 대한 PreparedStatement 패턴 제안 / Suggests PreparedStatement pattern for Java vulnerable code
{
"action": "suggest_fix",
"language": "java",
"vulnerable_code": "String sql = \"SELECT * FROM users WHERE id=\" + userId;\nStatement stmt = conn.createStatement();\nResultSet rs = stmt.executeQuery(sql);\n"
}
{
"action": "suggest_fix",
"fix_summary_ko": "java \uc548\uc804 \ud328\ud134: Java PreparedStatement \ud30c\ub77c\ubbf8\ud130\ud654 \ucffc\ub9ac (JDBC \ud45c\uc900)",
"language": "java",
"placeholder_style": "? (\uc704\uce58 \uae30\ubc18 \ud50c\ub808\uc774\uc2a4\ud640\ub354)"
}
Python 프로젝트 다중 파일의 SQL 위생 전체 감사 / Full SQL hygiene audit of multiple Python project files
{
"action": "audit",
"files": [
{
"code": "def find_user(email):\n cursor.execute(\"SELECT * FROM users WHERE email=\u0027\" + email + \"\u0027\")\n return cursor.fetchone()\n",
"filename": "models/user.py"
},
{
"code": "def search_products(name):\n stmt = db.prepare(\"SELECT id, name FROM products WHERE name = %s\")\n stmt.execute((name,))\n return stmt.fetchall()\n",
"filename": "models/product.py"
}
],
"language": "python"
}
{
"action": "audit",
"files_audited": 2,
"risk_level": "critical",
"rules_checked": 15,
"summary_ko": "\ud30c\uc77c 2\uac1c \uac10\uc0ac \uc644\ub8cc. \uc704\ud5d8\ub3c4: \uc2ec\uac01."
}
PHP mysqli 취약 패턴 탐지 및 전체 감사 / Detects PHP mysqli vulnerabilities and runs full audit
{
"action": "audit",
"files": [
{
"code": "\u003c?php\n$user = $_POST[\u0027username\u0027];\n$pass = $_POST[\u0027password\u0027];\n$sql = \"SELECT * FROM users WHERE username=\u0027$user\u0027 AND password=\u0027$pass\u0027\";\n$result = mysqli_query($conn, $sql);\n?\u003e\n",
"filename": "login.php"
}
],
"language": "php"
}
{
"action": "audit",
"files_audited": 1,
"risk_level": "critical",
"summary_ko": "\ud30c\uc77c 1\uac1c \uac10\uc0ac \uc644\ub8cc. \uc704\ud5d8\ub3c4: \uc2ec\uac01."
}
All examples are also available via the agent API:
/v1/agent/skills/2ba64873-c945-45e3-a45d-2100464ca308/schema
No reviews yet. Be the first to leave one!