내 Stripe 매출의 16.7%가 사기 검사를 우회하고 있다는 것을 발견하고 (수정 방안을 구축함)
Source: Dev.to
배경
지난 주 친구의 SaaS 비즈니스(연간 약 $50 k ARR)가 카드‑테스트 공격으로 Stripe에 의해 갑자기 차단되었습니다.
Stripe Radar가 이미 활성화돼 있었기 때문에 우리는 안전하다고 가정했습니다.
문제
거래 로그를 파고들면서 기본 설정 “blind spot”이 존재한다는 것을 발견했으며, 이는 많은 Indie Hackers에게 영향을 미칠 가능성이 있습니다.
사기성 페이로드 패턴
모든 사기 거래는 다음 JSON 구조를 공유했습니다:
{
"billing_details": {
"address": {
"city": null,
"country": null,
"line1": null
}
},
"payment_method_details": {
"card": {
"checks": {
"address_line1_check": null,
"address_postal_code_check": null
}
}
}
}
- 주소 미수집 – Stripe 기본 Checkout(특히 Apple Pay 또는 Link 사용 시)을 이용하면 전환율을 높이기 위해 청구 주소가 종종 생략됩니다.
- AVS 미적용 – 청구 주소가 없으면 Stripe는 주소 검증 서비스(AVS) 검사를 수행할 수 없습니다.
- Radar 사각지대 – 대부분의 기본 Radar 규칙은 위치 불일치(예: “IP 주소가 청구 주소와 일치하지 않음”)에 의존합니다. 청구 주소가 없으면 해당 규칙이 적용되지 않습니다.
저는 이를 “Ghost Transactions”(유령 거래) 라고 부릅니다. 이는 주요 방어층에 보이지 않습니다.
영향
내 Stripe 기록을 빠르게 감사해보니 **16.7 %**의 거래가 Ghost Transactions였습니다. 즉, 매출의 1/4이 눈에 보이지 않는 상태였습니다. 카드 테스터가 목표가 되면 Radar는 분쟁이 발생할 때까지 차단하지 못합니다.
감사 옵션
옵션 1 – 수동 확인
- Stripe 대시보드 → Payments를 엽니다.
- 카드 상세 정보를 마우스 오버합니다.
- “No address provided”(주소 미제공)와 AVS 검사가 “Unavailable”(사용 불가) 또는 “Unchecked”(검사 안 함)으로 표시되면 위험에 노출된 것입니다.
옵션 2 – 자동 감사 도구
매주 수동 검사를 수행하고 싶지 않아, 이 취약점을 자동으로 스캔하는 터미널 스타일 도구를 만들었습니다.
GhostAudit
- Audit – 제한된 읽기 전용 키를 사용해 최근 100건의 거래를 스캔합니다.
- Visualize – 정확한 “Ghost Rate”(위험 노출)를 시각화합니다.
👉 여기서 위험 노출을 확인하세요:
첫 100회 스캔은 무료입니다. 차단당하기 전에 설정을 확인하세요.