AES-CBC 비트플립 공격 빠른 감
CBC 모드는 이전 블록의 ciphertext가 다음 블록의 plaintext에 XOR로 섞입니다. 그래서 공격자는 C_{i-1}의 특정 비트를 뒤집어 P_i를 원하는 형태로 바꿀 수 있어요. 서버가 복호화 결과를 그대로 신뢰하고 role=user 같은 문자열을 파싱하면, role=admin으로 승격시키는 식의 변조가 가능합니다.
왜 위험한가
- CBC는 무결성 보장 없음
- 에러 메시지가 다르면 oracle로 이어질 수 있음
- 토큰/쿠키에 “사용자 권한”이 들어있으면 치명적
간단한 실전 흐름
- 목표 문자열 위치 계산(블록 경계 맞추기)
delta = desired ^ originalC_{i-1}에 delta XOR →P_i가 원하는 값으로 변형
방어 포인트
- Encrypt-then-MAC 또는 AEAD(GCM/ChaCha20-Poly1305) 사용
- 복호화 후 파싱 전에 MAC 검증
- 에러 메시지/타이밍 통일
CTF에선 흔하지만, 실서비스에서도 “레거시 CBC 쿠키”는 종종 살아 있습니다. 발견하면 즉시 교체가 정답입니다.