TECH 으로 돌아가기
TECH HACKER NEWS 오늘 7분 읽기 27 READS

커피머신 한 대가 10일 만에 데이터 1TB를 썼다: 스마트 가전이 네트워크를 폭주시키는 이유

커피머신 한 대가 10일 만에 데이터 1TB를 썼다: 스마트 가전이 네트워크를 폭주시키는 이유
SOURCE IMAGE · HACKER NEWS
커피머신 한 대가 10일 만에 데이터 1TB를 썼다: 스마트 가전이 네트워크를 폭주시키는 이유

무슨 일이 있었나

한 남성이 부모님 댁 인터넷 사용량을 살펴보다가 깜짝 놀랐어요. 범인은 넷플릭스도 게임 다운로드도 아닌 스마트 커피머신이었거든요. 이 기계가 10일 동안 데이터를 약 1TB나 썼대요. 커피 내리는 데 인터넷이 왜 그렇게 많이 필요했을까요?

웃긴 해프닝처럼 보이지만 IoT(사물인터넷, 인터넷에 연결된 가전이나 센서) 기기를 만드는 개발자라면 꽤 뜨끔한 이야기예요.

1TB가 어느 정도냐면

계산해보면 감이 와요. 1TB를 10일로 나누면 하루 100GB, 시간당 약 4.2GB예요. 초 단위로 바꾸면 약 9Mbps를 24시간 쉬지 않고 쓴 셈이고요. 넷플릭스 HD 화질이 시간당 최대 3GB 정도니까, 커피머신이 HD 영화를 열흘 내내 틀어놓은 것보다 데이터를 더 쓴 거예요. 커피머신이 정상적으로 주고받을 데이터는 원격 추출 명령, 상태 정보, 가끔 받는 펌웨어 업데이트 정도라서 평소엔 하루 몇 MB 수준이면 충분해요.

이런 일은 왜 생길까

이번 사례의 정확한 원인과는 별개로, 개발자 관점에서 이런 데이터 폭주를 일으키는 전형적인 시나리오가 몇 가지 있어요.

1. 업데이트 무한 루프. 펌웨어를 내려받다가 중간에 끊기거나 검증에 실패하면 처음부터 다시 받는 로직이 흔해요. 여기서 검증은 체크섬, 그러니까 파일이 온전한지 확인하는 값을 비교하는 거예요. 그런데 서버 쪽 파일이 깨진 것처럼 실패 원인이 영구적이면, 기기는 수백 MB짜리 파일을 끝없이 다시 받게 돼요.

2. 백오프 없는 재시도. 서버 연결에 실패하면 곧바로, 무한히 다시 시도하는 코드예요. 기기 한 대만 보면 사소해 보여도, 같은 펌웨어를 쓰는 수십만 대가 동시에 이러면 제조사 서버 입장에선 사실상 셀프 디도스가 돼요.

3. 로그·텔레메트리 폭주. 기기 상태를 서버로 보내는 기능이 버그 때문에 같은 데이터를 계속 쌓아서 보내거나, 에러 로그가 또 다른 에러를 낳는 연쇄에 빠지는 경우예요.

4. 해킹당한 기기. 2016년 Mirai 봇넷은 보안이 허술한 IP 카메라나 공유기 같은 IoT 기기를 대량으로 감염시켜서 대규모 디도스 공격에 동원했어요. 커피머신도 예외는 아니에요. 2020년에는 보안 업체 Avast의 연구원이 시판 스마트 커피머신의 펌웨어를 조작해서 기계를 마음대로 작동시키는 걸 시연하기도 했어요. 해킹당한 경우엔 다운로드보다 업로드 트래픽이 비정상적으로 많은 게 특징이에요.

IoT 개발자라면 꼭 챙길 것

가장 기본은 지수 백오프 + 지터예요. 이게 뭐냐면, 실패할 때마다 기다리는 시간을 1초, 2초, 4초, 8초처럼 두 배씩 늘리고(지수 백오프), 여기에 무작위 값을 섞어서(지터) 수많은 기기가 같은 순간에 몰려들지 않게 하는 거예요.

async function downloadWithBackoff(url, maxRetries = 5) {
for (let attempt = 0; attempt < maxRetries; attempt++) {
try {
return await download(url);
} catch (e) {
const cap = Math.min(2 ** attempt * 1000, 60000);
await sleep(Math.random() * cap);
}
}
throw new Error('오늘은 포기하고 내일 다시 시도');
}

여기에 더해서 이어받기(HTTP Range 요청)로 실패한 지점부터 다시 받게 하고, 기기 자체에 일일 데이터 사용량 상한을 걸어두면 좋아요. 그리고 서버에서 기기별 트래픽을 모니터링해서 이상한 값을 잡아내야 해요. 이번 사례처럼 사용자가 먼저 알아차렸다면 제조사로서는 이미 늦은 거니까요.

한국 개발자와 사용자에게 주는 시사점

한국은 유선 인터넷이 대부분 정액제라서, 이런 폭주가 일어나도 요금 폭탄이 날아오지 않아요. 그래서 오히려 알아채기가 더 어려워요. 삼성 SmartThings나 LG ThinQ처럼 국내 가전도 대부분 네트워크에 연결되니까, 이런 버그가 수많은 집에서 조용히 일어나고 있을 수도 있어요.

집에서 할 수 있는 건 간단해요. 공유기 관리 페이지에서 기기별 트래픽 통계를 가끔 확인하고, 가전제품은 게스트 와이파이나 별도 네트워크로 분리해두세요. 조금 더 해보고 싶다면 Pi-hole이나 AdGuard Home 같은 DNS 필터를 설치해서 어떤 기기가 어디와 얼마나 통신하는지 들여다볼 수 있어요. 생각보다 많은 가전이 생각보다 자주 어딘가와 통신하고 있다는 걸 알게 될 거예요.

마무리

핵심 한 줄: 인터넷에 연결된 기기라면 실패도 얌전하게 처리할 줄 알아야 해요.

여러분 집 공유기에서 트래픽을 가장 많이 쓰는 기기는 뭔가요? IoT 펌웨어를 만든다면, 데이터 폭주를 막으려고 어떤 안전장치부터 넣으시겠어요?


🔗 출처: Hacker News

SOURCE · HACKER NEWS
원문 전체 보기 → https://www.dexerto.com/entertainment/man-discovers-his-pare...
SHARE
NEXT · CHOOSE

변화를 읽었다면,
내가 만들 수익 구조를 고릅니다.

정보를 더 모으는 데서 멈추지 않고, 광고·외주·판매·중개·구독 중 내 상황에 맞는 출발점을 정해보세요.

21가지 수익 구조 살펴보기 →
처리 중...