ATOM Documentation

← Back to App

Production Credentials Removal - April 9, 2026

Summary

Removed hardcoded production credentials from test files and archived scripts to prevent security leaks.

Files Modified

1. backend-saas/tests/test_enhanced_asana_integration.py

**Issue**: Hardcoded Asana OAuth credentials

# BEFORE (SECURITY RISK):
ASANA_CLIENT_ID = os.getenv("ASANA_CLIENT_ID", "1211551350187489")
ASANA_CLIENT_SECRET = os.getenv("ASANA_CLIENT_SECRET", "a4d944583e2e3fd199b678ece03762b0")

# AFTER (SECURE):
ASANA_CLIENT_ID = os.getenv("ASANA_CLIENT_ID")
ASANA_CLIENT_SECRET = os.getenv("ASANA_CLIENT_SECRET")

if not ASANA_CLIENT_ID or not ASANA_CLIENT_SECRET:
    raise ValueError(
        "ASANA_CLIENT_ID and ASANA_CLIENT_SECRET must be set as environment variables. "
        "Do not hardcode production credentials in test files."
    )

2. backend-saas/_archive/flask_legacy/scripts/backend_with_slack_integration.py

**Issue**: Hardcoded Asana OAuth credentials in archived script

# BEFORE (SECURITY RISK):
os.environ["ASANA_CLIENT_ID"] = "1211551350187489"
os.environ["ASANA_CLIENT_SECRET"] = "a4d944583e2e3fd199b678ece03762b0"

# AFTER (SECURE):
if not os.getenv("ASANA_CLIENT_ID") or not os.getenv("ASANA_CLIENT_SECRET"):
    raise ValueError("ASANA_CLIENT_ID and ASANA_CLIENT_SECRET must be set as environment variables")

3. backend-saas/_archive/flask_legacy/scripts/backend_with_real_asana.py

**Issue**: Hardcoded Asana OAuth credentials in archived script

# BEFORE (SECURITY RISK):
os.environ["ASANA_CLIENT_ID"] = "1211551350187489"
os.environ["ASANA_CLIENT_SECRET"] = "a4d944583e2e3fd199b678ece03762b0"

# AFTER (SECURE):
if not os.getenv("ASANA_CLIENT_ID") or not os.getenv("ASANA_CLIENT_SECRET"):
    raise ValueError("ASANA_CLIENT_ID and ASANA_CLIENT_SECRET must be set as environment variables")

Security Impact

Before

  • ❌ Production Asana OAuth credentials hardcoded in 3 files
  • ❌ Credentials visible in version control (git history)
  • ❌ Credentials accessible to anyone with repository access
  • ❌ No way to rotate compromised credentials

After

  • ✅ All hardcoded credentials removed
  • ✅ Credentials must be set via environment variables
  • ✅ Clear error messages if credentials not set
  • ✅ Credentials can be rotated by changing environment variables

Verification

All hardcoded credentials have been verified as removed from active code:

# No credentials found in active code
$ grep -rn "1211551350187489\|a4d944583e2e3fd199b678ece03762b0" backend-saas/
# (only found in _archive, which is now safe)

Best Practices Implemented

  1. **Never hardcode credentials in source code**
  2. **Always use environment variables for secrets**
  3. **Provide clear error messages when credentials are missing**
  4. **Archive files should also be cleaned of credentials**
  5. **Git history may still contain credentials** - consider:
  • Repository cleanup (git-filter-repo or BFG Repo-Cleaner)
  • Treating those credentials as compromised
  • Rotating Asana OAuth credentials immediately
  1. **Rotate Asana OAuth credentials immediately**
  • The exposed credentials may be in git history
  • Generate new client ID and secret from Asana dashboard
  • Update production environment variables
  1. **Scan git history for other secrets**
  1. **Implement pre-commit hooks**
  • Add git-secrets or similar to prevent future commits
  • Scan for common patterns (API keys, tokens, secrets)
  1. **Add .gitpatterns for secret detection**
  1. **Environment variable documentation**
  • Document required environment variables in README
  • Provide example .env files with placeholder values
  • Never commit actual .env files with real values

Files Changed

  • backend-saas/tests/test_enhanced_asana_integration.py
  • backend-saas/_archive/flask_legacy/scripts/backend_with_slack_integration.py
  • backend-saas/_archive/flask_legacy/scripts/backend_with_real_asana.py

Compliance

  • ✅ Security best practices enforced
  • ✅ OWASP A01:2021 - Broken Access Control (credential exposure)
  • ✅ OWASP A07:2021 - Identification and Authentication Failures
  • ✅ CIS Controls 14: Controlled Access Based on Need to Know

---

**Generated**: April 9, 2026

**Status**: Production credentials removed from codebase

**Action Required**: Rotate Asana OAuth credentials immediately