--- name: dcyfr-security description: CodeQL suppressions, security vulnerability troubleshooting, and security best practices compatibility: opencode metadata: audience: developers workflow: security category: security --- ## What I do I guide security practices and CodeQL false positive suppression: - **CodeQL suppressions** with LGTM syntax - **Security vulnerability troubleshooting** (SSRF, CWE-918) - **False positive patterns** and verification - **Security testing** patterns ## When to use me ✅ **Use this skill when:** - Suppressing CodeQL false positives - Investigating security alerts - Implementing security fixes - Reviewing security-sensitive code ❌ **Don't use this skill for:** - General code review (use dcyfr-validation) - Performance issues (separate concern) - Non-security bugs ## CodeQL Suppression Syntax ### Basic Suppression ```typescript // lgtm[js/path-injection] const filePath = path.join(baseDir, userInput); ``` ### With Justification ```typescript // lgtm[js/sql-injection]: Input validated by schema const query = `SELECT * FROM users WHERE id = ${userId}`; ``` ### Multiple Alerts ```typescript // lgtm[js/path-injection,js/sql-injection] const result = await processInput(userInput); ``` ## Common False Positives ### 1. Path Injection (Safe) ```typescript // lgtm[js/path-injection]: userInput validated against allowlist const filePath = path.join(PUBLIC_DIR, userInput); ``` ### 2. SQL Injection (Parameterized) ```typescript // lgtm[js/sql-injection]: Using parameterized query await db.query('SELECT * FROM users WHERE id = $1', [userId]); ``` ### 3. XSS (React Auto-Escapes) ```typescript // lgtm[js/xss]: React auto-escapes JSX content