“블록을 선으로 이으면 프로그램이 된다.” 집에서 라즈베리파이로 스마트홈을 꾸며 본 분이라면, 혹은 공장 설비 데이터를 모아 본 분이라면 한 번쯤 들어 봤을 노드레드(Node-RED) 이야기예요. 그런데 이 편리한 도구가 지금 실제 공격을 받고 있어요. 지멘스 산업용 컴퓨터에 들어간 노드레드의 최고 위험 등급 결함 CVE-2026-58115(10점 만점에 10점)를 노린 공격이, 결함 공개 약 두 달 반 만에 처음 확인됐거든요.
무서운 점은 공격이 아주 간단했다는 거예요. 공격자는 요청 한 번으로 블록 두 개를 이어 붙였고, 그 순간 서버가 남의 명령을 실행하기 시작했어요. 오늘은 노드레드가 뭔지부터, 왜 ‘로그인 없는 편집기’가 문제인지, 그리고 집이든 회사든 노드레드를 쓰는 분이 오늘 확인할 5가지를 초보 눈높이로 정리해 볼게요.

한눈에 보기: 무슨 일이 있었나
| 항목 | 내용 |
|---|---|
| 대상 | 노드레드(Node-RED). 지멘스 산업용 컴퓨터 SIMATIC IoT2050 시리즈에 들어간 버전에서 결함 번호가 붙었어요 |
| 결함 번호 | CVE-2026-58115 (지멘스 보안 권고 SSA-834709) |
| 심각도 | 10점 만점에 10점. 로그인 없이 원격에서 최고 권한으로 코드 실행 가능 |
| 처음 공개 | 2026년 8월 11일 (지멘스가 수정판과 함께 공개) |
| 실제 공격 확인 | 10월 30일, 보안 기업 벌른체크(VulnCheck)의 미끼 시스템에서 포착 |
| 공격 횟수 | 같은 IP 주소가 10월 30일~11월 1일 이 결함을 16차례 공격 |
| 공격 결과 | 리눅스용 봇 프로그램 내려받아 실행, 일부는 언제든 다시 들어올 수 있는 웹셸 설치 |
| 고친 버전 | IoT2050 계열은 V4.3.4-1 이상(일부 매체 표기 4.3.4.1) |
노드레드가 뭐예요? 레고처럼 잇는 자동화 도구
노드레드는 웹 브라우저 편집 화면에서 블록(노드)을 끌어다 놓고 선으로 이어서 “이런 일이 생기면 저걸 해라”를 만드는 도구예요. 코딩을 몰라도 자동화를 만들 수 있어서 인기가 많아요.
예를 들어 볼게요.
- 집에서: “현관 센서가 열리면 → 거실 불을 켜고 → 휴대폰으로 알림 보내기”
- 공장에서: “기계 온도가 80도를 넘으면 → 기록하고 → 관리자에게 메시지 보내기”
- 클라우드에서: “매일 아침 9시에 → 날씨 정보를 가져와 → 사내 메신저에 올리기”
라즈베리파이 같은 작은 컴퓨터부터 클라우드 서버까지 어디서나 돌아가서 제조, 의료, 가정·산업 자동화에 두루 쓰여요. 지멘스는 이 노드레드를 산업용 컴퓨터 SIMATIC IoT2050에 넣어 팔았고, 바로 이 제품에서 결함 번호가 붙었어요.

왜 블록 두 개면 충분했을까?
노드레드에는 기본으로 들어 있는 블록이 많은데, 그중 두 개가 이번 공격의 핵심이었어요.
| 블록 이름 | 원래 하는 일 | 공격에서 한 일 |
|---|---|---|
| inject | 정해진 시간이나 시작할 때 신호를 한 번 보내요 (알람 시계 역할) | 배포 1초 뒤 자동으로 신호를 쏴서 사람 손 없이 다음 블록을 깨움 |
| exec | 서버에서 명령어를 실행해요 (원래는 백업 스크립트 실행 같은 용도) | 공격자가 숨겨 둔 다운로드 명령을 그대로 실행 |
| http in | 웹 주소로 요청을 받아요 (간단한 웹 API 만들기) | /cmd 같은 주소를 만들어 나중에 아무 명령이나 보낼 수 있는 ‘뒷문(웹셸)’으로 사용 |
비유하면 이래요. 노드레드 편집기는 공장 제어실의 배선판이에요. 정상이라면 열쇠를 가진 사람만 배선을 바꿀 수 있어야 하는데, 문이 잠기지 않은 제어실에 낯선 사람이 들어와 “알람 시계”와 “명령 실행기”를 선으로 이어 놓고 나간 셈이에요. 1초 뒤 알람이 울리면, 명령 실행기가 공격자가 시킨 일을 시작하죠.
결함의 정체는 바로 이 ‘문 잠금(인증)’이 빠져 있었다는 거예요. 지멘스 설명에 따르면 해당 제품은 노드레드의 HTTP 접속 창구에서 인증을 요구하지 않아, 로그인하지 않은 원격 공격자가 악성 작업 흐름(flow)을 만들어 최고 권한으로 코드를 실행할 수 있었어요.
공격은 실제로 어떻게 흘러갔나
벌른체크가 공개한 분석을 단계별로 풀어 보면 이래요.
| 단계 | 공격자가 한 일 | 쉽게 말하면 |
|---|---|---|
| 1 | 노드레드 관리 주소(/flows)에 요청 하나를 보냄 |
잠기지 않은 배선판에 새 설계도를 통째로 끼워 넣기 |
| 2 | 설계도 안 명령은 세 겹으로 인코딩(암호처럼 변환) | 내용물을 상자 세 개에 겹겹이 포장해 한눈에 안 보이게 |
| 3 | inject가 1초 뒤 신호 → exec가 명령 실행 | 배포 즉시 자동 실행, 클릭할 사람 필요 없음 |
| 4 | 다른 서버에서 bot-linux-amd64 파일을 받아 메모리 기반 공간(/dev/shm/.b)에 숨겨 실행 |
점(.)으로 시작하는 숨김 이름으로 몰래 깔기 |
| 5 | 이후엔 셸 스크립트를 먼저 받는 2단계 방식, /tmp/.kworker처럼 리눅스 커널 작업으로 위장한 파일도 사용 |
정상 프로그램인 척 이름표 바꿔 달기 |
| 6 | 일부 요청은 다운로드 대신 /cmd 같은 주소를 만들어 웹셸 설치 |
언제든 다시 들어올 수 있는 비밀 뒷문 만들기 |
여기서 중요한 차이가 하나 있어요. 메모리에서 도는 봇은 재부팅하면 사라질 수 있지만, 웹셸은 노드레드 설정(flow) 안에 저장되기 때문에 재시작해도 남아요. “껐다 켰으니 괜찮겠지”가 통하지 않는 이유예요. 다만 벌른체크는 봇 파일 자체는 확보하지 못해서, 그것이 암호화폐 채굴기인지 디도스 봇인지 원격 조종 도구인지는 알 수 없다고 밝혔어요.

누가 공격했나? ‘닥치는 대로’ 훑는 자동 공격
공격은 IP 주소 하나에서 왔어요. 마이크로소프트 클라우드 네트워크에 속한 주소였고 위치는 브라질로 잡혔어요. 그렇다고 마이크로소프트나 브라질이 범인이라는 뜻은 아니에요. 클라우드 주소는 대개 빌리거나 탈취한 가상 서버라서 주소만으로 공격자를 특정하기 어려워요.
| 관찰 내용 | 숫자 | 의미 |
|---|---|---|
| 노드레드 결함 공격 횟수 | 16회 (10/30~11/1) | 한 번 시도하고 끝난 게 아님 |
| 같은 주소가 노린 결함 수 | 8개 | 아파치 솔라, 기테아, 줌라 등 서로 관계없는 제품까지 |
| 같은 주소의 전체 공격 기록 | 125회 | 특정 회사 표적이 아닌 대량 자동 탐색 |
| 사용한 접속 프로그램 종류 | 최소 5가지 | 여러 공격자가 같은 서버를 빌려 쓰는 정황 |
벌른체크 연구원 패트릭 개리티는 이를 닥치는 대로 훑는 대량 탐색으로 봤어요. 즉 “유명 공장만 노린다”가 아니라, 인터넷에 열려 있고 관리자 로그인(adminAuth)이 설정되지 않은 노드레드라면 집에 있는 라즈베리파이든 공장 설비든 똑같이 자동으로 찾아내 공격한다는 뜻이에요. 참고로 벌른체크의 미끼 시스템은 지멘스 제품이 아니라 일반 노드레드였고, 지멘스 제품 자체가 공격당한 사례는 아직 관측되지 않았다고 해요.
“나는 지멘스 장비 없는데요?” 그래도 봐야 하는 이유
결함 번호는 지멘스 제품에 붙었지만, 문제의 뿌리는 “노드레드 편집기가 로그인 없이 열려 있는 상태”예요. 노드레드는 설정 파일(settings.js)에서 adminAuth를 따로 켜지 않으면 편집기와 관리 API에 로그인 없이 들어갈 수 있어요. 집 안 네트워크에서만 쓴다면 위험이 작지만, 공유기 포트 포워딩이나 클라우드 서버로 밖에서 열어 둔 순간 이번 공격과 같은 처지가 돼요.
| 내 상황 | 위험도 | 할 일 |
|---|---|---|
| 지멘스 SIMATIC IoT2050 + 노드레드 사용 | 매우 높음 | V4.3.4-1 이상으로 즉시 업데이트, 노드레드 강화 또는 제거 |
| 클라우드 서버에 노드레드, 로그인 설정 없음 | 매우 높음 | 당장 외부 접속 차단 → adminAuth 설정 → 흐름 점검 |
| 집 라즈베리파이, 포트 포워딩으로 밖에서 접속 | 높음 | 포트 포워딩 끄고 VPN으로 접속, adminAuth 설정 |
| 집 안 네트워크에서만 사용 | 낮음 | 그래도 adminAuth 켜 두기(집 안 다른 기기가 감염될 수도 있으니까요) |
| 로그인(adminAuth) 이미 설정 + HTTPS | 낮음 | 비밀번호 강도 확인, 최신 버전 유지 |
오늘 확인할 5가지

1. 밖에서 내 노드레드가 보이나요?
노드레드는 기본적으로 1880번 포트를 써요. 휴대폰 데이터(와이파이 끈 상태)로 http://내공인IP:1880에 접속해 보세요. 편집 화면이 뜨면 바로 외부에 열려 있는 거예요. 공유기 관리 화면에서 1880 포트 포워딩이 있는지도 확인하세요. 밖에서 써야 한다면 포트를 직접 열기보다 VPN을 거치는 편이 안전해요.
2. 편집기에 자물쇠(adminAuth) 걸기
노드레드 설정 파일 settings.js에서 adminAuth 부분의 주석을 풀고 아이디와 비밀번호를 넣으면 편집기와 관리 API에 로그인이 생겨요. 비밀번호는 평문이 아니라 해시값으로 넣어야 하는데, 터미널에서 아래 명령으로 만들 수 있어요.
node-red admin hash-pw
지멘스와 노드레드 안내서가 권하는 강화 방법을 표로 정리하면 이래요.
| 강화 항목 | 무엇을 막나 |
|---|---|
| 편집기·관리 API 로그인(아이디/비밀번호 또는 OAuth·OpenID) | 이번 공격처럼 낯선 사람이 설계도를 바꾸는 것 |
| HTTPS 켜기 | 오가는 비밀번호와 데이터를 엿보는 것 |
| HTTP 노드·대시보드에 기본 인증 | 내가 만든 웹 주소를 남이 마음대로 부르는 것 |
3. 내가 안 만든 블록 찾기
편집기에 들어가 모든 탭을 훑어보세요. 특히 내가 만든 기억이 없는 exec 블록, /cmd 같은 이상한 주소의 http in 블록, 이름 없는 빈 탭이 있다면 의심해야 해요. 이미 뚫렸을 가능성이 있다면 블록만 지우고 끝내지 말고, 서버의 /tmp와 /dev/shm에 점(.)으로 시작하는 낯선 파일이 있는지, 모르는 프로세스가 도는지도 확인하세요. 확신이 서지 않으면 백업해 둔 깨끗한 흐름으로 새로 설치하는 게 가장 확실해요.
4. 업데이트하기
지멘스 SIMATIC IoT2050(Advanced, Basic, M.2, SM)을 쓴다면 산업용 운영체제를 V4.3.4-1 이상으로 올리세요. 지멘스는 11월 4일 권고를 갱신하면서 영향받는 제품 3개를 추가로 확인했는데, 같은 8월 11일 수정판으로 해결된다고 밝혔어요. 일반 노드레드 사용자도 최신 버전을 유지하는 습관을 들이세요.
5. 안 쓰면 끄거나 지우기
지멘스가 권고한 임시 조치 첫 번째가 “노드레드 제거”예요. 예전에 한번 써 보고 방치한 라즈베리파이나 서버가 있다면, 그게 가장 위험한 문일 수 있어요. 안 쓰는 서비스는 꺼 두는 것만으로도 공격받을 자리가 줄어들어요.
자주 묻는 질문
| 질문 | 답 |
|---|---|
| 홈어시스턴트에서 노드레드 애드온을 쓰는데 위험한가요? | 집 안에서만 접속하고 밖으로 포트를 열지 않았다면 위험이 작아요. 다만 외부 접속을 열어 뒀다면 로그인 설정과 접속 경로를 꼭 확인하세요. |
| 재부팅하면 해결되나요? | 아니요. 메모리 속 봇은 사라질 수 있지만 흐름 안에 심어 둔 웹셸은 남아요. 흐름 점검이 필수예요. |
| 미국 정부 목록에도 올랐나요? | 벌른체크는 자체 ‘악용 취약점 목록’에 올렸지만, 미국 CISA는 보도 시점까지 공식 목록(KEV)에 올리지 않았어요. |
| 공격자는 누구인가요? | 아직 몰라요. 클라우드 주소 하나에서 여러 결함을 대량으로 훑은 기록만 확인됐고, 여러 공격자가 같은 서버를 빌려 썼을 가능성도 있어요. |
정리하면
이번 사건의 교훈은 “최신 해킹 기술”이 아니라 잠기지 않은 문이에요. 결함이 공개되고 패치가 나온 지 두 달 반이 지나서야 공격이 시작됐는데, 그 사이 업데이트하지 않았거나 로그인 없이 열어 둔 곳이 표적이 됐어요. 노드레드처럼 편하고 강력한 도구일수록 “누가 이 배선판을 만질 수 있나”를 먼저 확인해 주세요. 오늘 5분만 투자해서 1880 포트와 adminAuth 두 가지만 점검해도 이번 같은 자동 공격은 대부분 피할 수 있어요.