Skip to content

feat(mobile): add unified Security Shepherd Android app#894

Open
SeanDuggan wants to merge 6 commits into
OWASP:devfrom
SeanDuggan:dev#829-app
Open

feat(mobile): add unified Security Shepherd Android app#894
SeanDuggan wants to merge 6 commits into
OWASP:devfrom
SeanDuggan:dev#829-app

Conversation

@SeanDuggan

Copy link
Copy Markdown
Member

Replaces the collection of per-challenge standalone APKs with a single unified app (org.owasp.mobileshepherd) covering all 19 mobile modules: lessons and challenges for Client-Side Injection, Insecure Data Storage, Insecure Communication, Insufficient Cryptography, Reverse Engineering, Poor Authentication, Security Misconfiguration, Privacy Controls, Input Validation, Insecure Authorization, and Supply Chain.

Android app changes:

  • New unified app with Navigation Component and ViewBinding
  • Material Design 3 with dark mode support
  • Full login/registration flow connected to the web platform
  • Progress tracking and scoreboard integration
  • Cheatsheets for all 19 modules
  • CI workflow for Android lint and build

Server-side changes:

  • Add MobileFlagGet, MobileFlagSubmit, MobileInsecureApi, MobileModuleFlags, MobileModuleProgress, MobileModuleStart, MobileRegister servlets
  • Update MobileLogin servlet
  • Update coreSchema.sql with mobile module tables and procedures
  • Add i18n properties for mobile challenge/lesson strings
  • Add Android lint and build GitHub Actions workflows

Replaces the collection of per-challenge standalone APKs with a single
unified app (org.owasp.mobileshepherd) covering all 19 mobile modules:
lessons and challenges for Client-Side Injection, Insecure Data Storage,
Insecure Communication, Insufficient Cryptography, Reverse Engineering,
Poor Authentication, Security Misconfiguration, Privacy Controls,
Input Validation, Insecure Authorization, and Supply Chain.

Android app changes:
- New unified app with Navigation Component and ViewBinding
- Material Design 3 with dark mode support
- Full login/registration flow connected to the web platform
- Progress tracking and scoreboard integration
- Cheatsheets for all 19 modules
- CI workflow for Android lint and build

Server-side changes:
- Add MobileFlagGet, MobileFlagSubmit, MobileInsecureApi, MobileModuleFlags,
  MobileModuleProgress, MobileModuleStart, MobileRegister servlets
- Update MobileLogin servlet
- Update coreSchema.sql with mobile module tables and procedures
- Add i18n properties for mobile challenge/lesson strings
- Add Android lint and build GitHub Actions workflows
SeanDuggan and others added 5 commits June 12, 2026 12:02
MobileFlagGet was calling Getter.hasPlayerStarted() as a DB fallback
for the in-memory module-start cache, but this method does not exist
in upstream's Getter class. Remove the fallback; the in-memory check
in MobileModuleProgress.hasStarted() is sufficient.
…ster

Fix Spotless violations:
- MobileLogin.java: convert CRLF to LF line endings
- MobileRegister.java: reflow Javadoc and method call line breaks
The previous version re-inserted 68 modules that already exist in the
upstream schema, causing PRIMARY KEY violations during integration test
DB setup and failing all IT tests.

Replace with upstream coreSchema.sql and append only the 9 genuinely
new mobile modules:
- Mobile Insecure Authorization (lesson)
- Mobile Insecure Communication (lesson + challenge)
- Mobile Security Misconfiguration (lesson + challenge)
- Mobile Input Validation (lesson)
- Mobile Privacy Controls (lesson)
- Mobile Supply Chain (lesson)
- Mobile Insufficient Cryptography (lesson)

incrementalRank values set to 105-113 (after upstream's highest rank of ~100)
to avoid conflicts.
…edWhereClause

testGetModuleStatusMenuWhenMobileOnlyOpen validates that every module
in the DB belongs to either the web or mobile hardcoded category list.
Our 7 new mobile categories were missing from the list, causing the test
to fail with a count mismatch after openOnlyMobileCategories() was called.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Backlog

Development

Successfully merging this pull request may close these issues.

1 participant