tl;dr Some Fastlane commands (aka lanes) write the user login and the Apple ID passwords in the login keychain where they are accessible by other apps. Your passwords might be at risk!
As I couldn't find anyone to whom I could report this security issue privately, I'm disclosing it publicly now.
The original maintainer, Felix Krause, redirected me to the MobileNativeFoundation where I didn't get any response. Neither got I any response in this issue tracker.
I guess that says something about the Fastlane security in general.
New Issue Checklist
- Updated fastlane to the latest version
- I read the Contribution Guidelines
- I read docs.fastlane.tools
- I searched for existing GitHub issues
Issue Description
Issue in fastlane match
fastlane match prompts the user to provide the login keychain password that is saved in the same keychain and is accessible via security command by any app installed on the computer while the login keychain is unlocked.
Reproduction steps: run fastlane match with a simple configuration (set only mandatory options, like git url, etc) and check your login keychain afterwards. You should see a new entry fastlane_keychain_login added to it.
To see the saved password, open a new terminal window and run:
You should see your login password printed out at the bottom.
Here is the code requesting the user password:
| if keychain_password.nil? |
Here is the password entry stored in the keychain:

Mitigation:
- fastlane match should not save the user password in the keychain. It should fail if no keychain_password option is provided ot should request the user password every time it's needed.
- Fastlane should remove fastlane_keychain_login in the new version.
- Until the issue is fixed in Fastlane, the users should explicitly provide keychain_password option and should remove fastlane_keychain_login from their login keychain.
Issue in fastlane deliver (and possibly other lanes using AccountManager)
This issue is similar to fastlane match but in this case the Apple ID password leaks via deliver.<APPLE_ID> entry in the login keychain.
Reproduction steps: run fastlane deliver or fastlane upload_to_app_store (or any other command using AccountManager or create_session lane) and check your login keychain afterwards. You should see a new entry deliver.<APPLE_ID> added to it.
To see the saved password, open a new terminal window and run:
You should see your Apple password printed out at the bottom.
Here is the code requesting the Apple ID password:
Mitigation: similar to the fastlane match. Use FASTLANE_PASSWORD or DELIVER_PASSWORD to pass the Apple ID password to the lane. Fastlane should not store the Apple password in the login keychain and should remove any existing deliver password upon upgrade.
.png)



