Documentation
¶
Index ¶
- type AdvancedInjector
- func (i *AdvancedInjector) GenerateMultiPayload(techniqueID string, target string, context map[string]interface{}, count int) ([]string, error)
- func (i *AdvancedInjector) GeneratePayload(techniqueID string, target string, context map[string]interface{}) (string, error)
- func (i *AdvancedInjector) GetAvailableTechniques() []string
- func (i *AdvancedInjector) GetTechniques() map[string]InjectionTechnique
- func (i *AdvancedInjector) GetTechniquesByCategory(category TechniqueCategory) []string
- func (i *AdvancedInjector) GetTechniquesByRisk(maxRisk RiskLevel) []string
- func (i *AdvancedInjector) RegisterTechnique(technique InjectionTechnique)
- type AttackConfig
- type AttackResult
- type BasicSuccessDetector
- type ChainStep
- type ConditionType
- type EncodingFunc
- type Engine
- func (e *Engine) Execute(ctx context.Context, config AttackConfig) (*AttackResult, error)
- func (e *Engine) ExecuteBatch(ctx context.Context, configs []AttackConfig) ([]*AttackResult, error)
- func (e *Engine) GetTechniques() []TechniqueInfo
- func (e *Engine) SetProviderManager(pm ProviderManager)
- func (e *Engine) ValidatePayload(payload string) error
- type EngineConfig
- type EnhancedSuccessDetector
- type ErrorType
- type Evidence
- type EvidenceType
- type InMemoryMetricsCollector
- func (m *InMemoryMetricsCollector) GetAverageTime(technique string) time.Duration
- func (m *InMemoryMetricsCollector) GetSuccessRate(technique string) float64
- func (m *InMemoryMetricsCollector) GetTechniqueStats(technique string) *TechniqueStats
- func (m *InMemoryMetricsCollector) RecordAttempt(result *AttackResult)
- type InjectionChain
- type InjectionEngine
- type InjectionError
- type InjectionTechnique
- type InjectorConfig
- type Logger
- type Message
- type MetricsCollector
- type ModelBehavior
- type MutationFunc
- type ObfuscationFunc
- type Obfuscator
- type PayloadGenerator
- type PayloadGeneratorFunc
- type PayloadMutator
- type PayloadValidator
- type Provider
- type ProviderManager
- type ResponseAnalyzer
- type RiskLevel
- type StepCondition
- type SuccessDetector
- type TargetConfig
- type TechniqueCategory
- type TechniqueInfo
- type TechniqueStats
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AdvancedInjector ¶
type AdvancedInjector struct {
// contains filtered or unexported fields
}
AdvancedInjector provides sophisticated prompt injection techniques
func NewAdvancedInjector ¶
func NewAdvancedInjector(config InjectorConfig) *AdvancedInjector
NewAdvancedInjector creates a new advanced injection engine
func (*AdvancedInjector) GenerateMultiPayload ¶
func (i *AdvancedInjector) GenerateMultiPayload(techniqueID string, target string, context map[string]interface{}, count int) ([]string, error)
GenerateMultiPayload creates multiple payload variants
func (*AdvancedInjector) GeneratePayload ¶
func (i *AdvancedInjector) GeneratePayload(techniqueID string, target string, context map[string]interface{}) (string, error)
GeneratePayload creates an injection payload using specified technique
func (*AdvancedInjector) GetAvailableTechniques ¶
func (i *AdvancedInjector) GetAvailableTechniques() []string
GetAvailableTechniques returns all registered technique IDs
func (*AdvancedInjector) GetTechniques ¶
func (i *AdvancedInjector) GetTechniques() map[string]InjectionTechnique
GetTechniques returns map of all techniques (exported for demo)
func (*AdvancedInjector) GetTechniquesByCategory ¶
func (i *AdvancedInjector) GetTechniquesByCategory(category TechniqueCategory) []string
GetTechniquesByCategory returns techniques filtered by category
func (*AdvancedInjector) GetTechniquesByRisk ¶
func (i *AdvancedInjector) GetTechniquesByRisk(maxRisk RiskLevel) []string
GetTechniquesByRisk returns techniques filtered by maximum risk level
func (*AdvancedInjector) RegisterTechnique ¶
func (i *AdvancedInjector) RegisterTechnique(technique InjectionTechnique)
RegisterTechnique adds a new injection technique
type AttackConfig ¶
type AttackConfig struct {
// Target configuration
Target TargetConfig
Provider string
Model string
// Attack parameters
Technique string
Payload string
MaxAttempts int
Timeout time.Duration
// Advanced options
UseMutation bool
MutationRate float64
UseObfuscation bool
AggressivenessLevel int
// Context for the attack
Context map[string]interface{}
Metadata map[string]string
}
AttackConfig configures an injection attack
type AttackResult ¶
type AttackResult struct {
// Identification
ID string
Timestamp time.Time
// Attack details
Technique string
Payload string
// Results
Success bool
Confidence float64
Response string
// Metrics
AttemptCount int
Duration time.Duration
TokensUsed int
// Analysis
SuccessFactors []string
FailureReasons []string
// Evidence
Evidence []Evidence
// Metadata
Metadata map[string]interface{}
}
AttackResult contains the results of an injection attempt
type BasicSuccessDetector ¶
type BasicSuccessDetector struct {
// contains filtered or unexported fields
}
BasicSuccessDetector provides basic success detection
func NewBasicSuccessDetector ¶
func NewBasicSuccessDetector() *BasicSuccessDetector
func (*BasicSuccessDetector) AnalyzeEvidence ¶
func (d *BasicSuccessDetector) AnalyzeEvidence(response string) []Evidence
func (*BasicSuccessDetector) CompareResponses ¶
func (d *BasicSuccessDetector) CompareResponses(baseline, injected string) (bool, float64)
type ChainStep ¶
type ChainStep struct {
Order int
Technique string
Payload string
WaitTime time.Duration
Condition StepCondition
}
ChainStep represents a step in an injection chain
type ConditionType ¶
type ConditionType string
ConditionType defines types of step conditions
const ( AlwaysCondition ConditionType = "always" OnSuccessCondition ConditionType = "on_success" OnFailureCondition ConditionType = "on_failure" OnPatternCondition ConditionType = "on_pattern" OnConfidenceCondition ConditionType = "on_confidence" )
type Engine ¶
type Engine struct {
// contains filtered or unexported fields
}
Engine implements the InjectionEngine interface
func NewEngine ¶
func NewEngine(config EngineConfig, logger Logger) *Engine
NewEngine creates a new injection engine
func (*Engine) Execute ¶
func (e *Engine) Execute(ctx context.Context, config AttackConfig) (*AttackResult, error)
Execute runs a single injection attack
func (*Engine) ExecuteBatch ¶
func (e *Engine) ExecuteBatch(ctx context.Context, configs []AttackConfig) ([]*AttackResult, error)
ExecuteBatch runs multiple injection attempts concurrently
func (*Engine) GetTechniques ¶
func (e *Engine) GetTechniques() []TechniqueInfo
GetTechniques returns available injection techniques
func (*Engine) SetProviderManager ¶
func (e *Engine) SetProviderManager(pm ProviderManager)
SetProviderManager sets the provider manager
func (*Engine) ValidatePayload ¶
ValidatePayload checks if a payload is valid
type EngineConfig ¶
type EngineConfig struct {
MaxConcurrent int
DefaultTimeout time.Duration
RetryAttempts int
RetryDelay time.Duration
CollectMetrics bool
DebugMode bool
}
EngineConfig holds configuration for the injection engine
type EnhancedSuccessDetector ¶ added in v0.1.1
type EnhancedSuccessDetector struct {
// contains filtered or unexported fields
}
EnhancedSuccessDetector provides advanced success detection with ML-inspired techniques
func NewEnhancedSuccessDetector ¶ added in v0.1.1
func NewEnhancedSuccessDetector() *EnhancedSuccessDetector
NewEnhancedSuccessDetector creates a new enhanced detector
func (*EnhancedSuccessDetector) AnalyzeEvidence ¶ added in v0.1.1
func (d *EnhancedSuccessDetector) AnalyzeEvidence(response string) []Evidence
AnalyzeEvidence extracts detailed evidence from the response
func (*EnhancedSuccessDetector) CompareResponses ¶ added in v0.1.1
func (d *EnhancedSuccessDetector) CompareResponses(baseline, injected string) (bool, float64)
CompareResponses checks for behavior changes between baseline and injected responses
type Evidence ¶
type Evidence struct {
Type EvidenceType
Content string
Confidence float64
Explanation string
}
Evidence provides proof of successful injection
type EvidenceType ¶
type EvidenceType string
EvidenceType categorizes evidence
const ( DirectResponseEvidence EvidenceType = "direct_response" BehaviorChangeEvidence EvidenceType = "behavior_change" InstructionLeakEvidence EvidenceType = "instruction_leak" ConstraintViolationEvidence EvidenceType = "constraint_violation" OutputPatternEvidence EvidenceType = "output_pattern" )
type InMemoryMetricsCollector ¶
type InMemoryMetricsCollector struct {
// contains filtered or unexported fields
}
InMemoryMetricsCollector provides in-memory metrics collection
func NewInMemoryMetricsCollector ¶
func NewInMemoryMetricsCollector() *InMemoryMetricsCollector
func (*InMemoryMetricsCollector) GetAverageTime ¶
func (m *InMemoryMetricsCollector) GetAverageTime(technique string) time.Duration
func (*InMemoryMetricsCollector) GetSuccessRate ¶
func (m *InMemoryMetricsCollector) GetSuccessRate(technique string) float64
func (*InMemoryMetricsCollector) GetTechniqueStats ¶
func (m *InMemoryMetricsCollector) GetTechniqueStats(technique string) *TechniqueStats
func (*InMemoryMetricsCollector) RecordAttempt ¶
func (m *InMemoryMetricsCollector) RecordAttempt(result *AttackResult)
type InjectionChain ¶
InjectionChain represents a multi-step injection attack
type InjectionEngine ¶
type InjectionEngine interface {
// Execute runs an injection attack
Execute(ctx context.Context, config AttackConfig) (*AttackResult, error)
// ExecuteBatch runs multiple injection attempts
ExecuteBatch(ctx context.Context, configs []AttackConfig) ([]*AttackResult, error)
// GetTechniques returns available injection techniques
GetTechniques() []TechniqueInfo
// ValidatePayload checks if a payload is valid
ValidatePayload(payload string) error
}
InjectionEngine defines the interface for injection attacks
type InjectionError ¶
Error types
func (*InjectionError) Error ¶
func (e *InjectionError) Error() string
type InjectionTechnique ¶
type InjectionTechnique struct {
ID string
Name string
Description string
Category TechniqueCategory
Risk RiskLevel
Generator PayloadGeneratorFunc
Validator PayloadValidator
Examples []string
}
InjectionTechnique represents a specific injection method
type InjectorConfig ¶
type InjectorConfig struct {
AggressivenessLevel int // 1-10, higher = more aggressive
TargetModel string // Model-specific optimizations
MaxAttempts int // Max injection attempts
MutationRate float64 // Payload mutation probability
SuccessPatterns []string // Patterns indicating success
CustomTechniques []InjectionTechnique // User-defined techniques
}
InjectorConfig holds configuration for the injection engine
type Logger ¶
type Logger interface {
Debug(msg string, keysAndValues ...interface{})
Info(msg string, keysAndValues ...interface{})
Warn(msg string, keysAndValues ...interface{})
Error(msg string, keysAndValues ...interface{})
}
Logger defines logging interface
type MetricsCollector ¶
type MetricsCollector interface {
// RecordAttempt logs an injection attempt
RecordAttempt(result *AttackResult)
// GetSuccessRate returns success rate for a technique
GetSuccessRate(technique string) float64
// GetAverageTime returns average execution time
GetAverageTime(technique string) time.Duration
// GetTechniqueStats returns detailed statistics
GetTechniqueStats(technique string) *TechniqueStats
}
MetricsCollector collects attack metrics
type ModelBehavior ¶ added in v0.1.1
type ModelBehavior struct {
TypicalRefusalPhrases []string
SafetyDisclaimer []string
HelpfulnessIndicators []string
ComplianceIndicators []string
}
ModelBehavior defines expected behaviors for different models
type MutationFunc ¶
type ObfuscationFunc ¶
type Obfuscator ¶
type Obfuscator struct {
// contains filtered or unexported fields
}
Obfuscator handles text obfuscation
func NewObfuscator ¶
func NewObfuscator() *Obfuscator
func (*Obfuscator) Obfuscate ¶
func (o *Obfuscator) Obfuscate(text string) string
type PayloadGenerator ¶
type PayloadGenerator interface {
// Generate creates a new payload
Generate(technique string, target string, context map[string]interface{}) (string, error)
// GenerateVariants creates multiple payload variants
GenerateVariants(technique string, target string, count int) ([]string, error)
// Mutate modifies an existing payload
Mutate(payload string) string
// Obfuscate applies obfuscation to a payload
Obfuscate(payload string) string
}
PayloadGenerator generates injection payloads
type PayloadGeneratorFunc ¶
PayloadGeneratorFunc creates injection payloads
type PayloadMutator ¶
type PayloadMutator struct {
// contains filtered or unexported fields
}
PayloadMutator handles payload mutations
func NewPayloadMutator ¶
func NewPayloadMutator(rate float64) *PayloadMutator
func (*PayloadMutator) Mutate ¶
func (m *PayloadMutator) Mutate(payload string) string
type PayloadValidator ¶
PayloadValidator checks if a payload is valid
type Provider ¶
type Provider interface {
Query(ctx context.Context, messages []Message, options map[string]interface{}) (string, error)
GetModel() string
GetTokenCount(text string) int
}
Provider represents an LLM provider
type ProviderManager ¶
type ProviderManager interface {
GetProvider(name string) (Provider, error)
ListProviders() []string
}
ProviderManager manages LLM provider connections
type ResponseAnalyzer ¶
type ResponseAnalyzer struct {
// contains filtered or unexported fields
}
ResponseAnalyzer analyzes responses for success indicators
func NewResponseAnalyzer ¶
func NewResponseAnalyzer(patterns []string) *ResponseAnalyzer
func (*ResponseAnalyzer) AnalyzeResponse ¶
func (a *ResponseAnalyzer) AnalyzeResponse(response string) (bool, float64)
type StepCondition ¶
type StepCondition struct {
Type ConditionType
PreviousResult string // e.g., "success", "failure", "partial"
ResponsePattern string // regex pattern
MinConfidence float64
}
StepCondition defines when a step should execute
type SuccessDetector ¶
type SuccessDetector interface {
// Detect checks if an injection was successful
Detect(response string, expectedBehavior string) (bool, float64)
// AnalyzeEvidence extracts evidence from response
AnalyzeEvidence(response string) []Evidence
// CompareResponses checks behavior change
CompareResponses(baseline, injected string) (changed bool, confidence float64)
}
SuccessDetector analyzes responses for success indicators
type TargetConfig ¶
type TargetConfig struct {
// What we want the model to do
Objective string
// Expected behavior if successful
SuccessIndicators []string
// Context to work with
SystemPrompt string
History []Message
}
TargetConfig defines the target for injection
type TechniqueCategory ¶
type TechniqueCategory string
TechniqueCategory categorizes injection techniques
const ( TokenSmugglingCategory TechniqueCategory = "token_smuggling" EncodingExploitCategory TechniqueCategory = "encoding_exploit" ContextManipulationCategory TechniqueCategory = "context_manipulation" InstructionHierarchyCategory TechniqueCategory = "instruction_hierarchy" BoundaryConfusionCategory TechniqueCategory = "boundary_confusion" SemanticTrickCategory TechniqueCategory = "semantic_trick" )