JAVA.SV.LLM.TOOL.PRIV
認可チェックを行わない特権的な LLM ツールアクション
JAVA.SV.LLM.TOOL.PRIV チェッカーは、認可チェックを強制しない特権的または破壊的な LLM ツールアクションを特定します。
脆弱性とリスク
認可チェックを行わずに特権的または破壊的な操作を実行できる LLM ツールでは、モデルが現在のユーザーに付与されている権限の範囲を超えてしまう可能性があります。
軽減と防止
LLM が特権的または破壊的なツールを呼び出す前に、認可チェックを必須とします。
脆弱コード例
コピー
import dev.langchain4j.agent.tool.Tool;
public class AccountTools {
private final UserAdminService userAdminService;
public AccountTools(UserAdminService userAdminService) {
this.userAdminService = userAdminService;
}
@Tool("Delete a user account")
public void deleteUser(String accountId) {
userAdminService.deleteAccount(accountId); // destructive action with no authorization check
}
}
修正コード例
コピー
import dev.langchain4j.agent.tool.Tool;
public class AccountTools {
private final AuthorizationService authorizationService;
private final UserAdminService userAdminService;
public AccountTools(AuthorizationService authorizationService, UserAdminService userAdminService) {
this.authorizationService = authorizationService;
this.userAdminService = userAdminService;
}
@Tool("Delete a user account")
public void deleteUser(String accountId, UserPrincipal principal) {
authorizationService.requirePermission(principal, "accounts:delete");
userAdminService.deleteAccount(accountId);
}
}
セキュリティトレーニング
Secure Code Warrior が提供しているアプリケーションセキュリティトレーニング教材。