AI 에이전트가 생성하는 코드의 보안 위협, 특히 '프롬프트 주입(prompt injection)' 공격에 대응하기 위한 새로운 프로그래밍 언어 'Jo'가 등장했습니다. Jo는 컴파일 시점에 코드의 '역량(capability)'을 정적으로 분석하고 강제함으로써, AI가 생성한 코드가 네트워크 접근, 파일 읽기, 사용자 데이터 쿼리 등 의도치 않은 작업을 수행하는 것을 사전에 차단합니다. 이는 AI 코드의 보안 취약점을 근본적으로 해결하려는 시도로 주목받고 있습니다.
Jo는 정적 타입 시스템을 기반으로 하며, 함수가 어떤 역량을 필요로 하는지 명시적으로 선언하고 컴파일러가 이를 전체 호출 그래프를 통해 검증합니다. 예를 들어, 특정 함수가 표준 출력(stdout) 역량만 갖도록 선언되면, 해당 함수는 네트워크나 파일 시스템에 접근할 수 없습니다. 만약 허용되지 않은 역량을 사용하려 하면 컴파일 에러가 발생하여 프로그램 실행 전에 문제를 발견할 수 있습니다. 이는 기존 런타임 샌드박스가 시스템 호출이나 파일 경로를 차단하는 수준에 머물러 '이 사용자 데이터만 접근'과 같은 세밀한 제어가 어려웠던 한계를 극복합니다.
Jo의 핵심은 '두 세계 아키텍처(two-world architecture)'입니다. 이는 외부 기능 인터페이스(FFI)가 허용되지 않고 역량 인터페이스에 따라 검사되는 '제한된 코드(confined code)'와 FFI가 허용되며 역량을 구현하고 제공하는 '신뢰할 수 있는 코드(trusted code)'를 분리합니다. AI가 생성하는 코드는 제한된 코드 영역에서 실행되어 선언된 역량 외에는 어떠한 시스템 자원에도 접근할 수 없음을 컴파일러가 증명합니다. 현재 Jo는 루비(Ruby)와 파이썬(Python)으로 컴파일되며, 초기 단계이지만 컴파일러, 표준 라이브러리, 툴체인이 실험 가능한 수준으로 준비되어 있습니다. 이 접근 방식은 AI 에이전트의 활용이 늘어남에 따라 더욱 중요해질 보안 문제를 해결하는 데 기여할 것으로 기대됩니다.