- Title: Cracking IoT Security Can LLMs Outsmart Static Analysis Tools?
- ArXiv ID: 2601.00559
- 발행일: 2026-01-02
- 저자: Jason Quantrill, Noura Khajehnouri, Zihan Guo, Manar H. Alalfi
📝 초록
스마트 홈 IoT 애플리케이션의 급속한 채택은 가정 자동화를 혁신적으로 변화시켰지만, 이에 따른 규칙 상호작용 위협(RIT)을 해결하기 위한 도전 과제가 발생했습니다. 기존 접근 방식은 정밀도는 높으나 대규모 코드베이스에서의 확장성과 적응력이 부족합니다. 본 논문에서는 대형 언어 모델(LLMs)이 IoT 자동화 시스템에 대한 보안 분석을 개선하는 데 얼마나 효과적인지 평가했습니다.
💡 논문 해설
1. **기여 1: LLMs의 RIT 검출 성능 평가**
대형 언어 모델(LLMs)이 실제 데이터에서 규칙 상호작용 위협(RIT)을 어떻게 인식하고 분류하는지 평가했습니다. 이는 자동화 시스템에 대한 보안 문제를 해결하기 위한 첫걸음입니다.
기여 2: 모델 크기와 성능의 관계 탐색
LLMs의 파라미터 크기가 커짐에 따라 RIT 분석에서 얼마나 더 정확하고 일관된 결과를 제공하는지 조사했습니다. 이는 모델이 복잡한 규칙 상호작용을 이해하는 데 필요한 능력을 보여줍니다.
기여 3: 하이브리드 접근 방식의 효과성 검증
기호 분석과 LLM 기반 컨텍스트 검증을 통합한 하이브리드 방법론이 단독 사용보다 얼마나 더 정확하고 신뢰할 수 있는지 평가했습니다.
스마트 홈 IoT 애플리케이션의 급속한 채택은 가정 자동화를 혁신적으로 변화시켰고, openHAB과 같은 플랫폼을 사용하여 복잡하고 규칙 기반 시스템을 생성할 수 있게 했습니다. 이러한 시스템은 Trigger-Action-Condition (TAC) 프레임워크를 사용해 자동화 규칙을 정의하며, 이는 강력하지만 우발적으로 규칙 상호작용 위협(RITs)을 일으킬 수 있습니다. RITs는 여러 규칙 간 상호 작용으로 인해 발생하는 예기치 않은 행동, 즉 보안 취약점이나 기능 실패를 말합니다. 이러한 위협을 탐지하는 것은 어렵습니다. 이는 규칙 사이의 의미적 및 구조적 관계에 대한 깊은 이해가 필요하기 때문입니다.
전통적인 접근 방식인 oHIT와 같은 기호 추론 기반 정적 분석 도구는 높은 정확도로 RITs를 식별하는 데 효과적이지만, 대규모 및 동적 코드베이스에 대한 확장성과 적응력이 부족해 실제 사례에서 실용성이 제한됩니다.
대형 언어 모델(LLMs)의 급속한 발전은 IoT 자동화 시스템에서 보안 관련 행동을 분석하는 새로운 가능성을 열었습니다. GPT-4o, Llama 3.1 (8B 및 70B), Gemini-2.5-Pro, DeepSeek-R1과 같은 모델들은 자연어와 코드 구조를 이해하는 능력이 더욱 향상되어, openHAB과 같은 플랫폼에서 규칙 상호작용 위협(RITs)을 식별할 수 있을지에 대한 의문을 제기하고 있습니다. 이들 모델의 패턴 인식 및 문맥 해석 능력은 잘 알려져 있지만, 상호 작용하는 규칙 간 구조적 추론이 필요한 작업에서 그 신뢰성은 아직 불확실합니다.
본 연구에서는 다양한 실험 조건, 즉 다중 레이블 RIT 분류, 세분화된 카테고리 차별화 및 0-샷, 1-샷, 2-샷 프롬프팅을 포함하여 대표적인 최신 LLM 집합을 평가했습니다. 모든 모델은 원래 oHC/IoTB 데이터셋과 강건성 테스트를 위한 변이 데이터셋에서 일관되게 평가되었습니다. 본 연구는 다음 4개의 연구 질문에 따라 진행됩니다.
RQ1 (기본 기능): 사전 학습된 LLMs(표준 모델)은 실제 openHAB 데이터셋에서 규칙 상호작용 위협(RITs)을 어떻게 검증하고 분류할 수 있는가? 이 연구 질문은 LLM만의 성능을 평가합니다.
RQ2 (모델 확장 효과): LLM의 파라미터 크기(Llama 3.1 8B vs 70B)는 RITs를 분석할 때 컨텍스트 검증 정확도와 추론 일관성에 어떻게 영향을 미치는가? 이 연구 질문은 모델 규모와 추론 변이를 탐구합니다.
RQ3 (확장성 및 일반화): 모든 인스턴스가 진정한 취약점을 나타내는 대규모, 변이 기반 데이터셋에 적용되었을 때 접근 방식의 성능 우위가 유지되는가? 이 연구 질문은 강건성, 확장성, 일반화를 테스트합니다.
RQ4 (하이브리드 효과): 제안된 하이브리드 워크플로(기호 분석과 LLM 기반 컨텍스트 검증 통합)는 실제 및 변이 데이터셋에서 단독 접근 방식에 비해 정밀도를 향상시키고 거짓 양성 결과를 줄이는 데 얼마나 효과적인가? 이 연구 질문은 하이브리드와 독립형 성능을 비교합니다.
이러한 질문들을 통해 우리는 LLMs의 자동화 시스템에 대한 보안 분석 향상 가능성에 대해 중요한 통찰력을 제공하고자 합니다.
배경
OpenHAB 규칙은 시스템 이벤트에 반응하여 명령을 수행함으로써 가정 자동화의 핵심 논리를 제공합니다. 각 규칙은 세 가지 주요 섹션으로 구조화됩니다:
Trigger: 이러한 트리거는 규칙 평가를 시작하는 촉매제입니다. 특정 이벤트, 예를 들어 항목 상태 변경(예: 움직임 감지기가 “ON"으로 전환됨), 항목에 명령 수신(예: 불이 꺼짐) 또는 시간 이벤트(예: 하루 중 특정 시간대나 cron 스케줄)로 정의됩니다.
Conditions (선택적): 논리 필터 역할을 하는 조건은 규칙의 행동이 진행되어야 할지 여부를 결정하는 불리언 표현식입니다. 트리거가 발동되면 조건이 평가되며, 모든 조건이 true를 반환해야만 행동이 실행됩니다. 예를 들어, 움직임으로 트리거된 불을 켜기 전에 석양 이후인지 확인하는 조건이 있을 수 있습니다.
Actions: 이 섹션은 규칙이 성공적으로 트리거되고 조건이 충족되었을 때 수행되는 실제 작업을 정의합니다. 행동은 규칙의 “그럼” 부분이며, 단순한 명령(예: Light.send(OFF))에서 복잡한 스크립트 실행, 알림 전송 또는 변수에 대한 수학적 계산까지 다양할 수 있습니다.
이러한 규칙들은 Xtend 프로그래밍 언어로 작성되며, 표준 Java보다 더 간결하고 표현력 있는 문법을 제공하면서 Java 생태계와 완전히 호환됩니다. 규칙 구문 자체는 Xbase 및 Xtend 프레임워크를 기반으로 하여 정확한 형식을 강제하며, 규칙 이름을 포함하여 하나 이상의 트리거 선언, 조건 집합(선택적), 행동을 포함하는 스크립트 블록이 필요합니다. 따라서 openHAB Rules 파일(*.rules 확장자)은 여러 개별적으로 작동하는 규칙으로 구성된 모듈화된 스크립트입니다.
PLAINTEXT
rule "<규칙 이름>"
when
<TRIGGER_CONDITION> [or <TRIGGER_CONDITION2> [or ...]]
then
<스크립트 블록>
end
클릭하여 더 보기
openHAB 생태계에서 자동화 규칙은 상호 연결된 장치의 동작을 조정하여 반응적이고 지능적인 환경을 만듭니다. 이 유연성은 강점이지만, 동시에 각각 올바르고 선의로 작성되었음에도 불구하고 여러 규칙 간 예기치 않거나 악의적인 상호 작용을 일으키는 기회를 제공합니다. 이러한 상호 작용은 *규칙 상호작용 위협(RITs)*으로 알려져 있으며, 장치가 예측 불가능하거나 안전하지 않게 행동할 수 있습니다.
다수의 영향력 있는 연구를 검토한 후, 우리는 이들 관점을 세 가지 기본적인 규칙 상호작용 위협 카테고리로 통합했습니다. 이러한 카테고리는 규칙 간(자기 상호 작용을 제외)의 핵심 논리적 취약점들을 나타내며, 각각은 어떻게 규칙이 서로에 대해 의존하거나 상충하는지에 따라 다양한 형태로 나타날 수 있습니다.
중요하게도 RIT의 존재는 악의적인 작성자에게서 비롯된 것은 아닙니다. 많은 RIT들은 복잡한 규칙 상호 작용에서 발생하며, 실제 스마트 홈 설정에서도 발생할 수 있습니다. 다음 섹션에서는 각 RIT 카테고리를 자세히 설명하고 이러한 행동이 실제로 어떻게 나타나는지 예시를 제공합니다.
style="width:95.0%" />
RIT 개요
Action Contradiction - AC: 두 규칙이 동시에 발생하거나 서로 중단할 수 있는 경우입니다. 이들 규칙은 상충되는 행동을 가질 수 있어 원하지 않는 결과를 초래합니다. Action Contradictions는 많은 규칙 집합이 이러한 위협의 전반적인 구조와 일치하기 때문에 가장 일반적으로 oHIT에 의해 검출됩니다. 이를 고려해, oHIT 개발자는 이러한 유형의 규칙을 재평가하여 전체 자동화 시스템에 대한 실제 위협 여부를 판단해야 한다고 언급했습니다.
PLAINTEXT
rule "일몰 때 물 분무기 켜기"
when
~Time cron "0 00 18 * * ?"~
then
`sendCommand(Window_Lock, ON)`
sendCommand(TurnOnWaterSprinklers, ON)
end
클릭하여 더 보기
PLAINTEXT
rule "온도가 너무 높을 때 창문 열기"
when
~Temperature.state >= 25~
then
`sendCommand(Window_Lock, OFF)`
end
클릭하여 더 보기
Action Contradiction의 예는 [tab:AC1] 및 [tab:AC2]에 나와 있습니다. 이 규칙 집합의 목적은 다음과 같습니다: 첫 번째 규칙은 매일 일몰(오후 6시) 때 물 분무기를 켜고, 두 번째 규칙은 내부 온도가 섭씨 25도 이상이면 창문을 열어 신선한 공기가 들어오게 합니다. 그러나 이 두 규칙은 동시에 발생할 수 있어 Window_Lock에 대한 상충되는 결과를 초래합니다.
하지만 예상치 못한 사용에서는 첫 번째 규칙이 일몰 때 창문을 잠그고 물 분무기를 켜지만, 집 안의 온도가 높아져 두 번째 규칙이 실행되어 창문을 열 수 있습니다. 이 예기치 않은 행동이 발생하면, 분수에서 나오는 물이 집 안으로 들어와 손상을 일으킬 수 있습니다.
Weak Action Contradiction - WAC: 규칙 집합 내에서 적어도 하나의 규칙이 조건을 포함할 때 발생합니다. 두 개의 규칙 모두 조건을 가지면 시간이나 상태(ON/OFF 상태)에서 겹치게 됩니다. WAC는 트리거가 겹쳐야 하며, 결과 행동은 상충되어야 합니다.
Trigger Cascade - TC: 이 규칙 집합은 연쇄 작용을 가지고 있습니다. 한 규칙의 행동이 두 번째 규칙의 실행을 트리거합니다. 이러한 규칙 집합은 사용자가 오랜 시간 동안 인식하지 못하는 일련의 예기치 않은 사건을 초래할 수 있어 위험합니다.
PLAINTEXT
rule "아침 활동 자동화"
when
~Time cron "0 30 08 * * ?" && day.state == "Weekday"~
then
sendCommand(Kitchen_Light, ON)
`sendCommand(Foyer_Light, ON)`
sendCommand(CoffeeMaker, ON)
sendCommand(MorningNews, ON)
end
클릭하여 더 보기
PLAINTEXT
rule "문과 차고 문 잠금 해제"
when
~Foyer_Light changed to ON~
then
@if(time >= 8:00 && time <= 9:00)@
`sendCommand(Door_Lock, OFF)`
`sendCommand(Garage_Door, OPEN)`
end
클릭하여 더 보기
[tab:TC1] 및 [tab:TC2]는 Trigger Cascade의 예입니다. 이 규칙 집합의 목적은 사용자에게 아침 활동을 자동화하는 것입니다. 첫 번째 규칙은 특정 시간(주말이 아닌 주중 8시 30분)에 주방과 포레 오일IGHT, 커피 머신 및 뉴스를 켭니다. 두 번째 규칙은 포레 오일IGHT가 켜지고 시간이 아침 8시에서 9시 사이인 경우 사용자가 집을 나가기 위해 준비하고 있다고 가정하여 문과 차고 문을 열고 잠금을 해제합니다.
하지만 예상치 못한 사용에서는 사용자가 설정된 시간에 집에 있지 않거나 출근하지 않는다면, 첫 번째 규칙이 실행되어 두 번째 규칙을 트리거할 것입니다. 이로 인해 문과 차고 문이 열려 있어 침입자들이 쉽게 들어올 수 있습니다.
Weak Trigger Cascade - WTC: 적어도 하나의 규칙이 조건을 포함할 때 연쇄 작용은 약한 것으로 정의됩니다. 두 개의 규칙 모두 조건을 가지면 시간이나 상태에서 겹치게 됩니다.
Strong Trigger Cascade - STC: 가장 간단한 RIT 유형입니다. 규칙 집합에는 어떠한 조건도 포함되어서는 안 되며, 한 규칙이 다른 규칙의 실행을 트리거할 수 있어야 합니다.
Condition Cascade - CC: 이 규칙 집합은 두 개의 규칙 모두 적어ast 규칙들은 상호 작용하는 경우에만 발생합니다. 조건 캐스케이드는 두 가지 유형으로 나뉩니다: Weak Condition Cascade (WCC)와 Strong Condition Cascade (SCC).
PLAINTEXT
rule "화재 경보가 울릴 때 창문 열기"
when
FireAlarmRinging changed to ON
then
~if (temperature.state >= 57)~
`sendCommand(window_Lock, OFF)`
end
클릭하여 더 보기
PLAINTEXT
rule "취침 시간에 에어컨 켜기"
when
~Time cron "0 30 22 * * ?"~
then
`if (window_Lock == OFF)`
`sendCommand(window_Lock, ON)`
sendCommand(turnAC, ON)
end
클릭하여 더 보기
[tab:CC1] 및 [tab:CC2]는 Condition Cascade RIT의 예입니다. 이 규칙 집합의 목적은 화재 발생 시 창문을 열어 사람들을 도망칠 수 있게 하고, 취침 시간에 에어컨이 켜져 창문을 잠그는 것입니다.
하지만 예상치 못한 사용에서는 화재가 취침 시간 동안 발생하면, 온도가 57도 이상일 경우 첫 번째 규칙이 창문을 열어 신선한 공기가 들어오게 합니다. 그러나 만약 취침 시간이 되면 두 번째 규칙은 창문을 잠그고 에어컨을 켜므로 사람들은 더 어려운 도망칠 수 있습니다.