CodecovのBash Uploaderにセキュリティアップデートが入ったので、利用者としてやったことまとめ
背景
コードカバレッジの計測や可視化などを支援してくれるCodecovというサービスがあります。カバレッジのデータをアップロードするスクリプトが何者かに書き換えられたことにより、クレデンシャルやトークン、キーなどの情報が流出した可能性があることが確認されました。
これに伴ってCodecovのBash Uploader利用者はシークレット情報などを更新することが推奨されています。これはCIで利用している場合も当てはまります。
私が携わるプロジェクトではCIサービスにBitriseを利用しているので、この記事ではBitrise中心の説明にはなりますが、他のCIサービスでも共通する部分があると思いますので参考になれば幸いです。
やったこと
Bitrise上のWorkflow Editor > Secretsに保存しているシークレット情報を更新しました。
具体的には次の項目になります。それぞれの対応で行ったことを書いていきます。
(この項目はみなさまの各プロジェクトによってさまざまかと思います。漏れてマズい情報に適切な対処をしていってください)
- FASTLANE_PASSWORDの削除とapple idのパスの変更
- GITHUB_API_TOKENの新規作成、上書き
- BITRISE_ACCESS_TOKENの新規作成、上書き
- FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORDの新規作成、上書き
- MATCH_PASSWORDの変更
- MATCH_KEYCHAIN_PASSWORDの変更
FASTLANE_PASSWORDの削除とapple idのパスの変更
Apple Developer ProgramのAppIDに対して2段階認証が必須に伴って設定が必要になっていたFASTLANE_PASSWORD
ですが、この設定項目はapple idのパスワードとなります。
Apple Store Connectやその他Apple関連のサービスに対して悪意あるアクセスが可能になるリスクがあると判断して変更しました。
後述するFASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD
の利用によって不要となっていたのですが、設定が古いまま残っていたのでSecretsから削除しました。
Secretsから削除したといっても、すでに流出した可能性はあるのでapple idのパスワードも変更して対応しました。
GITHUB_API_TOKENの新規作成、上書き
BitriseからGitHubにアクセスするために利用している、GitHubから払い出されているPersonal Access Token。
GitHubに対して悪意あるアクセスが可能になるリスクがあると判断して変更しました。
利用しているものをrevokeして、次のリンクを参考に新規作成して再設定しました。
BITRISE_ACCESS_TOKENの新規作成、上書き
こちらは先ほどのGITHUB_API_TOKEN
と同じようなものになります。
他サービスからBitriseにアクセスするために利用している、Bitriseから払い出されているPersonal Access Token。
Bitriseに対して悪意あるアクセスが可能になるリスクがあると判断して変更しました。
利用しているものをremoveして、次のリンクを参考に新規作成して再設定しました。
FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORDの新規作成、上書き
次はApp Store Connectにアクセスするために利用するパスワードであるFASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD
です。2段階認証をパスするために利用しているもので、先述したFASTLANE_PASSWORD
の代わりに利用しています。
App Store Connectで管理するアプリ情報に対して悪意あるアクセスが可能になるリスクがあると判断して変更しました。
これはAppleの公式サイト生成方法が紹介されていますので、こちらを参考に新規作成して再設定しました。
MATCH_PASSWORDの変更
証明書とprovisioning profileの管理を行うFastlane matchで利用するMATCH_PASSWORD
。
証明書が悪意ある利用をされるリスクがあると判断して変更しました。
このパスワードは任意のもので構いません。
MATCH_KEYCHAIN_PASSWORDの変更
こちらもMATCH_PASSWORD
と同様の理由で変更しました。
MATCH_PASSWORDを更新したので、証明書とprovisioning profileの更新も必要になりました。
一度fastlane match nuke {development | adhoc | appstore}
したあと、fastlane match {development | adhoc | appstore}
で更新します。
更新時にMATCH_KEYCHAIN_PASSWORD
が聞かれるので、任意のもので変更します。
感想
「この設定って何に使ってるんだっけ」とか、「どうやって変更するんだっけ」みたいなものがありました。
一度CIを設定するとその後設定を変更する機会もなくて忘れ切ったり、途中から入ったプロジェクトだとそもそもわからない設定項目があったりしてちょっと大変でした。
また似たような対応が必要になったときに忘れないように。同じように対応が必要な人の参考になるようにまとめてみました。参考になれば幸いです。
Discussion