Skip to content

Commit ef22f22

Browse files
authored
Merge pull request #883 from privateai/fix/privateai-url-parsing
Fix: Security vulnerability in private ai URL parsing
2 parents 39105d3 + 1f71e42 commit ef22f22

File tree

2 files changed

+6
-2
lines changed

2 files changed

+6
-2
lines changed

nemoguardrails/library/privateai/actions.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
import logging
1919
import os
20+
from urllib.parse import urlparse
2021

2122
from nemoguardrails import RailsConfig
2223
from nemoguardrails.actions import action
@@ -44,7 +45,8 @@ async def detect_pii(source: str, text: str, config: RailsConfig):
4445
server_endpoint = pai_config.server_endpoint
4546
enabled_entities = getattr(pai_config, source).entities
4647

47-
if "api.private-ai.com" in server_endpoint and not pai_api_key:
48+
parsed_url = urlparse(server_endpoint)
49+
if parsed_url.hostname == "api.private-ai.com" and not pai_api_key:
4850
raise ValueError(
4951
"PAI_API_KEY environment variable required for Private AI cloud API."
5052
)

nemoguardrails/library/privateai/request.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import json
1919
import logging
2020
from typing import Any, Dict, List, Optional
21+
from urllib.parse import urlparse
2122

2223
import aiohttp
2324

@@ -42,7 +43,8 @@ async def private_ai_detection_request(
4243
Returns:
4344
True if PII is detected, False otherwise.
4445
"""
45-
if "api.private-ai.com" in server_endpoint and not api_key:
46+
parsed_url = urlparse(server_endpoint)
47+
if parsed_url.hostname == "api.private-ai.com" and not api_key:
4648
raise ValueError("'api_key' is required for Private AI cloud API.")
4749

4850
payload: Dict[str, Any] = {

0 commit comments

Comments
 (0)