WEB-DATA-01 & WEB-LOG-01
Data Exposure & Logging
CMU540: Cyber Security - Session 8
Birmingham Newman University
Lecturer: James Williams
Understanding data protection and security logging implementation
3-hour session • 30 slides • 2 interactive tasks
Session Timeline:
- 10 min: Registration & waiting
- 20 min: Opening slides
- 45 min: Task 1
- 15 min: Break/Catch up
- 20 min: Secondary slides
- 45 min: Task 2
- Remaining: Self-study
Learning Objectives
- Understand OWASP A08: Data Exposure & A09: Logging
- Identify data exposure vulnerabilities
- Learn secure logging practices
- Practice vulnerability discovery using OS³ Studio
- Implement secure data protection and logging
- Explore career opportunities in data security
OWASP A08: Data Exposure & A09: Logging
A08: Sensitive data exposure occurs when applications don't properly protect sensitive information
A09: Insufficient logging allows attackers to persist undetected
Key Areas:
- Data encryption and protection
- Logging and monitoring
- Data classification
- Audit trails
Real-World Impact
Notable Breaches:
- Facebook (2019): 540M records stored in plaintext
- Marriott (2018): 500M records exposed due to poor logging
- Capital One (2019): 100M records exposed via misconfigured logging
Impact: Data breaches, regulatory fines, reputation damage
Common Data Exposure Vulnerabilities
1. Unencrypted Data Storage
<!-- VULNERABLE: Plaintext storage -->
CREATE TABLE users (
id INT,
username VARCHAR(50),
password VARCHAR(50), -- Plaintext
ssn VARCHAR(20), -- Plaintext
credit_card VARCHAR(20) -- Plaintext
);
<!-- SECURE: Encrypted storage -->
CREATE TABLE users (
id INT,
username VARCHAR(50),
password_hash VARCHAR(255), -- Hashed
ssn_encrypted BLOB, -- Encrypted
credit_card_encrypted BLOB -- Encrypted
);
2. Weak Encryption
<!-- VULNERABLE: Weak encryption -->
MD5(password) // Easily cracked
DES(data) // 56-bit key
<!-- SECURE: Strong encryption -->
bcrypt(password, 12) // Adaptive hashing
AES-256-GCM(data) // Strong encryption
Data Classification
1. Data Sensitivity Levels
<!-- Data classification levels -->
PUBLIC: No restrictions
INTERNAL: Company use only
CONFIDENTIAL: Limited access
RESTRICTED: Highest security
<!-- Implementation -->
if (data.classification === 'RESTRICTED') {
requireStrongAuthentication();
requireEncryption();
logAccess(data, user);
}
2. Data Handling Policies
- Encrypt sensitive data at rest
- Use secure transmission protocols
- Implement access controls
- Regular data audits
Common Logging Vulnerabilities
1. Insufficient Logging
<!-- VULNERABLE: No security logging -->
app.post('/login', (req, res) => {
const { username, password } = req.body;
if (authenticate(username, password)) {
res.json({ success: true });
} else {
res.json({ success: false });
}
});
<!-- SECURE: Comprehensive logging -->
app.post('/login', (req, res) => {
const { username, password } = req.body;
if (authenticate(username, password)) {
logger.info('Successful login', { username, ip: req.ip });
res.json({ success: true });
} else {
logger.warn('Failed login attempt', { username, ip: req.ip });
res.json({ success: false });
}
});
2. Log Injection
<!-- VULNERABLE: Log injection -->
logger.info('User action: ' + userInput);
<!-- Malicious input -->
userInput = 'admin\n[ERROR] System compromised'
<!-- SECURE: Sanitized logging -->
logger.info('User action: %s', sanitize(userInput));
Secure Logging Practices
1. Structured Logging
<!-- SECURE: Structured logging -->
const winston = require('winston');
const logger = winston.createLogger({
level: 'info',
format: winston.format.combine(
winston.format.timestamp(),
winston.format.json()
),
transports: [
new winston.transports.File({ filename: 'security.log' })
]
});
logger.info('Security event', {
event: 'login_attempt',
user: username,
ip: req.ip,
success: false
});
2. Log Retention and Rotation
<!-- SECURE: Log rotation -->
const winston = require('winston');
const logger = winston.createLogger({
transports: [
new winston.transports.DailyRotateFile({
filename: 'logs/security-%DATE%.log',
datePattern: 'YYYY-MM-DD',
maxSize: '20m',
maxFiles: '14d'
})
]
});
Data Encryption Implementation
1. Database Encryption
<!-- SECURE: Database encryption -->
const crypto = require('crypto');
function encryptData(data, key) {
const iv = crypto.randomBytes(16);
const cipher = crypto.createCipher('aes-256-gcm', key);
let encrypted = cipher.update(data, 'utf8', 'hex');
encrypted += cipher.final('hex');
return {
encrypted,
iv: iv.toString('hex')
};
}
function decryptData(encryptedData, key, iv) {
const decipher = crypto.createDecipher('aes-256-gcm', key);
let decrypted = decipher.update(encryptedData, 'hex', 'utf8');
decrypted += decipher.final('utf8');
return decrypted;
}
2. Field-Level Encryption
<!-- SECURE: Field-level encryption -->
// Store encrypted SSN
const encryptedSSN = encryptData(user.ssn, process.env.ENCRYPTION_KEY);
await db.users.create({
username: user.username,
ssn_encrypted: encryptedSSN.encrypted,
ssn_iv: encryptedSSN.iv
});
// Retrieve and decrypt
const user = await db.users.findById(id);
const decryptedSSN = decryptData(user.ssn_encrypted, process.env.ENCRYPTION_KEY, user.ssn_iv);
Career Opportunities in Data Security
Data Security Roles:
- Data Protection Officer: £50,000 - £100,000
- Privacy Engineer: £45,000 - £90,000
- Security Engineer: £40,000 - £80,000
- Compliance Specialist: £35,000 - £70,000
- Data Analyst: £30,000 - £60,000
Skills Needed: Data protection, Privacy regulations, Encryption, Compliance
OS³ Newman Cyber Security Lab
WEB-DATA-01 & WEB-LOG-01 Lab Environment
Our OS³ Studio provides hands-on experience with:
- Applications with data exposure vulnerabilities
- Insufficient logging implementations
- Secure data protection challenges
- Logging and monitoring best practices
Access: Available through university portal
Web Demos and Tools
Data Security Tools:
- Burp Suite - Web application security testing
- OWASP ZAP - Open source web app scanner
- Logstash - Log processing and analysis
- Splunk - Security information and event management
- Graylog - Open source log management
Case Study: Capital One Breach
2019 Capital One Data Breach
- Impact: 100 million records exposed
- Cause: Misconfigured logging in AWS S3
- Method: Server-side request forgery (SSRF)
- Cost: $190 million in settlements
Lesson: Misconfigured logging can lead to massive data exposure
Summary: Common Data & Logging Issues
Key Vulnerabilities to Look For:
- Unencrypted sensitive data storage
- Weak encryption algorithms
- Insufficient logging and monitoring
- Log injection vulnerabilities
- Missing data classification
- Inadequate access controls
- Poor log retention policies
Task 1: Data Exposure & Logging Vulnerability Discovery
Objective:
Use OS³ Studio to identify data exposure vulnerabilities and insufficient logging in the lab environment.
Instructions:
- Access the OS³ Studio vulnerable application
- Look for unencrypted sensitive data
- Test for weak encryption implementations
- Check for insufficient logging
- Test for log injection vulnerabilities
- Examine data classification practices
- Document all findings with proof of concept
- Prepare a vulnerability assessment report
Time: 45 minutes
Focus on systematic testing and thorough documentation
Break Time
15 Minutes
Take a break, ask questions, or catch up on the previous task.
Next: Secure implementation and Task 2
Secure Data Protection
1. Data Encryption at Rest
<!-- SECURE: Database encryption -->
// Enable Transparent Data Encryption (TDE)
ALTER DATABASE MyDatabase
SET ENCRYPTION ON;
// Column-level encryption
CREATE TABLE users (
id INT PRIMARY KEY,
username VARCHAR(50),
ssn VARBINARY(MAX), -- Encrypted
credit_card VARBINARY(MAX) -- Encrypted
);
2. Data Masking
<!-- SECURE: Data masking -->
function maskSensitiveData(data) {
if (data.type === 'ssn') {
return data.value.replace(/(\d{3})\d{4}(\d{3})/, '$1-****-$2');
}
if (data.type === 'credit_card') {
return data.value.replace(/(\d{4})\d{8}(\d{4})/, '$1-********-$2');
}
return data.value;
}
Secure Logging Implementation
1. Security Event Logging
<!-- SECURE: Security logging -->
const winston = require('winston');
const securityLogger = winston.createLogger({
level: 'info',
format: winston.format.combine(
winston.format.timestamp(),
winston.format.json()
),
transports: [
new winston.transports.File({ filename: 'security.log' })
]
});
// Log security events
securityLogger.warn('Failed login attempt', {
username: username,
ip: req.ip,
userAgent: req.headers['user-agent'],
timestamp: new Date().toISOString()
});
2. Log Analysis and Monitoring
<!-- SECURE: Log monitoring -->
// Monitor for suspicious patterns
const suspiciousPatterns = [
/failed login/i,
/unauthorized access/i,
/privilege escalation/i
];
function analyzeLogs(logEntry) {
for (const pattern of suspiciousPatterns) {
if (pattern.test(logEntry.message)) {
alertSecurityTeam(logEntry);
}
}
}
Data Access Controls
1. Role-Based Access Control
<!-- SECURE: RBAC implementation -->
const roles = {
admin: ['read', 'write', 'delete'],
user: ['read'],
guest: []
};
function checkPermission(userRole, action) {
return roles[userRole].includes(action);
}
app.get('/sensitive-data', (req, res) => {
if (!checkPermission(req.user.role, 'read')) {
return res.status(403).json({ error: 'Forbidden' });
}
res.json(sensitiveData);
});
2. Data Anonymization
<!-- SECURE: Data anonymization -->
function anonymizeData(data) {
return {
id: hashId(data.id),
age: data.age,
gender: data.gender,
// Remove PII
// name: data.name,
// email: data.email
};
}
Compliance and Regulations
1. GDPR Compliance
<!-- SECURE: GDPR compliance -->
// Right to be forgotten
app.delete('/user/:id', async (req, res) => {
const userId = req.params.id;
await anonymizeUserData(userId);
await deleteUserData(userId);
res.json({ message: 'User data deleted' });
});
// Data portability
app.get('/user/:id/export', async (req, res) => {
const userData = await getUserData(req.params.id);
res.json(userData);
});
2. Audit Trails
<!-- SECURE: Audit trail -->
function logDataAccess(userId, dataType, action) {
auditLogger.info('Data access', {
userId: userId,
dataType: dataType,
action: action,
timestamp: new Date().toISOString(),
ip: req.ip
});
}
Monitoring and Alerting
1. Real-time Monitoring
<!-- SECURE: Real-time monitoring -->
const monitoring = {
failedLogins: 0,
lastReset: Date.now()
};
function checkSecurityMetrics() {
if (monitoring.failedLogins > 10) {
alertSecurityTeam('High failed login rate');
monitoring.failedLogins = 0;
}
}
setInterval(checkSecurityMetrics, 60000); // Every minute
2. Security Dashboards
- Real-time security metrics
- Failed login attempts
- Data access patterns
- Anomaly detection alerts
Career Development in Data Security
Next Steps:
- Advanced Certifications: CIPP, CISM, CISA
- Specialized Training: Data protection, Privacy regulations
- Hands-on Practice: Data security assessments, Compliance audits
- Industry Networking: Privacy conferences, Data protection meetups
- Research: New privacy regulations, Data protection methods
Resources: IAPP | NIST | GDPR
Task 2: Secure Data Protection & Logging Implementation
Objective:
Use OS³ Studio to implement secure data protection and logging practices.
Instructions:
- Access the OS³ Studio secure implementation environment
- Implement data encryption for sensitive fields
- Add comprehensive security logging
- Implement data classification and access controls
- Configure log rotation and retention
- Add data masking for non-production environments
- Test the secure implementation
- Document the security improvements
Time: 45 minutes
Focus on implementing industry-standard data protection practices
Further Activity: Code Inspection
Advanced Students - Code Analysis:
For students with additional time, explore the source code to understand:
- How data encryption is implemented
- Logging and monitoring mechanisms
- Data classification and access controls
- Compliance and audit trail implementation
- Data anonymization and masking
Deliverable: Code review report with data protection recommendations
Session Summary
Key Takeaways:
- Data exposure is a critical security vulnerability
- Insufficient logging allows attackers to persist undetected
- Data encryption and classification are essential
- OS³ Studio provides hands-on vulnerability testing
- Secure implementation requires multiple layers of protection
- Career opportunities in data security are growing
Next Steps
Continue Learning:
- Complete the OS³ Studio tasks
- Explore additional data security topics
- Practice with security testing tools
- Consider industry certifications
- Join cybersecurity communities
Next Session: WEB-SSRF-01 & WEB-UPLOAD-01 - SSRF & File Upload Security