MAGISK MODULE ❯ Universal SafetyNet Fix 2.4.0

Search This thread

gj4560

Senior Member
I'm on a Pixel 7 Pro with February patch, USNF 2.4.0, Enforce DenyList on for Google Play store, Google wallet, Google services framework. For some reason CTS profile randomly fails and passes for no obvious reason, sometimes when I check with YASNAC it passes, but other times it fails. So far this hasn't seemed to have affected Google wallet, it still says my phone meets security requirements and I can use tap to pay fine, also the Play store still says my device is certified. Very weird issue, I don't know why it's happening and I've only noticed it start happening with the February patch (I think, I only rooted my phone a few days ago before updating to Feb). It is using BASIC evaluation type although I haven't checked the Google Play integrity checker. Wonder what's going on?
 

JakeDHS07

Senior Member
They did a background update to GPS which is why people are suddenly failing I'm convinced of it. Couple posts ago someone who was ignoring updates said that it's failing for them even so this is my conclusion. This happens every now and then and I'm sure we'll have a working fix before long as there are many talented and hard working devs in this community. Then a year or so later they will change something again and the cycle repeats. This has always been the case and probably always will be. Why they don't just let people use their devices how they choose to while warning them of the risks I will never understand. It would be very simple to have a disclaimer that people can then dismiss which absolves them of any liability or risk and let's the user assume it themselves. If that were the case none of this hard work would even be necessary. But I digress.
 
  • Like
Reactions: Bad Bimr

JakeDHS07

Senior Member

Attachments

  • Screenshot_20230208-202656.png
    Screenshot_20230208-202656.png
    178.2 KB · Views: 69
  • Screenshot_20230208-202614.png
    Screenshot_20230208-202614.png
    178.8 KB · Views: 70

Bad Bimr

Senior Member
Dec 29, 2010
230
37
  • Like
Reactions: JakeDHS07

joeyhuab

Recognized Developer
Nov 5, 2012
4,260
17,376
28
Antipolo
evolution-x.org
Xiaomi Mi A1
Redmi K20 Pro
For fellow custom ROM developers, I can confirm that safetynet/Play Integrity passes again after importing and modifying this commit from hentaiOS and StatiXOS while staying rooted and using kdrag0n's v2.4.0 fix. This is on my latest build for the Xiaomi K20 Pro/Mi 9T Pro, but it's confirmed to pass on my co-founder's OnePlus 8 Pro. We're working on Evolution X updates for the Pixel 6 and 7 series as well and maybe that will give the Pixel users here some hope.
 

Attachments

  • Screenshot_20230209-095305_Yet_Another_SafetyNet_Attestation_Checker.png
    Screenshot_20230209-095305_Yet_Another_SafetyNet_Attestation_Checker.png
    200.4 KB · Views: 68
  • Screenshot_20230209-095258_Settings.png
    Screenshot_20230209-095258_Settings.png
    170.6 KB · Views: 65
  • Screenshot_20230209-095311_Play_Integrity_API_Checker.png
    Screenshot_20230209-095311_Play_Integrity_API_Checker.png
    80.9 KB · Views: 68
  • Screenshot_20230209-095604_😘.png
    Screenshot_20230209-095604_😘.png
    172.8 KB · Views: 71
Last edited:

JakeDHS07

Senior Member
For fellow custom ROM developers, I can confirm that safetynet/Play Integrity passes again after importing and modifying this commit from hentaiOS and StatiXOS while staying rooted and using kdrag0n's v2.4.0 fix. This is on my latest build for the Xiaomi K20 Pro/Mi 9T Pro, but it's confirmed to pass on my co-founder's OnePlus 8 Pro. We're working on Evolution X updates for the Pixel 6 and 7 series as well and maybe that will give the Pixel users here some hope.

That's great to hear! Perhaps @pndwal @Displax @kdrag0n should take a look at this. I'm not sure how to merge a commit like this and publish a build but at least it would be a temp working fix.
 
  • Like
Reactions: cognitivedissonance

Displax

Senior Member
Jan 19, 2015
334
1,590
26
Kyiv
Google Pixel 4a 5G
Last edited:

Top Liked Posts

  • There are no posts matching your filters.
  • 4
    For those using Canary builds

    Please be aware that in 25207+ major refactoring (of selinux rule patching) has broken many modules etc... This is likely the cause of issues with hiding using recent builds as Shamiko is affected... Please see discussion in Magisk Discussion thread...

    You could revert to 25206 or wait for fixes hopefully in 25211... 👀 PW
    3
    I was on 2.3.1_MOD_3.0 on Android 12 and now 2.4.0_MOD_1.2 on Android 13 and all was now well in both setups.
    3
    I'm on a similar setup although just "2.4.0", I need to look around for "2.4.0_MOD_1.2" in particular to try that out.
    3
    so I'm on android 13, pixel 6a. Got Integrity ✅ and CTS match ✅ and also Play Store as Certified. Although, still no google pay or banks access. Any hints to get this working or it this fix not fully functional on 13 as of yet?

    Thanks!
    With Integrity and CTS do you refer to the deprecated SafetyNet or the 'new' Play Integrity API?

    Also, are you using USNF from this thread or the newer/better safetynet-fix-v2.4.0-MOD_1.2 from the other thread?

    Look into the other USNF thread from Displax and find more info in the thread about GPay

    Btw, banking apps do not rely only on PI API - they try many other detections od root, hence you might need (things vary from app to app) Shamiko, Hide My Applist or even the Magisk Delta fork

    The best would be to search through the Magisk related threads here on XDA, how the other user(s) solved the root detection from your particular banking or similar app
    3
    With Integrity and CTS do you refer to the deprecated SafetyNet or the 'new' Play Integrity API?

    Also, are you using USNF from this thread or the newer/better safetynet-fix-v2.4.0-MOD_1.2 from the other thread?

    Look into the other USNF thread from Displax and find more info in the thread about GPay

    Btw, banking apps do not rely only on PI API - they try many other detections od root, hence you might need (things vary from app to app) Shamiko, Hide My Applist or even the Magisk Delta fork

    The best would be to search through the Magisk related threads here on XDA, how the other user(s) solved the root detection from your particular banking or similar app
    Yes! I was trying to find the link for that mod. This worked. Thanks!

  • 315
    Universal SafetyNet Fix
    Magisk module​

    Magisk module to work around Google's SafetyNet attestation.

    This module works around hardware attestation and recent updates to SafetyNet CTS profile checks. You must already be able to pass basic CTS profile attestation, which requires a valid combination of device and model names, build fingerprints, and security patch levels.

    If you still have trouble passing SafetyNet with this module, use MagiskHide Props Config to spoof a certified device profile. This is a common issue on old devices, custom ROMs, and stock ROMs without GMS certification (e.g. Chinese ROMs).

    Android versions up to 13 Beta 3 are supported, including OEM skins such as Samsung One UI and MIUI.

    How does it work?
    The way this workaround works is relatively low-level. An in-depth explanation, as well as source code and ROM changes, can be found on GitHub.

    Ideally, this workaround should be incorporated in custom ROMs instead of injecting code with a Magisk module. See the ProtonAOSP website for more information.

    Downloads
    Downloads and changelogs can be found on GitHub. The topmost release is the latest.

    Latest release
    v2.4.0

    Highlights
    • Play Integrity bypass without breaking device checks or causing other issues
    • Disabled use of hardware attestation on Pixel 7 and newer (@anirudhgupta109)
    Other changes
    • Updated instructions for newer Android and Magisk versions
    • Better debugging for future development
    This version only supports Zygisk (Magisk 24 and newer).

    It's taken a while to find a way to bypass Play Integrity that doesn't require spoofing the build fingerprint permanently, but I wanted to make sure this module doesn't cause any unnecessary breakage. Just like the original goal of Universal SafetyNet Fix, this minimizes adverse effects by spoofing dynamically at runtime only when necessary. Enjoy!

    If you found this helpful, please consider supporting development with a recurring donation for rewards such as early access to updates, exclusive behind-the-scenes development news, and priority support.
    Alternatively, you can also buy me a coffee. All support is appreciated ❤️

    Source code
    214
    So, here is my modification of USNF with Play Integrity API bypass.

    It changes fingerprint to old 7.1.2 6.0 (LOL) and apply it only for GMS SafetyNet process (by Zygisk injection), so your original prints/security path level does not change. This avoids many side effects/problems with global props changing.

    Updated 3.0:
    No words needed, you understand everything yourself 😜

    Updated 2.1:
    Hide "Enable OEM Unlock" setting

    Updated 2.0:
    Bypassing DEVICE_INTEGRITY for devices that shipped with Android 13+ (Pixel`s 7 )

    Updated:
    Drop fingerprint to lowest possible (6.0) to ensure that no one use same Android version

    Usage:
    1. Delete/disable/reset MagiskHidePropsConfig (if installed).
    2. Just install it over old Universal SafetyNet Fix and reboot device.
    3. You may be needed to wipe GMS data (not cache) if there is no result immediately.

    Many thanks to @1nikolas for integrity checker.

    Source code: https://github.com/Displax/safetynet-fix/tree/integrity
    58
    So, here is my new modification of USNF with Play Integrity API bypass.

    It is now based on top of original v2.4.0 codebase instead of v2.3.1, with adding new hiding algorithm for current realities and some code refreshing.

    Changelog:

    Version 1.2
    * Fix crash and endless tests loop/failing on Android < 9.0 (bug from original version 2.4.0).
    * Do not unpatch (revert) changes. To prevent possible tests failing after a while on some ROMs (cross conflicts).

    Version 1.1
    * Fix KeyStore hook desynchronization (tests randomly failing problem).


    Usage:
    1. Delete/disable/reset MagiskHidePropsConfig (if installed).
    2. Just install it over old Universal SafetyNet Fix and reboot device.
    3. You may be needed to wipe GMS data (not cache) if there is no result immediately.

    Source code: https://github.com/Displax/safetynet-fix/tree/dev
    31
    Folks, the SafetyNet API was depreciated last Month with 'full turndown' slated for June 2024 and the introduction of the new Play Integrity API. It has also become clear that Google apps are simply the first to adopt the long foretold Play Integrity API; all responsible banks are bound to follow suit in short order, and at least before the June 2023 migration deadline.

    This means (assuming fully deployed Hardware Key Attestation doesn't come first 😬) that the need for a 'Universal Play Integrity Fix' has become quite urgent.

    We currently have workarounds involving using older fingerprint props by means of MHPC module (similar to fix needed for uncertified ROMs), but success/mileage varies per device and users of regular bank apps / gamers etc on stock devices will all soon be forced to experiment with MHPC prints also... This is hardly ideal.

    So I've made an issue report/request on USNF GitHub as follows. This information may be insightful to users here also...

    Please let me know here if I have missed anything important, or add any technically relevant details there...

    PLEASE DON'T spam that issue with unimportant details or queries... (The previous issue is already burgeoning w/ OT.) That's what this thread is for... 😛 :

    Please make 'Universal Play Integrity Fix' ... #204

    Fixes to expand 'Universal SafetyNet Fix' to become a 'Universal Play Integrity Fix' are needed.

    The SafetyNet Attestation API is deprecated and has been replaced by the Play Integrity API.
    https://developer.android.com/training/safetynet/deprecation-timeline

    New Play Integrity API is rolling out from June 2022, and evidently Google Play Store and Google Pay/Wallet are already using its verdict.

    June 2023 is the Migration Deadline for app developers. This will also allow their older app versions to continue working with SafetyNet API for a limited time.

    June 2024 is the End of life for SafetyNet API; its attestation will no longer work for any app version, and apps will receive an error.

    The new Integrity API has more strict requirements for passing attestation, and this seems to be enforced in Android 11+ particularly.

    Currently (evidently due to this), device security issues are detected by

    1. Google Pay/Wallet, which may state "You can't pay contactless with this device...(Your phone doesn't meet software standards)" on updating or attempting to add a card despite in-app Contactless setup stating "You're ready to pay contactless with your phone (Your phone meets security requirements)", and
    2. Google Play Store, which may no longer show apps like Netflix w/ Android 11+ (developers can 'exclude devices from their app's distribution based on their device integrity . Device exclusion is based on the latest device integrity verdict that the Play Store app receives from the Play Integrity API') despite in-app settings showing Play Protect 'Device is certified' result.
    I'm guessing that the 'passing' messages based on the old SafetyNet API are likely to realigned soon.

    A workaround that evidently allows Play Integrity API attestation to pass (and solve Wallet / Play Store issues also) has been discovered. It involves spoofing an earlier certified ROM, generally by using MagiskHide Props Config module to change fingerprint prop to one for Android 10 or earlier.

    Undoubtedly other apps will begin to detect broken TEE etc / fail as they migrate or begin integrating the Play Integrity API.

    A 'Universal Play Integrity Fix' will evidently require more understanding / research into how the fingerprint prop is used, and possibly other new behaviours.

    Here's hoping... 🙃 PW
    29
    So, created separate thread for my mod. Welcome)