소스 정보
- 저장소
- AJBcoding/claude-skill-eval
- 최근 소스 활동
- 2025년 11월 18일 19:33
- 감지된 SKILL.md 언어
- 영어
- 스타
- 4
- 포크
- 1
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
메뉴
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/AJBcoding/claude-skill-eval --skill moai-security-threat명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
Enterprise database architecture specialist with PostgreSQL 17, MySQL 8.4 LTS, MongoDB 8.0, Redis 7.4 expertise. Master connection pooling, query optimization, caching strategies, and database DevOps automation. Build scalable, resilient database systems with comprehensive monitoring and disaster recovery.
Enterprise Frontend Development with AI-powered modern architecture, Context7 integration, and intelligent component orchestration for scalable user interfaces
Enterprise-grade security expertise with production-ready patterns for OWASP Top 10 2021, zero-trust architecture, threat modeling (STRIDE, PASTA), secure SDLC, DevSecOps automation, cloud security, cryptography, identity & access management, and compliance frameworks (SOC 2, ISO 27001, GDPR, CCPA).
SOC 직업 분류 기준
SKILL.md 표시 중
| name | moai-security-threat |
| version | 4.0.0 |
| status | stable |
| description | Enterprise Skill for advanced development |
| allowed-tools | Read, Bash, WebSearch, WebFetch |
Systematic Threat Modeling with STRIDE & Network Intrusion Detection
Trust Score: 9.8/10 | Version: 4.0.0 | Enterprise Mode | Last Updated: 2025-11-12
Threat modeling methodology using STRIDE framework combined with network-based and application-layer intrusion detection. Covers Data Flow Diagrams (DFD), attack tree analysis, vulnerability mapping, and custom IDS/IPS rule writing with Snort 3.x, Suricata 7.x, and ModSecurity 3.x.
When to use this Skill:
S - Spoofing: Pretending to be someone else
Example: Attacker uses stolen credentials
Mitigation: Multi-factor authentication, digital signatures
T - Tampering: Modifying data in transit or at rest
Example: Man-in-the-middle modifies API response
Mitigation: Encryption, integrity checks, TLS
R - Repudiation: Denying responsibility for actions
Example: User claims they didn't perform action
Mitigation: Audit logging, non-repudiation tokens
I - Information Disclosure: Leaking sensitive data
Example: Attacker reads unencrypted database
Mitigation: Encryption, access control, data masking
D - Denial of Service (DoS): Preventing access to service
Example: Botnet floods API with requests
Mitigation: Rate limiting, DDoS protection, auto-scaling
E - Elevation of Privilege: Gaining higher access than permitted
Example: Regular user becomes admin
Mitigation: Least privilege, RBAC, privilege escalation prevention
User
↓ [Request] → API Gateway
↓ [Route]
Web Server
↓ [Query]
Database
↓ [Return]
Web Server
↓ [Response]
User ← [HTTP Response]
Threats:
- Spoofing: User with stolen credentials → need MFA
- Tampering: Request/response interception → need TLS
- I-Disclosure: Database exposed → need encryption + access control
- DoS: Gateway overloaded → need rate limiting
- Elevation: Web server compromise → need container security
class STRIDEThreatModel {
constructor(systemName) {
this.systemName = systemName;
this.threats = [];
this.mitigations = [];
}
identifyThreats(asset, category) {
const threatPatterns = {
'Spoofing': {
examples: ['fake credentials', 'DNS spoofing', 'IP spoofing'],
controls: ['MFA', 'Digital signatures', 'DNS validation'],
},
'Tampering': {
examples: ['data modification', 'MITM', 'code injection'],
controls: ['TLS', 'Checksums', 'Code signing'],
},
'Repudiation': {
examples: ['deny actions', 'unauthorized transactions'],
controls: ['Audit logging', 'Digital signatures', 'Timestamps'],
},
'InformationDisclosure': {
examples: ['data leaks', 'SQL injection', 'exposed APIs'],
controls: ['Encryption', 'Access control', 'Input validation'],
},
: {
: [, ],
: [, , ],
},
: {
: [, ],
: [, , ],
},
};
patterns = threatPatterns[category];
{
asset,
category,
: patterns.,
: patterns.,
};
}
() {
{
: rootThreat,
: [
{
: ,
: [
,
,
,
],
: ,
: ,
},
],
};
}
() {
likelihood = { : , : , : };
impact = { : , : , : };
exposure = threat. ? : ;
likelihood[threat.] * impact[threat.] * exposure;
}
}
threatModel = ();
threats = [
threatModel.(, ),
threatModel.(, ),
threatModel.(, ),
];
threats.( {
.();
.();
});
# Snort rule syntax for network-based intrusion detection
# Format: action protocol source_ip source_port -> dest_ip dest_port (options)
# Rule 1: Detect SQL injection in HTTP requests
alert http any any -> any any (
msg:"Possible SQL Injection Attempt";
flow:to_server,established;
content:"GET"; http_method;
pcre:"/\bunion\b.*\bselect\b/i";
sid:1000001;
rev:1;
priority:1;
)
# Rule 2: Detect XXE (XML External Entity) attacks
alert http any any -> any any (
msg:"XXE Attack Detected";
content:"POST"; http_method;
content:"Content-Type|3a|"; http_header;
content:"xml"; http_header;
pcre:"<!ENTITY.*SYSTEM|<!DOCTYPE.*SYSTEM/i";
sid:1000002;
rev:1;
priority:1;
)
# Rule 3: Detect SSRF to AWS metadata service
alert http any any -> any any (
msg:"SSRF to AWS Metadata Service";
content:"GET"; http_method;
http_uri; content:"169.254.169.254";
sid:1000003;
rev:1;
priority:1;
)
# Rule 4: Detect command injection in user input
alert http any any -> any any (
msg:"Command Injection Detected";
content:"POST"; http_method;
pcre:"/(;|\||&|\$\(|`).*(cat|ls|whoami|id|bash)/i";
sid:1000004;
rev:1;
priority:1;
)
// Suricata configuration (YAML format, faster than Snort)
const suricataConfig = `
rules-files:
- rule-file: /etc/suricata/rules/web-app-threats.rules
- rule-file: /etc/suricata/rules/ssrf-detection.rules
- rule-file: /etc/suricata/rules/injection-attacks.rules
# Suricata handles multi-core natively
threading:
set-cpu-affinity: 'yes'
cpu-set: "0,1,2,3,4,5,6,7"
# Output to JSON for SIEM integration
outputs:
- eve-log:
enabled: yes
filetype: regular
filename: eve.json
types:
- alert
- http
- fileinfo
- dns
`;
class SuricataRuleManager {
constructor() {
this.rules = [];
}
addRule(ruleStr) {
// Parse and add Suricata/Snort rule
const regex = /^(alert|drop|pass|reject) (\w+) (\S+) (\S+) (->|<>) (\S+) (\S+)/;
const match = ruleStr.match(regex);
if (match) {
this.rules.push({
action: match[1],
protocol: match[2],
src_ip: match[3],
src_port: match[4],
dest_ip: match[6],
dest_port: match[7],
});
}
}
// Enable rules for fast-movers (zero-days)
enableEmergencyRules() {
const rules = this.rules.filter( => r. === );
.();
}
}
// ModSecurity WAF configuration for application layer protection
const modsecurityConfig = `
# ModSecurity 3.x rules - Application layer (Layer 7)
# SecRule - Core rule syntax
# Pattern: SecRule [variables] [@operator] "[pattern]" "id:[id],phase:[2-4],action,msg,..."
# Rule: Detect basic SQL injection
SecRule ARGS "@rx (?i:union.*select|select.*from|insert.*into)" \
"id:100001,phase:2,deny,status:403,msg:'SQL Injection'"
# Rule: Detect XSS payload
SecRule ARGS "@rx (?i:<script|javascript:|onerror=)" \
"id:100002,phase:2,deny,status:403,msg:'XSS Detected'"
# Rule: Command injection detection
SecRule ARGS "@rx (?i:;\\s*(cat|ls|rm|whoami|id|bash))" \
"id:100003,phase:2,deny,status:403,msg:'Command Injection'"
# Rule: Rate limiting per IP
SecAction "id:100004,phase:1,nolog,pass,\
setvar:ip.request_count=+1,\
expirevar:ip.request_count=60"
SecRule ip:request_count "@gt 100" \
"id:100005,phase:2,deny,status:429,msg:'Rate limit exceeded'"
# Rule: Detect path traversal
SecRule URI "@rx \\.\\./|\\.\\.%2f" \
"id:100006,phase:2,deny,status:403,msg:'Path Traversal'"
# Rule: Protect sensitive endpoints
SecRule REQUEST_URI "@rx /admin|/internal|/api/secret" \
"id:100007,phase:2,require:secure,msg:'HTTPS Required for sensitive endpoint'"
`;
// ModSecurity implementation
class ModSecurityWAF {
constructor() {
this.rules = [];
}
applyRules(request) {
const violations = [];
// Check each rule
for (const rule of this.rules) {
const matches = this.matchRule(request, rule);
if (matches) {
violations.push({
ruleId: rule.id,
message: rule.msg,
action: rule.action,
});
}
}
violations;
}
() {
(rule. === ) {
.(
.(request.)
);
}
;
}
}
const { Context7Client } = require('context7-mcp');
class ThreatIntelligenceIntegration {
constructor(apiKey) {
this.context7 = new Context7Client(apiKey);
this.threatCache = new Map();
}
// Query threat intelligence for IOCs (Indicators of Compromise)
async checkThreat(ioc) {
const cacheKey = ioc.hash || ioc.ip || ioc.domain;
if (this.threatCache.has(cacheKey)) {
return this.threatCache.get(cacheKey);
}
const threat = await this.context7.query({
type: 'ioc_reputation',
...ioc,
tags: ['malware', 'c2_server', 'botnet'],
});
// Cache for 24 hours
this.threatCache.set(cacheKey, threat);
setTimeout(
() => ..(cacheKey),
);
threat;
}
() {
threat = .({
: alert.,
: alert.,
});
{
...alert,
: threat.,
: threat.,
: .(threat.),
};
}
() {
actions = {
: ,
: ,
: ,
: ,
};
actions[severity] || ;
}
}
| Tool | Layer | Use Case |
|---|---|---|
| Snort 3.x | Network (L3/4) | IDS/IPS |
| Suricata 7.x | Network (L3/4) | IDS/IPS (multi-core) |
| ModSecurity | Application (L7) | WAF |
| Context7 | Intelligence | Threat enrichment |