| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- #!/bin/bash
- # Quick security scan using grep patterns
- # Usage: ./security-scan.sh [directory]
- set -e
- DIR="${1:-.}"
- RED='\033[0;31m'
- YELLOW='\033[1;33m'
- GREEN='\033[0;32m'
- NC='\033[0m'
- echo "=== Security Scan: $DIR ==="
- echo ""
- ISSUES=0
- check_pattern() {
- local name="$1"
- local pattern="$2"
- local type="$3"
- echo -n "Checking: $name... "
- if rg -l "$pattern" "$DIR" --type "$type" 2>/dev/null | head -5 | grep -q .; then
- echo -e "${RED}FOUND${NC}"
- rg -n "$pattern" "$DIR" --type "$type" 2>/dev/null | head -10
- echo ""
- ISSUES=$((ISSUES + 1))
- else
- echo -e "${GREEN}OK${NC}"
- fi
- }
- # Python checks
- echo "--- Python Security Checks ---"
- check_pattern "Hardcoded secrets" "(password|secret|api_key|token)\s*=\s*['\"][^'\"]{8,}['\"]" "py"
- check_pattern "SQL injection (f-strings)" "execute\(f['\"]" "py"
- check_pattern "SQL injection (format)" "execute\(.*\.format\(" "py"
- check_pattern "eval() usage" "\beval\s*\(" "py"
- check_pattern "exec() usage" "\bexec\s*\(" "py"
- check_pattern "pickle.loads" "pickle\.loads?\(" "py"
- check_pattern "os.system" "os\.system\(" "py"
- check_pattern "shell=True" "subprocess.*shell\s*=\s*True" "py"
- check_pattern "MD5 hashing" "hashlib\.md5\(" "py"
- check_pattern "SHA1 hashing" "hashlib\.sha1\(" "py"
- echo ""
- # JavaScript checks
- echo "--- JavaScript Security Checks ---"
- check_pattern "innerHTML" "\.innerHTML\s*=" "js"
- check_pattern "eval() usage" "\beval\s*\(" "js"
- check_pattern "document.write" "document\.write\(" "js"
- echo ""
- # General checks
- echo "--- General Security Checks ---"
- echo -n "Checking: .env files in git... "
- if git ls-files | grep -E "\.env$|\.env\." | grep -q .; then
- echo -e "${RED}FOUND${NC}"
- git ls-files | grep -E "\.env$|\.env\."
- ISSUES=$((ISSUES + 1))
- else
- echo -e "${GREEN}OK${NC}"
- fi
- echo -n "Checking: TODO/FIXME security items... "
- if rg -i "TODO.*security|FIXME.*security|HACK.*security" "$DIR" 2>/dev/null | head -5 | grep -q .; then
- echo -e "${YELLOW}FOUND${NC}"
- rg -i "TODO.*security|FIXME.*security|HACK.*security" "$DIR" 2>/dev/null | head -10
- ISSUES=$((ISSUES + 1))
- else
- echo -e "${GREEN}OK${NC}"
- fi
- echo ""
- echo "=== Summary ==="
- if [ $ISSUES -eq 0 ]; then
- echo -e "${GREEN}No issues found!${NC}"
- exit 0
- else
- echo -e "${RED}Found $ISSUES potential security issues${NC}"
- echo "Review the findings above and address any real vulnerabilities."
- exit 1
- fi
|