Skip to content

docs: Fix THREAT_MODEL.md MFA status discrepancy — "Planned" → "Implemented (optional enrollment)"#8526

Merged
pethers merged 4 commits intomasterfrom
copilot/fix-threat-model-mfa-status
Apr 5, 2026
Merged

docs: Fix THREAT_MODEL.md MFA status discrepancy — "Planned" → "Implemented (optional enrollment)"#8526
pethers merged 4 commits intomasterfrom
copilot/fix-threat-model-mfa-status

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Apr 5, 2026

Description

THREAT_MODEL.md incorrectly marks MFA as "Planned" while SECURITY_ARCHITECTURE.md and the actual codebase (SetGoogleAuthenticatorCredentialService, DisableGoogleAuthenticatorCredentialService) show it's fully implemented. This discrepancy undermines audit credibility and violates ISO 27001 A.5.17 documentation accuracy requirements.

Changes to THREAT_MODEL.md:

  • STRIDE mitigation table (L299): Status badge PlannedImplemented, link target FUTURE_SECURITY_ARCHITECTURE.md#mfaSECURITY_ARCHITECTURE.md#-authentication-architecture
  • Critical Assets table (L105): MFA optional pathoptional MFA (Google Authenticator OTP) with evidence link — clarifies enrollment-based nature
  • Priority Threat Scenarios (L401): Added optional MFA enrollment support as existing mitigation for credential compromise; residual action narrowed to enforcing mandatory enrollment
  • STRIDE→Control Mapping (L520): Added implementation evidence link as Optional/enrollment-based MFA via Google Authenticator to accurately reflect that OTP is only enforced when a user has enrolled
  • Fixed anchor links for both MFA and Spring Security rows from #authentication#-authentication-architecture to match the actual ## 🔑 Authentication Architecture heading in SECURITY_ARCHITECTURE.md

Cross-document consistency verified — SECURITY_ARCHITECTURE.md and ISMS_COMPLIANCE_MAPPING.md already correctly show MFA as implemented.

Type of Change

Primary Changes

  • 🐛 Bug Fix

Technical Changes

  • 🔒 Security & Compliance
    • Authentication
  • 📝 Documentation
    • Technical Documentation

Impact Analysis

Political Analysis Impact

  • Impact on data quality: None
  • Impact on analysis accuracy: None
  • Impact on transparency features: None

Technical Impact

  • Performance impact: None — documentation only
  • Security implications: Corrects risk assessment accuracy for auditors and security reviewers; accurately distinguishes between optional enrollment-based MFA support and mandatory MFA enforcement
  • Dependency changes: None

Testing

  • Security compliance verified

Documentation

  • Political analysis documentation updated

Screenshots

N/A — markdown documentation changes only.

Related Issues

Checklist

  • Code follows project coding standards
  • Comments are clear and helpful
  • Documentation is updated
  • Tests are passing
  • Security compliance is maintained
  • Performance impact is acceptable
  • Breaking changes are documented
  • Changes are backward compatible

Additional Notes

All three security documents (THREAT_MODEL.md, SECURITY_ARCHITECTURE.md, ISMS_COMPLIANCE_MAPPING.md) now consistently report MFA as implemented. Anchor links in the STRIDE mitigation table were corrected to point to the actual ## 🔑 Authentication Architecture heading (#-authentication-architecture) in SECURITY_ARCHITECTURE.md, fixing both the MFA and Spring Security rows. MFA wording throughout was refined to clarify it is currently optional/enrollment-based (OTP is only checked when a Google Authenticator secret exists for the account), with mandatory enforcement noted as the residual action item.

Security Considerations

  • No sensitive data exposed
  • Security best practices followed
  • Compliance requirements met

Release Notes

Fixed documentation discrepancy in THREAT_MODEL.md where MFA was incorrectly marked as "Planned" despite being implemented via Google Authenticator OTP. Updated wording to clarify MFA is currently optional/enrollment-based (not universally enforced), with mandatory enrollment as a residual action. Corrected anchor links to SECURITY_ARCHITECTURE.md authentication section. All security documents now consistently reflect MFA implementation status.

@github-actions
Copy link
Copy Markdown

github-actions bot commented Apr 5, 2026

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

Snapshot Warnings

⚠️: No snapshots were found for the head SHA 2f7f84c.
Ensure that dependencies are being submitted on PR branches and consider enabling retry-on-snapshot-warnings. See the documentation for more information and troubleshooting advice.

Scanned Files

None

Update MFA status across THREAT_MODEL.md to accurately reflect that
Multi-Factor Authentication via Google Authenticator is fully implemented.

Changes:
- STRIDE mitigation table: MFA badge changed from Planned to Implemented
- Critical Assets table: Added MFA implementation evidence link
- Priority Threat Scenarios: Added MFA as existing credential compromise mitigation
- STRIDE→Control Mapping: Added Google Authenticator service class reference

Cross-document consistency verified with SECURITY_ARCHITECTURE.md and
ISMS_COMPLIANCE_MAPPING.md (both already correct).

Resolves ISO 27001 A.5.17 documentation accuracy requirement.

Agent-Logs-Url: https://github.com/Hack23/cia/sessions/3ee3afd7-b10c-4bc8-a91e-cc544c0b4106

Co-authored-by: pethers <1726836+pethers@users.noreply.github.com>
Copilot AI changed the title [WIP] Fix THREAT_MODEL.md MFA status discrepancy docs: Fix THREAT_MODEL.md MFA status discrepancy — "Planned" → "Implemented" Apr 5, 2026
Copilot AI requested a review from pethers April 5, 2026 16:49
@pethers pethers marked this pull request as ready for review April 5, 2026 16:54
@pethers pethers requested a review from Copilot April 5, 2026 16:54
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates THREAT_MODEL.md to correct the documented MFA status and references so it aligns with the already-implemented Google Authenticator OTP MFA in the codebase and other security documents.

Changes:

  • Marks MFA as Implemented (instead of Planned) in the STRIDE/MITRE mitigation mapping and updates references accordingly.
  • Updates critical assets and threat scenarios to explicitly include Google Authenticator OTP MFA as an existing control, with evidence links.
  • Extends STRIDE→Control mapping to reference the MFA implementation evidence.

THREAT_MODEL.md Outdated
Comment on lines 299 to 302
| **Multi-Factor Authentication** | [M1032: Multi-factor Authentication](https://attack.mitre.org/mitigations/M1032/) | [T1078](https://attack.mitre.org/techniques/T1078/), [T1110](https://attack.mitre.org/techniques/T1110/) | [![Implemented](https://img.shields.io/badge/Status-Implemented-success?style=flat-square)](SECURITY_ARCHITECTURE.md#authentication) |
| **AWS CloudTrail** | [M1047: Audit](https://attack.mitre.org/mitigations/M1047/) | [T1098](https://attack.mitre.org/techniques/T1098/) | [![Implemented](https://img.shields.io/badge/Status-Implemented-success?style=flat-square)](SECURITY_ARCHITECTURE.md#audit-logging) |
| **VPC Security Groups** | [M1030: Network Segmentation](https://attack.mitre.org/mitigations/M1030/) | [T1041](https://attack.mitre.org/techniques/T1041/) | [![Implemented](https://img.shields.io/badge/Status-Implemented-success?style=flat-square)](SECURITY_ARCHITECTURE.md#network-security) |
| **Spring Security** | [M1035: Limit Access](https://attack.mitre.org/mitigations/M1035/) | [T1068](https://attack.mitre.org/techniques/T1068/), [T1078](https://attack.mitre.org/techniques/T1078/) | [![Implemented](https://img.shields.io/badge/Status-Implemented-success?style=flat-square)](SECURITY_ARCHITECTURE.md#authentication) |
Copy link

Copilot AI Apr 5, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The link target SECURITY_ARCHITECTURE.md#authentication doesn’t appear to match any heading anchor in SECURITY_ARCHITECTURE.md. The relevant section is ## 🔑 Authentication Architecture, which GitHub anchors as #-authentication-architecture (see SECURITY_ARCHITECTURE.md Table of Contents). Please update this link to the correct anchor (and consider aligning the similar Spring Security row which uses the same #authentication anchor).

Suggested change
| **Multi-Factor Authentication** | [M1032: Multi-factor Authentication](https://attack.mitre.org/mitigations/M1032/) | [T1078](https://attack.mitre.org/techniques/T1078/), [T1110](https://attack.mitre.org/techniques/T1110/) | [![Implemented](https://img.shields.io/badge/Status-Implemented-success?style=flat-square)](SECURITY_ARCHITECTURE.md#authentication) |
| **AWS CloudTrail** | [M1047: Audit](https://attack.mitre.org/mitigations/M1047/) | [T1098](https://attack.mitre.org/techniques/T1098/) | [![Implemented](https://img.shields.io/badge/Status-Implemented-success?style=flat-square)](SECURITY_ARCHITECTURE.md#audit-logging) |
| **VPC Security Groups** | [M1030: Network Segmentation](https://attack.mitre.org/mitigations/M1030/) | [T1041](https://attack.mitre.org/techniques/T1041/) | [![Implemented](https://img.shields.io/badge/Status-Implemented-success?style=flat-square)](SECURITY_ARCHITECTURE.md#network-security) |
| **Spring Security** | [M1035: Limit Access](https://attack.mitre.org/mitigations/M1035/) | [T1068](https://attack.mitre.org/techniques/T1068/), [T1078](https://attack.mitre.org/techniques/T1078/) | [![Implemented](https://img.shields.io/badge/Status-Implemented-success?style=flat-square)](SECURITY_ARCHITECTURE.md#authentication) |
| **Multi-Factor Authentication** | [M1032: Multi-factor Authentication](https://attack.mitre.org/mitigations/M1032/) | [T1078](https://attack.mitre.org/techniques/T1078/), [T1110](https://attack.mitre.org/techniques/T1110/) | [![Implemented](https://img.shields.io/badge/Status-Implemented-success?style=flat-square)](SECURITY_ARCHITECTURE.md#-authentication-architecture) |
| **AWS CloudTrail** | [M1047: Audit](https://attack.mitre.org/mitigations/M1047/) | [T1098](https://attack.mitre.org/techniques/T1098/) | [![Implemented](https://img.shields.io/badge/Status-Implemented-success?style=flat-square)](SECURITY_ARCHITECTURE.md#audit-logging) |
| **VPC Security Groups** | [M1030: Network Segmentation](https://attack.mitre.org/mitigations/M1030/) | [T1041](https://attack.mitre.org/techniques/T1041/) | [![Implemented](https://img.shields.io/badge/Status-Implemented-success?style=flat-square)](SECURITY_ARCHITECTURE.md#network-security) |
| **Spring Security** | [M1035: Limit Access](https://attack.mitre.org/mitigations/M1035/) | [T1068](https://attack.mitre.org/techniques/T1068/), [T1078](https://attack.mitre.org/techniques/T1078/) | [![Implemented](https://img.shields.io/badge/Status-Implemented-success?style=flat-square)](SECURITY_ARCHITECTURE.md#-authentication-architecture) |

Copilot uses AI. Check for mistakes.
@pethers
Copy link
Copy Markdown
Member

pethers commented Apr 5, 2026

@copilot apply changes based on the comments in this thread

Update #authentication → #-authentication-architecture for both
Multi-Factor Authentication and Spring Security rows to match the
actual heading anchor for "## 🔑 Authentication Architecture".

Agent-Logs-Url: https://github.com/Hack23/cia/sessions/4beec168-dc75-40dc-8d23-8fff51789860

Co-authored-by: pethers <1726836+pethers@users.noreply.github.com>
Copy link
Copy Markdown
Contributor Author

Copilot AI commented Apr 5, 2026

@copilot apply changes based on the comments in this thread

Fixed in e59bf59. Updated both the MFA row and Spring Security row anchors from #authentication#-authentication-architecture to match the actual ## 🔑 Authentication Architecture heading in SECURITY_ARCHITECTURE.md.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated 3 comments.

THREAT_MODEL.md Outdated
| **🧠 Source Code** | Policy logic, ranking algorithms | IP theft, malicious injection | Private repo controls, dependency scanning, SLSA provenance | [![Competitive Advantage](https://img.shields.io/badge/Value-Competitive_Advantage-gold?style=flat-square)](https://github.com/Hack23/ISMS-PUBLIC/blob/main/CLASSIFICATION.md) |
| **🔄 Import Pipelines** | Freshness & correctness | Poisoned input, replay, API abuse | Input validation, schema checks, rate limiting | [![Operational Excellence](https://img.shields.io/badge/Value-Operational_Excellence-blue?style=flat-square)](https://github.com/Hack23/ISMS-PUBLIC/blob/main/CLASSIFICATION.md) |
| **👤 User Accounts** | Abuse vector | Credential stuffing, enumeration | Login throttling, password policy, MFA optional path | [![Risk Reduction](https://img.shields.io/badge/Value-Risk_Reduction-green?style=flat-square)](https://github.com/Hack23/ISMS-PUBLIC/blob/main/CLASSIFICATION.md) |
| **👤 User Accounts** | Abuse vector | Credential stuffing, enumeration | Login throttling, password policy, MFA ([Google Authenticator OTP](service.impl/src/main/java/com/hack23/cia/service/impl/action/user/SetGoogleAuthenticatorCredentialService.java)) | [![Risk Reduction](https://img.shields.io/badge/Value-Risk_Reduction-green?style=flat-square)](https://github.com/Hack23/ISMS-PUBLIC/blob/main/CLASSIFICATION.md) |
Copy link

Copilot AI Apr 5, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The controls list here implies MFA is a general/active control, but the current login flow only enforces OTP when a Google Authenticator secret is present for the account (i.e., enrollment-based/optional MFA). Consider wording this as “optional MFA” / “MFA available (Google Authenticator OTP)” to avoid overstating enforcement.

Suggested change
| **👤 User Accounts** | Abuse vector | Credential stuffing, enumeration | Login throttling, password policy, MFA ([Google Authenticator OTP](service.impl/src/main/java/com/hack23/cia/service/impl/action/user/SetGoogleAuthenticatorCredentialService.java)) | [![Risk Reduction](https://img.shields.io/badge/Value-Risk_Reduction-green?style=flat-square)](https://github.com/Hack23/ISMS-PUBLIC/blob/main/CLASSIFICATION.md) |
| **👤 User Accounts** | Abuse vector | Credential stuffing, enumeration | Login throttling, password policy, optional MFA ([Google Authenticator OTP](service.impl/src/main/java/com/hack23/cia/service/impl/action/user/SetGoogleAuthenticatorCredentialService.java)) | [![Risk Reduction](https://img.shields.io/badge/Value-Risk_Reduction-green?style=flat-square)](https://github.com/Hack23/ISMS-PUBLIC/blob/main/CLASSIFICATION.md) |

Copilot uses AI. Check for mistakes.
THREAT_MODEL.md Outdated
| **1** | **🌐 Web Application Compromise** | [Initial Access](https://attack.mitre.org/tactics/TA0001/) | Data integrity manipulation | Medium | [![Critical](https://img.shields.io/badge/Risk-Critical-red?style=flat-square)](https://github.com/Hack23/ISMS-PUBLIC/blob/main/CLASSIFICATION.md) | WAF, validation, ORM parameterization | Add periodic data hash verification |
| **2** | **🔗 Supply Chain Dependency Attack** | [Initial Access](https://attack.mitre.org/tactics/TA0001/) | Code integrity & confidentiality | Medium | [![Critical](https://img.shields.io/badge/Risk-Critical-red?style=flat-square)](https://github.com/Hack23/ISMS-PUBLIC/blob/main/CLASSIFICATION.md) | SBOM, pin SHAs, attestations | Add provenance verification policy gate |
| **3** | **🔑 Administrative Credential Compromise** | [Credential Access](https://attack.mitre.org/tactics/TA0006/) | System-wide access | Low-Med | [![High](https://img.shields.io/badge/Risk-High-orange?style=flat-square)](https://github.com/Hack23/ISMS-PUBLIC/blob/main/CLASSIFICATION.md) | Lockouts, strong policy, IP rate limiting | Enforce mandatory MFA for admin |
| **3** | **🔑 Administrative Credential Compromise** | [Credential Access](https://attack.mitre.org/tactics/TA0006/) | System-wide access | Low-Med | [![High](https://img.shields.io/badge/Risk-High-orange?style=flat-square)](https://github.com/Hack23/ISMS-PUBLIC/blob/main/CLASSIFICATION.md) | Lockouts, strong policy, IP rate limiting, [MFA implemented](service.impl/src/main/java/com/hack23/cia/service/impl/action/user/SetGoogleAuthenticatorCredentialService.java) | Enforce mandatory MFA enrollment for all admin accounts |
Copy link

Copilot AI Apr 5, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The “MFA implemented” mitigation link is good evidence of support, but it may read as if MFA is already enforced for admins. Since residual action is to enforce mandatory enrollment, consider adjusting the mitigation wording to clarify it’s currently enrollment-based/optional MFA support (and/or link to both enable+disable services).

Suggested change
| **3** | **🔑 Administrative Credential Compromise** | [Credential Access](https://attack.mitre.org/tactics/TA0006/) | System-wide access | Low-Med | [![High](https://img.shields.io/badge/Risk-High-orange?style=flat-square)](https://github.com/Hack23/ISMS-PUBLIC/blob/main/CLASSIFICATION.md) | Lockouts, strong policy, IP rate limiting, [MFA implemented](service.impl/src/main/java/com/hack23/cia/service/impl/action/user/SetGoogleAuthenticatorCredentialService.java) | Enforce mandatory MFA enrollment for all admin accounts |
| **3** | **🔑 Administrative Credential Compromise** | [Credential Access](https://attack.mitre.org/tactics/TA0006/) | System-wide access | Low-Med | [![High](https://img.shields.io/badge/Risk-High-orange?style=flat-square)](https://github.com/Hack23/ISMS-PUBLIC/blob/main/CLASSIFICATION.md) | Lockouts, strong policy, IP rate limiting, [optional MFA enrollment support implemented](service.impl/src/main/java/com/hack23/cia/service/impl/action/user/SetGoogleAuthenticatorCredentialService.java) | Enforce mandatory MFA enrollment for all admin accounts |

Copilot uses AI. Check for mistakes.
THREAT_MODEL.md Outdated
| STRIDE Category | Example Threat | Primary Control | Secondary Control | Monitoring |
|----------------|----------------|-----------------|-------------------|------------|
| **🎭 Spoofing** | Credential stuffing | Throttling + password policy | MFA (admin), account lockout | Failed login attempts, IP tracking |
| **🎭 Spoofing** | Credential stuffing | Throttling + password policy | [MFA via Google Authenticator](service.impl/src/main/java/com/hack23/cia/service/impl/action/user/SetGoogleAuthenticatorCredentialService.java), account lockout | Failed login attempts, IP tracking |
Copy link

Copilot AI Apr 5, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This row suggests MFA is a standard secondary control for credential stuffing across the board. Given the implementation only checks OTP when an MFA secret exists for the user, consider clarifying this as “optional/enrollment-based MFA via Google Authenticator” to keep the STRIDE mapping accurate.

Suggested change
| **🎭 Spoofing** | Credential stuffing | Throttling + password policy | [MFA via Google Authenticator](service.impl/src/main/java/com/hack23/cia/service/impl/action/user/SetGoogleAuthenticatorCredentialService.java), account lockout | Failed login attempts, IP tracking |
| **🎭 Spoofing** | Credential stuffing | Throttling + password policy | [Optional/enrollment-based MFA via Google Authenticator](service.impl/src/main/java/com/hack23/cia/service/impl/action/user/SetGoogleAuthenticatorCredentialService.java), account lockout | Failed login attempts, IP tracking |

Copilot uses AI. Check for mistakes.
@pethers
Copy link
Copy Markdown
Member

pethers commented Apr 5, 2026

@copilot apply changes based on the comments in this thread

Apply reviewer suggestions to accurately reflect that MFA via Google
Authenticator is enrollment-based (optional) rather than enforced:
- L105: "MFA" → "optional MFA" in critical assets table
- L401: "MFA implemented" → "optional MFA enrollment support implemented"
- L520: "MFA via Google Authenticator" → "Optional/enrollment-based MFA via Google Authenticator"

Agent-Logs-Url: https://github.com/Hack23/cia/sessions/cbfabd8f-41cf-4d74-adb4-5a01db036d2b

Co-authored-by: pethers <1726836+pethers@users.noreply.github.com>
Copy link
Copy Markdown
Contributor Author

Copilot AI commented Apr 5, 2026

@copilot apply changes based on the comments in this thread

Applied all three suggestions in 2f7f84c. MFA wording now clarifies it's optional/enrollment-based across L105, L401, and L520.

Copilot AI changed the title docs: Fix THREAT_MODEL.md MFA status discrepancy — "Planned" → "Implemented" docs: Fix THREAT_MODEL.md MFA status discrepancy — "Planned" → "Implemented (optional enrollment)" Apr 5, 2026
@sonarqubecloud
Copy link
Copy Markdown

sonarqubecloud bot commented Apr 5, 2026

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated no new comments.

@pethers pethers merged commit c1b08db into master Apr 5, 2026
15 checks passed
@pethers pethers deleted the copilot/fix-threat-model-mfa-status branch April 5, 2026 18:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Fix THREAT_MODEL.md MFA status discrepancy — MFA marked as "Planned" but is implemented

3 participants