ArcadeDB: 트리거 스크립트는 java.lang.* 허용으로 실행되어 OS 명령 실행(RCE)을 활성화합니다.
ScriptTriggerExecutor는 allowedPackages를 java.lang., java.util., java.time., java.math.(ScriptTriggerExecutor.java:56)로 설정합니다. 트리거 생성은 UPDATE_SCHEMA(LocalSchema.createTrigger:636)에서만 제어됩니다. java.lang.* 호스트 클래스 조회를 허용하면 트리거 스크립트가 Java.type("java.lang.Runtime").getRuntime().exec(...)(또는 ProcessBuilder)를 수행할 수 있습니다. 반사 차단 목록은 Java.type 호스트 조회를 차단하지 않으며, AllowCreateProcess(false)는 GraalVM의 게스트 프로세스 API만 제한하고 HostAccess.ALL을 통해 도달한 호스트 Runtime.exec는 제한하지 않습니다.
악용: UPDATE_SCHEMA(스키마 관리자, 엄격히 보안 관리자보다 작은 권한)를 가진 사용자는 CREATE TRIGGER ... EXECUTE JAVASCRIPT '<runtime.exec>'를 실행하고 트리거가 실행될 때 OS RCE를 얻습니다.
수정: 트리거 허용 목록에서 java.lang.*을 제거하고 나머지 범위를 좁힙니다. 호스트 상호 운용성이 필요한 경우 전체 패키지 대신 명시적인 @HostAccess.Export API 표면을 노출합니다. UPDATE_SECURITY에서 게이팅 트리거 생성을 고려하십시오. 현재 거부 목록-over-HostAccess.ALL보다 허용 목록(HostAccess.EXPLICIT)을 선호합니다.
수정 사항에 포함될 관련 중간/낮음 항목: 팔로우되지 않은 리디렉션 재검증을 통한 IMPORT DATABASE SSRF(SourceDiscovery.java:113), BACKUP/EXPORT DATABASE 승인 누락(BackupDatabaseStatement.java:56, ImportDatabaseStatement.java:52), 청크 전송 본문 크기 DoS 우회(HttpServer.java:301,318-333) 및 없음 비밀번호 인증에 대한 무차별 대입 잠금(ServerSecurity.java:189-205).
왜 이 VPI인가 (설명가능 · 실험적)
VPI 산정 기준
| 영향도(기본값(정보 없음)) | 55.00 |
| 악용 신호(추가 악용신호 없음) | ×1.00 |
| VPI | 55.00 |
VPI 공식 vpi-v1 기준