Sensitive Information Disclosure
Category: Data Exfiltration & Credential Theft
Severity: High
Description
Unintended exposure of confidential data through MCP tool responses, logging mechanisms, or error messages, leading to information disclosure that compromises data confidentiality.
Technical Details
Attack Vector
- Sensitive data in tool responses
- Information leakage through logs
- Error message disclosure
- Debugging information exposure
Common Techniques
- Response data mining
- Log file analysis
- Error message extraction
- Debug information harvesting
Impact
- Data Disclosure: Confidential information exposed
- Privacy Violation: Personal data compromised
- Compliance Breach: Regulatory violations
- Intelligence Gathering: Sensitive business information exposed
Detection Methods
Response Monitoring
- Monitor tool responses for sensitive data
- Scan logs for information disclosure
- Analyze error messages for data leakage
- Track information exposure patterns
Content Analysis
- Analyze response content for sensitive patterns
- Monitor log content for disclosure
- Detect information leakage patterns
- Track data exposure incidents
Mitigation Strategies
Data Protection
- Implement response sanitization
- Use data classification systems
- Deploy information filtering
- Monitor data disclosure
Output Security
- Secure logging mechanisms
- Implement error message sanitization
- Use response validation
- Deploy output monitoring
Real-World Examples
Example 1: Response Data Leakage
def get_user_info(user_id):
user = database.get_user(user_id)
# Sensitive data exposed in response
return {
'name': user.name,
'email': user.email,
'ssn': user.ssn, # Sensitive data exposed
'credit_card': user.credit_card, # Sensitive data exposed
'password_hash': user.password_hash # Sensitive data exposed
}
Example 2: Log Information Disclosure
def process_payment(payment_data):
# Sensitive data logged
logger.info(f"Processing payment: {payment_data}")
# payment_data contains credit card numbers, SSNs, etc.
return process_transaction(payment_data)
Example 3: Error Message Exposure
def connect_to_database():
try:
return database.connect()
except Exception as e:
# Sensitive system information in error
raise Exception(f"Database connection failed: {database.connection_string}, error: {str(e)}")
References & Sources
- Prompt Security - “Top 10 MCP Security Risks You Need to Know”
- Writer - “Model Context Protocol (MCP) security”
- Red Hat - “Model Context Protocol (MCP): Understanding security risks and controls”
Related TTPs
Sensitive information disclosure represents a critical threat to data confidentiality and privacy in MCP systems.