🔨

CodecovのBash Uploaderにセキュリティアップデートが入ったので、利用者としてやったことまとめ

2021/04/16に公開

背景

コードカバレッジの計測や可視化などを支援してくれるCodecovというサービスがあります。カバレッジのデータをアップロードするスクリプトが何者かに書き換えられたことにより、クレデンシャルやトークン、キーなどの情報が流出した可能性があることが確認されました。
https://about.codecov.io/security-update/

これに伴って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して、次のリンクを参考に新規作成して再設定しました。
https://docs.github.com/ja/github/authenticating-to-github/creating-a-personal-access-token

BITRISE_ACCESS_TOKENの新規作成、上書き

こちらは先ほどのGITHUB_API_TOKENと同じようなものになります。
他サービスからBitriseにアクセスするために利用している、Bitriseから払い出されているPersonal Access Token。

Bitriseに対して悪意あるアクセスが可能になるリスクがあると判断して変更しました。

利用しているものをremoveして、次のリンクを参考に新規作成して再設定しました。
https://devcenter.bitrise.io/jp/api/authentication/

FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORDの新規作成、上書き

次はApp Store Connectにアクセスするために利用するパスワードであるFASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORDです。2段階認証をパスするために利用しているもので、先述したFASTLANE_PASSWORDの代わりに利用しています。

App Store Connectで管理するアプリ情報に対して悪意あるアクセスが可能になるリスクがあると判断して変更しました。

これはAppleの公式サイト生成方法が紹介されていますので、こちらを参考に新規作成して再設定しました。
https://support.apple.com/ja-jp/HT204397

MATCH_PASSWORDの変更

証明書とprovisioning profileの管理を行うFastlane matchで利用するMATCH_PASSWORD

証明書が悪意ある利用をされるリスクがあると判断して変更しました。

このパスワードは任意のもので構いません。
https://docs.fastlane.tools/actions/match/#change-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