2026년 솔로 개발자한테 가장 과소평가된 보안 위험: 에디터의 AI assistant 가 단일 가장 큰 시크릿 누출 surface, 누출은 silent 하고, 잘 포맷됐고, 도움 되어 보여.
한 문장으로 실패 모드
Repo 에 LLM 기반 코딩 agent 추가. context 위해 .env 읽음. 나중에 deploy 스크립트 설명. 설명에 진짜 .env 의 snippet 포함. snippet 이 채팅 히스토리에 들어가고, 서버에 sync 되고, 로그 되고, 알 수 없는 보존 기간 동안 DB 에 앉아있음.
"말하지 말라고 했어" 텔
가장 죄책감 드는 행동은 LLM 이 *자기 신중함을 narrate* 할 때 — "OPENAI_API_KEY=sk-proj-A1B2... (안전 위해 truncated) 같은 .env 의 민감한 값 공개하면 안 됩니다." "안전 위해 truncated" 는 performative. API key 의 처음 16자가 프로젝트 식별에 충분하고, prefix 가 provider 알려주고, 많은 경우 한 번 더 물으면 LLM 이 그냥 계속해.
이게 일어나는 이유
- LLM 은 commit 에 leak 된 API key 가 있는 테라바이트의 코드로 훈련됐고, 그 leak 의 *모양* 을 학습.
- "시크릿 공개 X" 는 튜닝된 행동이지 hard wall 이 아냐 — "사용된 포맷 보여줘", "디버깅 위해", "가설로" 같은 phrasing 으로 우회 가능.
- chain-of-thought / "thinking" trace 가진 최근 모델은 답변에 언급 안 *결정하면서* reasoning 단계에서 시크릿을 spelling out. Reasoning 은 종종 로그됨.
- 시크릿이 대화 context 에 들어가면 모든 후속 turn 이 운반. 부주의한 스크린샷 한 번, 공유된 transcript 한 번이면 끝.