Skip to content

Security: THISJOWI/THISECURE-CLIENT

Security

SECURITY.md

πŸ”’ Security Policy

πŸ“‹ Table of Contents


πŸ›‘οΈ Supported Versions

We release security updates for the following versions:

Version Supported Status
1.0.x βœ… Active support Current stable release
0.9.x ⚠️ Limited support Security fixes only
< 0.9 ❌ Not supported Please upgrade

Recommendation: Always use the latest stable version for the best security and features.


🚨 Reporting a Vulnerability

We take security vulnerabilities seriously. If you discover a security issue, please follow these steps:

⚠️ DO NOT

  • ❌ Open a public GitHub issue
  • ❌ Discuss the vulnerability publicly
  • ❌ Exploit the vulnerability
  • ❌ Share the vulnerability with others

βœ… DO

  1. Email us privately: Send details to security@thisjowi.uk
  2. Provide details: Include a description, steps to reproduce, and potential impact
  3. Wait for confirmation: We'll acknowledge receipt within 48 hours
  4. Coordinate disclosure: We'll work with you on responsible disclosure

Report Template

Subject: [SECURITY] Brief description of vulnerability

Description:
[Detailed description of the vulnerability]

Affected Component:
[Which part of the application is affected]

Steps to Reproduce:
1. [Step 1]
2. [Step 2]
3. [Step 3]

Expected Behavior:
[What should happen]

Actual Behavior:
[What actually happens]

Impact:
[Potential security impact]

Suggested Fix (optional):
[Your suggestions for fixing the issue]

Environment:
- App Version: [version]
- Platform: [Android/iOS/Web/etc.]
- OS Version: [version]

Your Contact:
- Name: [Your name]
- Email: [Your email]
- GitHub: [Your GitHub username]

Response Timeline

Timeframe Action
48 hours Initial acknowledgment
7 days Detailed response and severity assessment
30 days Fix development and testing
90 days Public disclosure (coordinated with reporter)

Severity Levels

We classify vulnerabilities using CVSS scoring:

  • πŸ”΄ Critical (9.0-10.0): Immediate action required
  • 🟠 High (7.0-8.9): Urgent attention needed
  • 🟑 Medium (4.0-6.9): Should be addressed soon
  • 🟒 Low (0.1-3.9): Can be addressed in regular updates

πŸ›‘οΈ Security Measures

Current Security Implementations

1. Authentication & Authorization

  • βœ… JWT token-based authentication
  • βœ… Secure token storage using platform-specific secure storage
  • βœ… Automatic token refresh
  • βœ… Session timeout management
  • βœ… Biometric authentication support (iOS/macOS)
// Token storage example
import 'package:flutter_secure_storage/flutter_secure_storage';

final storage = FlutterSecureStorage();
await storage.write(key: 'jwt_token', value: token);

2. Data Security

  • βœ… HTTPS-only communication
  • βœ… SSL certificate pinning (planned)
  • βœ… Encrypted local storage for sensitive data
  • βœ… No sensitive data in logs
  • βœ… Input validation and sanitization

3. API Security

  • βœ… API timeout configuration
  • βœ… Request/response interceptors
  • βœ… Error handling without exposing internals
  • βœ… Rate limiting (backend-side)
// Secure API configuration
class ApiConfig {
  static const int requestTimeout = 15;
  static Map<String, String> authHeaders(String token) => {
    'Authorization': 'Bearer $token',
    'Content-Type': 'application/json',
  };
}

4. Environment Configuration

  • βœ… Environment variables for configuration
  • βœ… No hardcoded secrets
  • βœ… .env file in .gitignore
  • βœ… Separate configs for dev/prod

5. Code Security

  • βœ… No sensitive data in code
  • βœ… Obfuscation for release builds
  • βœ… ProGuard/R8 enabled (Android)
  • βœ… Code signing (iOS/Android)

πŸ” Security Best Practices

For Users

Protecting Your Account

  • πŸ”’ Use strong, unique passwords
  • πŸ”‘ Enable biometric authentication if available
  • πŸ“± Keep the app updated
  • 🚫 Don't share your credentials
  • ⚠️ Be cautious of phishing attempts
  • πŸ”„ Regularly review your account activity

Device Security

  • πŸ”’ Use device lock screen (PIN/Pattern/Biometric)
  • πŸ”„ Keep your OS updated
  • 🚫 Don't root/jailbreak your device
  • πŸ“± Install apps only from official stores
  • πŸ” Review app permissions

For Developers

Development Practices

# βœ… DO: Use environment variables
LOCAL_NETWORK_IP=192.168.1.100
API_KEY=get_from_secure_storage

# ❌ DON'T: Hardcode sensitive data
final apiKey = "sk_live_12345abcdef"; // NEVER DO THIS!

Code Review Checklist

  • No API keys or secrets in code
  • No sensitive data in logs
  • Input validation implemented
  • Error messages don't expose internals
  • HTTPS used for all API calls
  • Proper authentication checks
  • Secure data storage used
  • Dependencies are up to date
  • Security tests pass

Secure Coding Examples

βœ… Good: Secure password handling

Future<void> login(String email, String password) async {
  try {
    final response = await authService.login(email, password);
    await secureStorage.write(key: 'token', value: response.token);
    // Password is not stored or logged
  } catch (e) {
    // Generic error message, no sensitive details
    throw AuthException('Authentication failed');
  }
}

❌ Bad: Insecure password handling

Future<void> login(String email, String password) async {
  print('Password: $password'); // DON'T LOG PASSWORDS!
  prefs.setString('password', password); // DON'T STORE PASSWORDS!
  
  try {
    final response = await authService.login(email, password);
  } catch (e) {
    print('Error: $e'); // Might expose sensitive details
  }
}

πŸ€– Automated Security

GitHub Actions Workflows

We run automated security scans on every push and pull request:

1. Security Vulnerability Scan (security-scan.yml)

  • Dependency vulnerability scanning
  • Static code analysis
  • Secret detection in code
  • Android security linting

Runs: Push to main/develop, PRs, Weekly schedule

2. Credentials Check (credentials-check.yml)

  • Detects exposed .env files
  • Finds hardcoded IPs
  • Identifies API key patterns
  • Checks for Android keystores
  • Validates Firebase configs

Runs: Push to main/develop, PRs

Manual Security Audit

# Run security checks locally
flutter analyze
flutter test --coverage

# Check for outdated/vulnerable packages
flutter pub outdated

Dependency Management

We regularly update dependencies to patch security vulnerabilities:

# Check for security updates
flutter pub outdated --mode=null-safety

# Update dependencies
flutter pub upgrade

# Verify app still works
flutter test
flutter run

⚠️ Known Security Issues

Current Issues

ID Severity Issue Status ETA
None - No known issues βœ… -

Recently Fixed

ID Severity Issue Fixed In Date
SEC-001 🟑 Medium Improved token storage v1.0.0 2025-11

Historical Issues

See Security Advisories for complete history.


πŸ”„ Security Update Process

When a Vulnerability is Reported

  1. Triage (24-48 hours)

    • Assess severity
    • Verify reproducibility
    • Determine impact
  2. Development (1-30 days depending on severity)

    • Develop fix
    • Write tests
    • Code review
  3. Testing (3-7 days)

    • Security testing
    • Regression testing
    • QA verification
  4. Release (ASAP for critical issues)

    • Patch release
    • Release notes
    • Security advisory
  5. Disclosure (Coordinated)

    • Public announcement
    • CVE assignment (if applicable)
    • Credit to reporter

User Notification

For critical security issues:

  • πŸ“§ Email notification to users
  • πŸ“± In-app notification
  • πŸ“’ Blog post/announcement
  • πŸ”” GitHub security advisory

πŸ” Security Audits

Self-Assessment Checklist

We regularly assess our security posture:

  • Code review process in place
  • Automated security scanning enabled
  • Dependency updates automated
  • Secrets management implemented
  • Incident response plan documented
  • Third-party security audit (planned)
  • Penetration testing (planned)

External Audits

  • Last Audit: November 2025 (Internal)
  • Next Audit: Q2 2026 (External)
  • Audit Reports: Available upon request

πŸ› οΈ Security Tools We Use

Tool Purpose Status
GitHub Security Scanning Code scanning βœ… Active
Dependabot Dependency updates βœ… Active
TruffleHog Secret detection βœ… Active
Gitleaks Secret scanning βœ… Active
Flutter Analyze Static analysis βœ… Active
Android Lint Android security βœ… Active

πŸ“ž Security Contacts

Primary Contact

  • πŸ“§ Email: security@thisjowi.uk
  • πŸ”’ PGP Key: [Available on request]
  • ⏰ Response Time: Within 48 hours

Team Members

Role Responsibility Contact
Security Lead Overall security security@thisjowi.uk
DevOps Infrastructure devops@thisjowi.uk
Development Code security dev@thisjowi.uk

Emergency Contact

For critical, actively exploited vulnerabilities:


πŸ“š Security Resources

Documentation

Training

We encourage contributors to:

  • Complete OWASP Mobile Security training
  • Stay updated on Flutter security advisories
  • Review CVE databases regularly

πŸ† Bug Bounty Program

Coming Soon

We're planning to launch a bug bounty program. Details will be announced in Q1 2026.

Interested? Email security@thisjowi.uk to be notified when we launch.


πŸ” Encryption Standards

Data in Transit

  • Protocol: TLS 1.2 or higher
  • Cipher Suites: Modern, secure ciphers only
  • Certificate Validation: Enabled and enforced

Data at Rest

  • Platform Storage: iOS Keychain, Android Keystore
  • Encryption: AES-256 where available
  • Key Management: Platform-managed secure enclaves

πŸ“œ Compliance

Standards & Regulations

We strive to comply with:

  • βœ… GDPR (General Data Protection Regulation)
  • βœ… CCPA (California Consumer Privacy Act)
  • βœ… OWASP Mobile Top 10
  • βœ… NIST Cybersecurity Framework

Privacy

See our Privacy Policy for details on data handling.


βš–οΈ Legal

Responsible Disclosure

We support responsible disclosure of security vulnerabilities. Reporters who follow our guidelines will be:

  • βœ… Credited in security advisories (unless anonymity requested)
  • βœ… Kept informed throughout the fix process
  • βœ… Thanked publicly for their contribution

Hall of Fame

We recognize security researchers who help us:

Researcher Vulnerability Date Severity
Your name here Be the first! - -

πŸ†˜ Getting Help

Security Questions

For non-vulnerability security questions:

General Support

For general support (non-security):


πŸ”„ Updates to This Policy

This security policy may be updated periodically. Significant changes will be announced via:

  • πŸ“’ GitHub release notes
  • πŸ“§ Email notifications
  • πŸ“± In-app announcements

Last Updated: November 17, 2025
Version: 1.0.0


πŸ›‘οΈ Stay Secure

Security is a shared responsibility. Together, we can keep THISJOWI safe for everyone.

Thank you for helping us maintain a secure application!

Report a Vulnerability β€’ View Security Advisories

There aren't any published security advisories