우리가 저작한 SimReady 에셋(3D 자산)을 모아 구성한 디지털 트윈 전장 위에 공격 시나리오(공격·방어)를 올려 공격을 체험·수행하고 방어를 확인 → "침해 → 구동 → 물리 피해"를 하나의 증거 리포트로. 합격·인증은 내지 않는다.
로봇·드론·무인체계를 움직이는 AI는 센서 교란·지시문 변조·통신 위조로 공격당할 수 있습니다. 이 제품은 그 AI를 디지털 트윈 전장(실물을 모사한 가상 환경)에 올려 실제로 공격해 보고, "사이버 침해 → 구동 → 물리 피해"가 어떻게 이어지는지를 하나의 증거 리포트로 냅니다. 합격·인증은 내지 않습니다 — 범위·한계·신뢰구간을 명시한 증거만.
에셋으로 구성한 디지털 트윈 전장 + 공격 시나리오 선택
같은 시드로 공격 체험·수행, 증거 저장
커버리지·사건률·신뢰구간, 방어 효과
도메인별·최악·한계(단일 점수 없음)
전장 84종의 평면도·공격 설명·검증 등급은 정직 — 전장 84종 전부에 실제 line-of-sight 사각을 심어 가림이 공격 결과를 좌우한다(occlude_geometric·mj_ray, 독립 harm-대비 C50 81/81 + 신규 좁은·다물체 2종 재현). 전장별로 조우 위치·접근 방향으로 다양화하고, 로봇은 전장 끝에서 L자로 꺾어 주행한다(엔진 경로추종, 75/84 전장·나머지 9종은 구조상 직진 유지) — 각 전장 카드의 경로 평면도에서 확인. 단 실패 모드는 동일 가림→충돌 클래스(단일 보행자·고정 속도)·baseline 안전은 충돌 회피이지 완주 아님·시뮬 미보정. 포토리얼 트랙(USD/Isaac)은 미구동.
지시문 변조·관측 교란으로 위험 행동 유발. 적대 탐색으로 최악 공격 발견.
● 구동고객이 자기 환경에서 돌린 SROS2/DDS 설정감사 결과 파일을 올리면 ROS 커버리지가 켜집니다. 무인증 /cmd_vel 명령토픽 → 명령주입 → 제한구역 침입을 가설 wedge로 연결(미입증).
고객이 돌린 Nmap·ZAP 등 스캔 결과 파일을 올리면 네트워크 커버리지가 켜집니다(열린 포트·무인증 서비스 노출).
○ 결과 인입고객이 돌린 CodeQL·Semgrep 코드 스캔 결과 파일을 올리면 SAST 커버리지가 켜집니다. 하드코딩 자격증명 → 센서 스푸핑 → 충돌을 가설 wedge로 연결(미입증).
◐ 결과 인입 + 가설 wedge거리/측위 스푸핑(관측 위조)→근접 과소판단→충돌. 온-sim harm-대비 9전장 입증.
● 구동정직 — 트윈에서 실제로 구동되는 도메인은 2종(AI 행동 + 센서/통신 스푸핑)입니다. SAST·ROS·네트워크는 고객 환경 외부 도구(CodeQL·Nmap 등)의 결과를 SARIF로 인입만 합니다(공격 실행·스캐너 0줄). 그 발견이 물리 피해로 이어지는 연결은 ROS·SAST만 '가설 wedge'로 보여줍니다 — 우리 입증이 아니라 가설이고(고객이 자기 환경 실증을 올리면 customer_attested로 격상하되 그래도 물리 피해 신뢰구간 밖), 네트워크는 아직 미연결. 리포트 맨 위 커버리지 매트릭스가 "테스트함 / 도구 없음 / 미점검"을 그대로 표기하고 — 안 걸렸다고 안전한 건 아닙니다(미발견 ≠ 안전). 상세는 현황·로드맵 탭.
고객 AI는 당신 쪽에서 도는 정책 서버로 붙고, 우리 전장이 센서 관측을 보내 행동을 받습니다(π0·GR00T·LeRobot 방식). 공격은 그 관측 채널을 모델이 보기 전에 오염시키는 것 — 이게 점검의 핵심입니다.
더 보기 —
고객의 AI는 당신 컨테이너/프로세스에서 도는 정책 서버로 둔다. 우리 전장이 매 스텝 센서 관측을 보내고, 당신 모델이 행동(action)을 돌려주면 전장에 적용해 물리를 한 스텝 전개한 뒤 다음 관측을 보낸다 — π0·NVIDIA GR00T·LeRobot가 쓰는 바로 그 구조. 모델 가중치·내부는 우리 쪽으로 넘어오지 않는다(에어갭·반출 금지). 공격은 그 관측 채널을 당신 모델이 보기 전에 오염시키는 것 — 이게 보안 점검의 핵심이다.
observation.images.<camera> RGB 멀티뷰 · observation.state 관절·자세(proprio) · task 언어 지시 (LeRobot 키 규약). 공격 채널: 카메라 가림·적대 패치(이미지) / GPS·LiDAR 스푸핑(센서) / 프롬프트 인젝션(언어) / ROS 메시지 변조.
action chunk(연속값 시퀀스). 당신이 선언한 action space(관절속도·EE pose delta·base twist)와 제어 Hz. π0·GR00T가 내는 바로 그 형식.
① WebSocket/gRPC 정책 서버(π0·openpi·GR00T 방식) · ② ROS 2 브리지(전장이 센서 토픽 publish·명령 토픽 subscribe). LeRobot·π0·GR00T 정책이면 글루 최소.
내비게이션 전장(84종·MuJoCo+Isaac 6.2): 관측 = 상징적 상태(pos·거리·가림) · 대상 AI = scripted·로컬 LLM(ollama) · 행동 = {v, heading} 단일 스텝 · 공격 = 관측 채널 오염(가림·스푸핑·인젝션).
매니퓰레이션 트랙: 실제 VLA(SmolVLA)를 고객 블랙박스로 라이브 연결 — Docker에서 LIBERO robosuite 장면에 이미지+상태+언어 → action chunk 풀 계약으로 구동, 우리 공격(가림·인젝션)으로 harm 측정(baseline 100%→가림 50%→인젝션 0%). 단 매니퓰레이션 전장(LIBERO)이고 내비게이션 전장엔 도메인 불일치로 미적용.
풀 계약(멀티카메라·depth·LiDAR 관측 + action chunk + ROS 2 브리지)은 매니퓰레이션 트랙(SmolVLA-LIBERO)에서 이미 실현. 남은 목표: 내비게이션 84종 전장을 픽셀/센서로 렌더해 같은 풀 계약으로 실제 VLA기술Vision-Language-Action — 픽셀·언어를 받아 로봇 행동을 내는 정책쉬운말보고·듣고 바로 움직이는 요즘 로봇 AI 연결(현재 nav는 상징적 {v,heading}). Isaac RTX 렌더는 됨 → 관측 파이프 확장 필요 — P2/P3. 위 다이어그램은 목표 사양이며, 매니퓰레이션에선 구현·내비게이션에선 미구현(정직).
// 우리 전장이 매 스텝 보내는 관측 (LeRobot 키 규약) { "observation.images.front": <RGB 224×224>, # 전장 카메라 렌더(멀티뷰 가능) "observation.images.wrist": <RGB 224×224>, "observation.state": [관절·자세 …], # proprioception "task": "pick up the box on the left" } # ← 인젝션 공격 채널 // 당신 정책 서버가 돌려주는 행동 (당신 action space·Hz) { "actions": [ [Δq…], [Δq…], … ] } # action chunk(연속값 시퀀스)
연동 3단계 — ① 당신 모델을 정책 서버(WebSocket/gRPC, 또는 ROS 2 노드)로 띄운다(가중치는 당신 쪽에). ② 위 관측을 받는다. ③ action chunk를 반환한다. LeRobot·π0·GR00T 정책이면 기존 서버를 거의 그대로 쓰고, 공격은 전부 우리 전장 쪽에서 관측 채널에 가해지므로 당신 모델 코드는 손대지 않는다.
정책 서버로 한 번 연결하면, 같은 계약으로 우리 전장 라이브러리(84종) 각각이 관측 스트림을 만들어 당신 AI에 먹인다. 전장을 갈아끼워도 당신 모델 코드·연결은 그대로 — 전장만 바꾸며 보안 시나리오를 돌린다. 각 전장 상세(라이브러리 카드 → 모달)의 '공격 설명'이 그 전장에서 당신 AI가 받을 관측·교란을 그대로 보여준다.
이 전장들은 모두 같은 입력·출력 계약으로 당신 AI에 연결된다 — 연결 방법은
우리가 다루는 공격 종류를 카드로 본다. 각 카드를 클릭하면 그 공격의 메커니즘·위협 모델·ATT&CK·실세계 대응·방어·물리 영향·harm-대비·정직 한계와 그 공격을 쓰는 전장 목록(클릭 → 전장 상세)이 열린다. 전장마다의 개별 시나리오는 종류 상세·전장 라이브러리에서 본다.
불러오는 중…
공장·국방 무인체계 AI를 디지털 트윈 전장에 올려 "사이버 침해 → 구동 → 물리 피해"를 증거로 내는 도구입니다. 합격·인증은 내지 않습니다 — 버전 변화·최악 사례·신뢰구간·커버리지만 냅니다. 아래는 리포트·현황에서 쓰는 용어 설명입니다.
정직 — CBF·STL·SSM은 기하·시뮬 기반 미보정 지표다(실물 동역학·인체 상해 보정이 아님, "미입증"). 실물 보정은 하드웨어가 필요하다.
공격 종류(어떤 공격)·전장(어디서)·대상 AI(무엇을 시험)·백엔드(어떤 가상 물리)를 골라 실행하면, 그 조합의 공격 시나리오가 돌아 증거 리포트를 만듭니다.
정책 ollama는 실제 모델이라 수십 초 걸릴 수 있습니다.
고객 환경의 외부 도구가 낸 SARIF(SAST·ROS·네트워크)와, 고객 레드팀이 실증한 attestation(JSON)을 올려 에셋을 실행합니다. SARIF를 올리면 해당 도메인이 커버리지에서 tested로 바뀝니다(모든 에셋 적용). 실증은 🔗 wedge 에셋(교차도메인 다리 보유)에서만 다리를 customer_attested로 바꿉니다(그래도 우리 입증 아님·물리피해 CI 밖). 업로드 없으면 에셋 번들 예시로 실행됩니다. 스캐너·공격 코드 없음 — 결과 수집만(수출통제 무관).
이 페이지의 핵심은 피시험 Physical AI(실제 공개 VLA)의 보안점검 결과입니다 — 공격을 받았을 때 ①로봇이 실제로 임무를 수행하지 못하는지(경로 A), ②지각·행동이 얼마나 흔들리는지(경로 B). 맨 아래 엔진 시뮬 리포트는 RTE 엔진으로 직접 돌린 과거 실행 결과입니다(보조). 합격·단일 종합 보안점수는 발행하지 않습니다 · 미발견 ≠ 안전.
경로 A(LIBERO sim 실제 롤아웃 · 물리 태스크 harm) + 경로 B(지각 강건성 프로브)
불러오는 중…
리포트를 불러오는 중…
사전 선언 조건을 재생하는 대신, 교란 파라미터 공간을 탐색해 안전 마진기술사람·장애물까지의 여유 거리(m); 작을수록 위험쉬운말사고까지 남은 여유. 0에 가까울수록 아슬아슬을 최소화하는 최악 공격을 능동적으로 찾는다. 결과가 "작성자가 심은 조건"이 아니라 "발견된 취약성".
MuJoCo 실물리 시나리오는 평가마다 물리를 돌려 느릴 수 있습니다(예산을 낮게).
시험할 대상 AI를 어디서 돌릴지 고릅니다. 로컬은 이 컴퓨터의 ollama, 클라우드·API는 OpenAI 호환 엔드포인트(OpenAI·groq·together·Azure·로컬 vLLM/LM Studio 등). 실행·공격탐색 탭에서 정책을 ollama(로컬) 또는 cloud(API)로 고르면 해당 provider 설정이 적용됩니다.
Docker로 돌리면 컨테이너의 환경변수(OLLAMA_HOST 등)가 기본값이 되고, 위에서 런타임에 바꿀 수 있습니다. ollama 경로는 host.docker.internal로 호스트의 ollama에 연결됩니다.
각 백엔드가 어떤 설정을 읽는지와 트랙·결정성·요구조건을 정직하게 보여줍니다. dt·max_steps·전장(mjcf)·질량/힘 상수는 보정값이라 바꾸지 않습니다(결정성·골든픽스처·과대주장 방지). 백엔드·정책·seed·runs는 아래에서 실행 기본값으로 저장해 실행 탭에 적용합니다(파일·골든 불변).
불러오는 중…
seed·runs는 실행 시 해당 실행에만 적용되는 비영속 오버라이드입니다 — 저장된 에셋·골든픽스처는 바뀌지 않습니다. grid2d만 바이트동일 재현을 보장하며, seed를 바꾸면 결정적이되 다른 상황이 뽑힙니다.
불러오는 중…
레지스트리 파일: physical_ai_targets.json(서버). 실 VLA는 자기 Docker 컨테이너(정책 서버)로 로드 — 가중치는 우리 쪽으로 넘어오지 않음.