Tencent/WeKnora · error
unsafe OBS endpoint: %w
Error message
unsafe OBS endpoint: %w
What it means
OBS constructor SSRF guard: the configured endpoint URL failed ValidateURLForSSRF, meaning it targets a forbidden host (localhost, link-local, private/reserved ranges, or a disallowed scheme), so the client refuses to initialize to prevent server-side request forgery via storage config.
Source
Thrown at internal/application/service/file/obs.go:48
type obsEndpointResolver struct {
url string
}
func (r *obsEndpointResolver) ResolveEndpoint(region string, options s3.EndpointResolverOptions) (aws.Endpoint, error) {
return aws.Endpoint{
URL: r.url,
SigningRegion: region,
HostnameImmutable: true,
}, nil
}
func NewObsFileService(
endpoint, region, accessKeyID, secretAccessKey, bucketName string,
pathPrefix string,
) (interfaces.FileService, error) {
if err := utils.ValidateURLForSSRF(endpoint); err != nil {
return nil, fmt.Errorf("unsafe OBS endpoint: %w", err)
}
client := s3.New(s3.Options{
Region: region,
EndpointResolver: &obsEndpointResolver{url: endpoint},
Credentials: credentials.NewStaticCredentialsProvider(accessKeyID, secretAccessKey, ""),
UsePathStyle: true,
HTTPClient: utils.NewSSRFSafeHTTPClient(utils.DefaultSSRFSafeHTTPClientConfig()),
})
_, err := client.HeadBucket(context.Background(), &s3.HeadBucketInput{
Bucket: aws.String(bucketName),
})
if err != nil {
_, createErr := client.CreateBucket(context.Background(), &s3.CreateBucketInput{
Bucket: aws.String(bucketName),
})
if createErr != nil {View on GitHub (pinned to 988cbb0330)
Solutions
- Point the OBS endpoint at a legitimate public service endpoint
- Allowlist the intended endpoint in SSRF validation config
- Reject storage configs with internal addresses at save time
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at internal/application/service/file/obs.go:48 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of Tencent/WeKnora@988cbb0330 (2026-09-02).
Data as JSON: /api/errors/fc1a50d61acee3d7.
Report an issue: GitHub.