MAGISK MODULE ❯ Universal SafetyNet Fix 2.3.1

Search This thread

fl0wfr

Senior Member
Jan 2, 2010
81
11
Paris
You'll need to install the MagiscHide Props Config and to set a recognised fingerprint then. My Huawei tablet now has a P40 fingerprint, and google is happy with it...
Thanks! Now safety net passes but Google Pay keeps saying my phone is rooted. I already added Google Pay in Magisk Hide but no luck.
 

Durete

Member
Dec 15, 2006
22
3
Everyone having issues passing basic attestation after installing the module, please try the attached versions.

There have been quite a few reports of fingerprint unlocking in apps breaking on One UI. This is not something that is planned to be fixed, because One UI is a heavy OEM skin that is not officially supported. It's surprising that it works on One UI to begin with.
I was using 1.1.0 version and worked just fine, but after intensive testing I found some strange issues with my banking app and Amazon App (Safety Net pass and Gpay contactless OK).
My banking app ask to install a new CA certificate every time I open.
My Amazon app crashed always.

I tested version 1.1.1 Test 1 and all issues seems to be gone.
My banking app works perfect, Amazon App stopped to crash, Google Play shows Certified Device, SafetyNet pass OK and Gpay contactless seems to work fine.
I will report in case I found any new issue, but all apps seems to work perfect now.

Thank you for your work !
 
  • Like
Reactions: curiousrom

RenVilo

Senior Member
Aug 4, 2009
258
13
works on S20 FE 5G (SM-G781B) ROM OneUi 3 Android 11.
no configuration required here is how I proceeded:

• activate Magisk Hide
• install MagiskHide props config
• install UniversalSafety fix v.1.1.1 test1.zip (see Page 4)
• restart and erase playstore data

(I specify that I have EdXposed installed)

thank you very much to the dev
Do you get any strage issues with banking apps or lastpass etc.
 

RenVilo

Senior Member
Aug 4, 2009
258
13
have the same problem with oneui2.5 ... let me know if you find a solution to this; the lack of third party biometrics access is a deal breaker as I use it to login to my pc ...
So far no luck and also gonna give up. Rather not use google pay but have my fingerprint actually working
 

wyt18

Senior Member
works on S20 FE 5G (SM-G781B) ROM OneUi 3 Android 11.
no configuration required here is how I proceeded:

• activate Magisk Hide
• install MagiskHide props config
• install UniversalSafety fix v.1.1.1 test1.zip (see Page 4)
• restart and erase playstore data

(I specify that I have EdXposed installed)

thank you very much to the dev
Are you able to have third party app access to biometrics?
 

alex.do

Senior Member
Mar 28, 2008
226
64
Just to report it doesnt work properly on my S10+. biometrics for most of apps fail to work.
 

Yasumasa

New member
Jan 16, 2021
3
3
Everyone having issues passing basic attestation after installing the module, please try the attached versions.

There have been quite a few reports of fingerprint unlocking in apps breaking on One UI. This is not something that is planned to be fixed, because One UI is a heavy OEM skin that is not officially supported. It's surprising that it works on One UI to begin with.

Screenshot_20210116-085424.png Screenshot_20210116-090002_Google Play Store.png

SafetyNet Pass & Device Certified on Samsung A205F/DS
Flashed with safetynet-fix-v1.1.1-test1.zip
 
  • Like
Reactions: curiousrom

dragos281993

Recognized Contributor
Mar 29, 2014
2,941
4,075
Iasi
Thanks kdrag0n for your hard work ;-)

Feedback: With your fix, Magisk shows success when checking safetynet, but until now, the fix doesn't work for GPay in my case, neither with V1.1.0 nor with V1.1.1-test2 on Xiaomi Mi 9 with MIUI 12.

What I have done: I have cleared GPay's and PlayStore's cache and user data, uninstalled GPay, rebooted. Checked that PlayStore is checked in Magisk Hide and that Play Store indicates no problems in Play protect. Then I re-installed GPay, added it to MagiskHide and cleard GPlay's and GPay's cache and user data again. After this procedure, GPay did still know my credit card, but reported that the phone doesn't meet the security requirements. I have deleted the credit card, cleared cache and data, rebooted and added the card again, but GPay is still not working.
Try this: https://github.com/sdex/AndroidIDeditor/releases
Install it, open the app, find Gpay in the list, tap on it, press on "Set random values" and hit OK. Now exit the app and go wipe the Play services, App store and GPay's data then reboot. See if it works
 
  • Like
Reactions: dr4go
i am facing the same problem my friend.
please can you answer 2 questions? first, where did you download the previous version from? is it safe?
second, do you believe this can be fixed with a future magisk update, or are we screwed forever?
You can find all oficial releases here. I have never encountered any security issues with files from that website but it's up to you if you trust them or not.


Only time will tell whether it will be possible again to run new versions of this app on rooted devices.
 
Ok, thank you very much, that did the trick... for now. I wonder what kind of additional checks they are doing compared to others and if there is or will be a way to circumvent this in the future.

One crazy idea would be if it was possible to run apps in their own isolated containers chroot or vm style. Possibly unrealistic thought but who knows what the future will bring :)

Again, big thanks! Very much appreciated.
I took some time to compare last working version 7.30.3 to the two newest ones 7.31/7.32. After taking some logs I noticed that:

1. 7.30.3 - no root detection implemented in the app

2. 7.31 & 7.32 - root detection built-in

So Revolut changed this just few days ago. You can compare the screenshots.

BUT hiding magisk manager seems to do the trick and the new version is working fine now. I've just tried it so I was wrong by saying that nothing could be done. Sorry for the misinformation guys.
 

Attachments

  • 7.30.3.jpg
    7.30.3.jpg
    3.7 MB · Views: 41
  • 7.31&7.32.jpg
    7.31&7.32.jpg
    3.6 MB · Views: 42
  • Like
Reactions: rewtnull and dr4go

slutman

Senior Member
Aug 18, 2012
293
77
works on S20 FE 5G (SM-G781B) ROM OneUi 3 Android 11.
no configuration required here is how I proceeded:

• activate Magisk Hide
• install MagiskHide props config
• install UniversalSafety fix v.1.1.1 test1.zip (see Page 4)
• restart and erase playstore data

(I specify that I have EdXposed installed)

thank you very much to the dev
I did the same as you on my S20+ exynos Android 11 and it worked
 
  • Like
Reactions: Full House

mitch_55

Senior Member
May 27, 2009
295
76
Hi all,

I'm on oneUI 2.5.
Safetynet is ok as fingerprint in bank apps.
But it brokes secure folder. Impossible to access it.
 
  • Like
Reactions: Full House

kdrag0n

Senior Member
Feb 19, 2016
696
1,983
kdrag0n.dev
Universal SafetyNet Fix v1.1.1 is now available.

Changes
  • Removed security patch fixup to fix CTS profile mismatches on some devices

Download

Some devices will now need to use MagiskHide Props Config in addition to this module in order to pass CTS profile checks as part of basic attestation. Altering the CTS profile is no longer in scope for this module as it breaks more devices than it fixes.

If this module helped you, please consider a recurring donation for sustainable support, or alternatively buy me a coffee. Everything helps, but a recurring donation is the best way to keep the project alive in the long term.

Issues on heavy OEM skins
This is a reminder that heavy OEM skins are not officially supported. They may happen to work depending on your luck and the particular ROM in question, but nothing is guaranteed. Please do not report problems on such ROMs. It's surprising that it works at all on them; I wouldn't expect everything to be fully working. I will not provide more support for issues related to heavy OEM skins.

The compatibility issue does not lie in the SafetyNet fix itself, but rather how the Magisk module is built. It's possible to make the Magisk module version of the fix slightly more portable, but I have no interest in supporting heavy OEM skins, nor do I have any devices running such ROMs.

You will always have the best luck with a ROM not too far from AOSP, e.g. most custom ROMs and Pixel stock ROMs.
 

Top Liked Posts

  • There are no posts matching your filters.
  • 5
    So 'a boring or unenterprising person' or a fan of "Casey Jones"?... You don't need to answer that! 😜
    "And you know that notion just crossed my mind." 🙃

    Had a quick look at mHide SafetyNet project though...
    Just from this:

    Magisk Module
    Module to help pass SafetyNet on devices that do not support hardware attestation...

    This module will
    • Generate a list of 'sensitive' properties on the device and set the values to the 'safe' setting(s) during boot.
    • Check and adjust some 'sensitive' properties during boot.
    • Set Magisk's Denylist to enforcing.
    • Add part of PlayServices to the DenyList.
    Requires Zygisk to be enabled in Magisk.
    ... I'm wondering:
    - Could this be made to be an ideal solution for older devices in the event that Zygisk fix in modded USNF cannot be activated for A7 and lower?
    That is the idea (attempt). 🙃

    Ie.
    • Do adjustments to sensitive props target only com.google.android.gms.unstable?
    • Can we not set Denylist to enforcing (for use with Shamiko etc)?
    • Can we do targeted hiding of root from com.google.android.gms.unstable process instead of adding this to denylist (like USNF)?
    (I'm assuming Magisk path is always in /sbin in legacy ramdisk booting devices; is this correct?)
    • Can we do com.google.android.gms.unstable targeted spoofing of the same old A6 fingerprint prop as @Displax's USNF mod uses to fix CTS Profile Match in uncertified ROMs? (Possibly this could be enabled as an option if there's any benefit leaving original fingerprint as is where ROM is stock... I'm not sure there is however...)

    At the time I started mHide SafetyNet, the only way to access the denylist was when enforcing.
    The only way to "hide" Magisk was to add SafetyNet and (if needed) GMS to the denylist.
    A lot has changed since then and part of the reason I shelved the project.
    mHideSN still works on newer devices that do not support 'Hardware attestation'.
    Plan to update and cleanup one more time before archiving the repo.

    ---

    As for merging parts of mhsn into USNF..

    The 'com.google.android.gms' part is only to "hide" Magisk from SafetyNet when enforcing the Denylist.
    Only added on Android 7.x and older with Magisk 24.x and newer.
    Adapted from the 'MagiskHide' code purge. Lines 230-231 | Lines 249-256
    Became the 'set_default_list' function.​

    Since there are now other methods to "hide" Magisk..
    I currently only included a denylist check for Android 7.x and below.
    Not the part to enforce the denylist.

    Not sure if other methods like 'Shamiko' work on Android 7.x and below?

    When other methods of "hiding" Magisk started coming out.
    Most of them using the denylist (instead of creating their own list).
    I was not sure if any current or future, needed to add gms to the denylist list?
    - Part of the reason for commit.

    ---

    Setting the sensitive [secure] prop(s) to the safe value is only limited to what I and others have found.
    This part works across all Android versions.
    Using a system.prop file for some and the resetprop command in the service script for others.​

    The 'system.prop' file is generated during the install.
    I tried to move them all into the service and/or post-fs script(s) to be more dynamic (check and adjust during boot) but, ran into some issues.
    Some device/manufacture props do not exist until very late after boot complete if at all.
    So back to creating a system.prop file during the module install.​

    If the following prop(s) exist, it is added to the system.prop file regardless of the current value.
    The prop is added with the safe value.
    I would prefer to only add insecure props with the safe value but, this is a work-a-round in case the props are set by another module(s).​
    These props will be set shortly after the post.fs stage.
    ro.adb.secure=1
    ro.boot.selinux=enforcing
    ro.boot.warranty_bit=0
    ro.build.tags=release-keys
    ro.build.type=user
    ro.debuggable=0
    ro.is_ever_orange=0
    ro.odm.build.tags=release-keys
    ro.odm.build.type=user
    ro.product.build.tags=release-keys
    ro.product.build.type=user
    ro.system.build.tags=release-keys
    ro.system.build.type=user
    ro.vendor.boot.warranty_bit=0
    ro.vendor.build.tags=release-keys
    ro.vendor.build.type=user
    ro.vendor.warranty_bit=0
    ro.warranty_bit=0
    Props that are checked and adjusted if need be in service script.
    If 'ro.boot.mode' is recovery, set to unknown
    If 'ro.bootmode' is recovery, set to unknown
    If 'vendor.boot.mode' is recovery, set to unknown

    If 'ro.boot.hwc' is CN, set to GLOBAL
    If 'ro.boot.hwcountry' is China, set to GLOBAL

    If 'ro.build.selinux' exists, delete (remove) it.
    I still question this one but, it was part of 'MagiskHide'.
    'ro.boot.flash.locked' if not 1, set to 1
    'ro.boot.vbmeta.device_state' if not locked, set to locked
    'ro.boot.verifiedbootstate' if not green, set to green
    'ro.boot.veritymode' if not enforcing, set to enforcing
    'ro.secure' if not 1, set to 1
    'sys.oem_unlock_allowed' if not 0, set to 0
    'vendor.boot.vbmeta.device_state' if not locked, set to locked
    'vendor.boot.verifiedbootstate' if not green, set to green

    Currently USNF includes a 'system.prop' file.
    By generating the 'system.prop' file during the install instead, we can check if the prop exists before adding it.
    This will help from adding non-native props to the device.
    Currently any one using USNF has the OnePlus and Samsung props set.
    No matter if it is a Google, LG, Motorola, Poco, ...., Xiaomi device.

    ---

    Without the Zygisk part of the module, You would have to set the fingerprint globally.
    The same as the MHPC module does.
    Set props early (post-fs) you will change it across the board.
    Set props late (service) you will set it after system has started.
    For example of the difference between setting props early and late, see my question and flar2's response in the DevCheck thread - Post #258.​

    ---

    Hope it helps explain more than confuse. 🙃

    Cheers. :cowboy:
    5
    Strong integrity = hardware attestation, basically, so no, no way to fix AFAIK. OnePlus devices at least up to the OnePlus 9 Pro still shipped stock with broken hardware attestation, so there's no way at all of getting it working on those devices.
    4
    Hi all,

    Does anyone know if there is any fix for the "MEETS_STRONG_INTEGRITY" ?
    From what I've read, the "MEETS_DEVICE_INTEGRITY" and "MEETS_BASIC_INTEGRITY" are fixable using Displax's fix on the USNF (thank you so much for this).

    However, i didn't found anything related the strong integrity.
    Is this correct, or have I missed some step?
    I'm facing this on a OnePlus 5 and a Nothing 1

    Thanks
    Yes; purchase an Asus ROG Phone 3!

    This is the only device I know of where the OEM has messed up the Keymaster implementation in such a way that it will pass MEETS_STRONG_INTEGRITY verdict w/ unlocked bootloader... Other device's may also...

    An app requiring new MEETS_STRONG_INTEGRITY is equivalent to requiring old CTS Profile Match using HARDWARE_BACKED evaluationType. As such, banks have not yet required either (although they could) as doing so would exclude users / customers with
    1) Many late devices (many OnePlus and others) with broken keymaster implementations.
    2) Devices launched with Android 7 and earlier, even if running late Android.

    🤠 PW
    4
    That's what I have... (But Xiaomi device w/ A10)...
    The 1st thing i did was to put play services and frameworks to denaylist.
    ... Better remove everything from there except bank apps etc... PW
    3
    As the use of Play Integrity (and its likely descendants) continues to spread, more and more apps will cease to function fully (or at all) on a rooted/modded device.

    Sure, rooting will still be possible, but rooted devices will become more and more crippled for normal use as time goes on.

    Im not super concerned, but if it ever gets that bad, i reckon we start a class action and call it "classroot" or "right to root", which here in Oz would have an entirely different context....
  • 277
    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 ROMs instead of overriding part of the ROM in a Magisk module. The ROM changes for it are linked above for ROM developers to use.

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

    Latest release
    v2.3.1

    Highlights
    • Fixed fingerprint on OxygenOS/ColorOS 12 (@osm0sis)
    • Support for Magisk 24+ module updates (@benjibobs)
    • Restored support for Android 7
    Other changes
    • Spoofed OnePlus OEM unlock status for futureproofing (@osm0sis)
    • Minor code improvements
    This version only supports Zygisk (Magisk 24 and newer).

    Source code

    If this helped you, please consider donating to support development: recurring donation for sustainable support or buy me a coffee. Thank you for your support!
    134
    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:
    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.

    Many thanks to @1nikolas for integrity checker.

    Source code: https://github.com/Displax/safetynet-fix/tree/integrity
    30
    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
    28
    ok so there is a solution

    get the magisk module riru

    after you get riru get LSPosed

    after you get LSPosed get xprivacylua (in the LSPosed app)

    select play services in the xprivacylua settings IN the LSPosed app

    AND in the xprivacylua app itself after you've restarted.

    clear play service data

    check safetynet in magisk - enjoy?

    I would reboot between each step just to be safe but I know it's necessary to load the xprivacylua module

    s/o to saitama_96 for discovering it or so I'm led to believe
    26
    Some useless statistics:
    My MOD was downloaded over 2k times.
    1,5k from XDA
    800 from GitHub

    I'm glad i made 2000+ people happier :) Thank you!