Skip to content

fix(compliance): honest liveness claims, turnRight fix, dead-code + supply-chain trim - #33

Open
GhagSagar23 wants to merge 3 commits into
developfrom
fix/compliance-quick-wins
Open

fix(compliance): honest liveness claims, turnRight fix, dead-code + supply-chain trim#33
GhagSagar23 wants to merge 3 commits into
developfrom
fix/compliance-quick-wins

Conversation

@GhagSagar23

Copy link
Copy Markdown
Collaborator

What

Compliance quick wins from the worldwide biometric-compliance audit — the ponytail-minimal, safe subset. Design-level items (real PAD, consent surface, at-rest encryption, camera consolidation) are intentionally out of scope and left for a follow-up decision.

Commits

Commit Change Finding addressed
cfae9af README: drop false anti-spoofing claims (photos/recordings/deepfakes/3D masks) → state plainly it's active challenge-response, not ISO/IEC 30107 PAD; remove the NSMicrophoneUsageDescription instruction (mic unused); add a Privacy & compliance section CRITICAL false-claim (FTC §5 / EU UCPD); App Store 5.1.1; consent/retention disclosure
5adbec3 V1 turnRight fix (> → require yaw more negative than the threshold magnitude; a forward face no longer auto-passes); delete dead golden-ratio + facial-symmetry stubs (only printed, never gated); guard the V2 error debugPrint behind kDebugMode CRITICAL trivially-defeated challenge; MEDIUM fake-PAD stubs; LOW production log
e2e34fa Drop unused image + plugin_platform_interface deps; delete the dead method_channel/platform_interface scaffold MEDIUM supply-chain surface

Verified

The headline this addresses

The package was marketed as anti-spoofing while implementing none — the biggest legal + security exposure for worldwide use. This PR makes the docs honest and fixes the one gesture bug that let a still face pass, but it does not add real presentation-attack detection. Until real PAD is added, do not rely on this package alone for KYC/identity.

Out of scope (needs a design decision)

  • Real PAD (passive texture/depth or randomized challenge + replay detection) — or formally drop the liveness claim.
  • Consent surface (injectable notice widget; flip startWithInfoScreen default).
  • At-rest: return image bytes in-memory / add CapturedImage.delete() + encryption hook.
  • Consolidate to one camera plugin (camera + camerawesome both shipped).
  • V2 reading thresholdConfig (config parity with V1).

Audit status

Full audit was 8/9 dimensions (verify pass completed only for logging; inclusivity + synthesis/critic hit an account session limit). The remaining verify/inclusivity/critic passes + extra jurisdictions will be completed after the limit resets.

GhagSagar23 and others added 3 commits July 16, 2026 21:10
…liance section

- README no longer claims PAD against photos/recordings/deepfakes/3D masks (it has
  none); states plainly it is active challenge-response only, not ISO/IEC 30107 PAD
  (removes FTC Act 5 / EU UCPD deceptive-claim exposure)
- remove NSMicrophoneUsageDescription instruction (mic is unused; App Store 5.1.1 risk)
- add Privacy & compliance section: on-device-only, ML Kit disclosure, no encryption/
  retention by the library, consent is the consuming app's duty (GDPR/BIPA/PIPL/DPDP)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- V1 turnRight used `>` so a forward-facing head (yaw ~0) auto-passed instantly;
  now requires yaw more negative than the threshold magnitude (mirrors V2).
  Root-cause fix, robust whether or not a HeadTurnDetectionThreshold is configured.
- delete golden-ratio (V1) and facial-symmetry (V2) computations + calculateSymmetry:
  they were only print()ed, never gated pass/fail — keeping them implied anti-spoofing
  the package does not have.
- guard the V2 image-error debugPrint behind kDebugMode (the one log that reached release).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ad plugin scaffold

- `image` (^4.0.15) declared but never imported (pulled archive/xml/petitparser/crypto)
- `plugin_platform_interface` + livelyness_detection_{method_channel,platform_interface}.dart
  are untouched flutter-create boilerplate (getPlatformVersion), never registered natively
- shrinks the supply-chain / attack surface of a biometric package

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant