SSRF σε custom εφαρμογές: τι ρίσκο έχουν URLs, webhooks και imports από τρίτες πηγές
Πολλές custom εφαρμογές δέχονται URLs από χρήστες ή συστήματα. Ένα portal μπορεί να κατεβάζει εικόνα από link, ένα automation να καλεί webhook, ένα CMS να κάνει import περιεχόμενο από URL ή ένα dashboard να τραβά δεδομένα από τρίτη υπηρεσία.
Αυτές οι λειτουργίες είναι χρήσιμες, αλλά χρειάζονται προσοχή. Αν ο server κάνει requests προς διευθύνσεις που ελέγχει ο χρήστης, μπορεί να εμφανιστεί SSRF, δηλαδή Server-Side Request Forgery.
Τι είναι SSRF
Στο SSRF, ο επιτιθέμενος προσπαθεί να κάνει τον server να στείλει request σε διεύθυνση που δεν θα έπρεπε. Το πρόβλημα δεν είναι ότι ο browser του χρήστη ανοίγει ένα URL. Το πρόβλημα είναι ότι το κάνει ο server, συχνά από δίκτυο με πρόσβαση σε εσωτερικές υπηρεσίες.
Το OWASP περιγράφει SSRF ως επίθεση όπου ο server εξαναγκάζεται να κάνει ανεπιθύμητα requests προς εσωτερικά ή εξωτερικά συστήματα.
Πού εμφανίζεται
Συνηθισμένα σημεία:
- import image from URL
- webhook callbacks
- PDF generation από remote HTML
- preview generator για links
- integrations που δέχονται endpoint από πελάτη
- AI automations που ανοίγουν URLs
- server-side fetch για metadata
- file upload by URL
Αν μια εφαρμογή παίρνει URL ως input και ο backend server το καλεί, πρέπει να θεωρηθεί security-sensitive λειτουργία.
Γιατί δεν αρκεί απλό regex
Τα URLs έχουν πολλές παραλλαγές. Μπορεί να υπάρχουν redirects, encoded χαρακτήρες, διαφορετικά protocols, IPv6, internal IP ranges ή DNS tricks.
Ένα απλό regex που λέει «ξεκινάει με https» δεν αρκεί. Χρειάζεται πιο αυστηρή λογική:
- επιτρεπόμενα protocols μόνο HTTP/HTTPS όπου χρειάζεται
- allowlist domains όταν είναι δυνατό
- DNS resolution και έλεγχος IP ranges
- blocking private, loopback και metadata IPs
- απενεργοποίηση ή αυστηρός έλεγχος redirects
- timeouts και size limits
- network egress controls
Το OWASP προτείνει allowlist όταν η εφαρμογή πρέπει να καλεί μόνο γνωστές και έμπιστες υπηρεσίες.
Webhooks
Τα webhooks είναι χρήσιμα για integrations, αλλά πρέπει να σχεδιαστούν σωστά.
Για outgoing webhooks:
- περιορίστε ποια URLs επιτρέπονται
- υπογράψτε τα requests
- βάλτε retry policy με όρια
- καταγράψτε αποτυχίες χωρίς secrets
- προστατέψτε από SSRF σε custom endpoints
Για incoming webhooks:
- επαληθεύστε signature
- κάντε idempotency checks
- περιορίστε payload size
- καταγράψτε events
- αποφύγετε άμεση εκτέλεση επικίνδυνων ενεργειών χωρίς validation
AI agents και URL tools
Σε agentic AI workflows, ένα tool που ανοίγει URLs ή καλεί APIs μπορεί να αυξήσει SSRF και data exposure ρίσκο αν δεν έχει όρια.
Πρακτικές ασφαλείας:
- ο agent να χρησιμοποιεί μόνο server-side tools με πολιτικές πρόσβασης
- domain allowlists όπου γίνεται
- human approval για κρίσιμες ενέργειες
- logs για κάθε external request
- περιορισμός πρόσβασης σε internal services
- αποφυγή αποστολής secrets σε τρίτα URLs
Η AI δεν πρέπει να έχει ανοιχτή δυνατότητα να καλεί οποιοδήποτε URL χωρίς έλεγχο.
Πώς το κάνει η Ai Foundry
Στην Ai Foundry σχεδιάζουμε custom εφαρμογές, portals και AI automations με ξεκάθαρα όρια στα external requests. Όταν μια εφαρμογή χρειάζεται imports, webhooks ή URL previews, ορίζουμε validation, allowlists, permissions, logging και network controls πριν η λειτουργία βγει σε production.
Αυτό είναι κρίσιμο για εφαρμογές που συνδέονται με CRM, CMS, payments, dashboards ή AI agents. Στόχος είναι η λειτουργικότητα να παραμένει πρακτική χωρίς να ανοίγει πρόσβαση σε εσωτερικά συστήματα ή secrets.
Checklist
Ελέγξτε αν η εφαρμογή σας:
- δέχεται URLs από χρήστες ή τρίτα συστήματα
- κάνει server-side fetch σε αυτά τα URLs
- επιτρέπει μόνο συγκεκριμένα protocols
- χρησιμοποιεί domain allowlist όπου γίνεται
- μπλοκάρει private και loopback IP ranges
- ελέγχει redirects
- έχει timeouts και size limits
- καταγράφει external requests
- προστατεύει webhooks με signatures
Όπου ο server καλεί URL που δίνει ο χρήστης, υπάρχει πιθανό SSRF ρίσκο. Η σωστή άμυνα ξεκινά πριν μπει η λειτουργία στην παραγωγή.