@@ -148,19 +148,20 @@ def __init__(
148148 enable_trivy : bool = True ,
149149 enable_checkov : bool = True ,
150150 enable_api_security : bool = True ,
151- enable_dast : bool = False ,
151+ enable_dast : bool = True ,
152152 enable_supply_chain : bool = True ,
153- enable_fuzzing : bool = False ,
153+ enable_fuzzing : bool = True ,
154154 enable_threat_intel : bool = True ,
155155 enable_remediation : bool = True ,
156- enable_runtime_security : bool = False ,
156+ enable_runtime_security : bool = True ,
157157 enable_regression_testing : bool = True ,
158158 enable_ai_enrichment : bool = True ,
159159 enable_argus : bool = False , # Use existing argus if needed
160160 enable_sandbox : bool = True , # Validate exploits in Docker sandbox
161161 enable_multi_agent : bool = True , # Use specialized agent personas
162162 enable_spontaneous_discovery : bool = True , # Discover issues beyond scanner rules
163- enable_collaborative_reasoning : bool = False , # Multi-agent discussion (opt-in, more expensive)
163+ enable_collaborative_reasoning : bool = True , # Multi-agent discussion
164+ enable_trufflehog : bool = True , # TruffleHog verified secret detection
164165 enable_iris : bool = True , # IRIS-style semantic analysis (arXiv 2405.17238)
165166 ai_provider : Optional [str ] = None ,
166167 dast_target_url : Optional [str ] = None ,
@@ -213,6 +214,7 @@ def __init__(
213214 self .enable_multi_agent = enable_multi_agent
214215 self .enable_spontaneous_discovery = enable_spontaneous_discovery
215216 self .enable_collaborative_reasoning = enable_collaborative_reasoning
217+ self .enable_trufflehog = enable_trufflehog
216218 self .enable_iris = enable_iris
217219 self .ai_provider = ai_provider
218220 self .dast_target_url = dast_target_url
@@ -232,6 +234,7 @@ def __init__(
232234 self .remediation_engine = None
233235 self .runtime_security_monitor = None
234236 self .regression_tester = None
237+ self .trufflehog_scanner = None
235238 self .sandbox_validator = None
236239 self .ai_client = None
237240
@@ -332,6 +335,16 @@ def __init__(
332335 logger .warning (f"⚠️ Semgrep scanner not available: { e } " )
333336 self .enable_semgrep = False
334337
338+ if self .enable_trufflehog :
339+ try :
340+ from trufflehog_scanner import TruffleHogScanner
341+
342+ self .trufflehog_scanner = TruffleHogScanner ()
343+ logger .info ("✅ TruffleHog scanner initialized" )
344+ except (ImportError , RuntimeError ) as e :
345+ logger .warning (f"⚠️ TruffleHog scanner not available: { e } " )
346+ self .enable_trufflehog = False
347+
335348 if self .enable_trivy :
336349 try :
337350 from trivy_scanner import TrivyScanner
@@ -539,6 +552,30 @@ def analyze(
539552 logger .error (f" ❌ Semgrep scan failed: { e } " )
540553 logger .info (" 💡 Continuing with other scanners..." )
541554
555+ # Run TruffleHog
556+ if self .enable_trufflehog and self .trufflehog_scanner :
557+ try :
558+ logger .info (" 🔍 Running TruffleHog secret scanner..." )
559+ th_result = self .trufflehog_scanner .scan (str (target_path ), scan_type = "filesystem" )
560+ th_findings_raw = th_result .get ("findings" , [])
561+ trufflehog_findings = []
562+ for f in th_findings_raw :
563+ trufflehog_findings .append (HybridFinding (
564+ finding_id = f"trufflehog-{ f .get ('detector_type' , 'unknown' )} -{ len (trufflehog_findings )} " ,
565+ source_tool = "trufflehog" ,
566+ severity = "critical" if f .get ("verified" ) else "high" ,
567+ category = "secrets" ,
568+ title = f"Secret detected: { f .get ('detector_type' , 'Unknown' )} " ,
569+ description = f"TruffleHog detected a { 'verified' if f .get ('verified' ) else 'potential' } { f .get ('detector_name' , 'secret' )} in { f .get ('file_path' , 'unknown' )} " ,
570+ file_path = f .get ("file_path" , "" ),
571+ line_number = f .get ("line" ),
572+ ))
573+ all_findings .extend (trufflehog_findings )
574+ logger .info (f" ✅ TruffleHog: { len (trufflehog_findings )} secrets detected" )
575+ except Exception as e :
576+ logger .error (f" ❌ TruffleHog scan failed: { e } " )
577+ logger .info (" 💡 Continuing with other scanners..." )
578+
542579 # Run Trivy
543580 if self .enable_trivy and self .trivy_scanner :
544581 try :
0 commit comments