- Expédié
- 23 septembre 2026 à 10:24 UTC
- Auteur
- Kamo
- Commite
- 8950a17
Deux lacunes connexes dans la même limite de confiance. /api/voip/sms/templates/- a été acheminé en gros par le /api/voip/ joaillis. Gardes InternalAuthFilter de VOIPService qui préfixent (et /api/bulktext/send) avec un secret X-Internal-Auth partagé, et SmsTemplateService fait confiance à l'org id porté dans l'organisme de demande une fois qui vérifie les laissez-passer -- il n'y a plus de chèque par locataire. Cela a fait un la portée interne de la surface accessible uniquement par l'internet, avec un seul secret partagé comme la seule chose qui se tient entre un étranger et les SMS de chaque locataire modèles. Ajout d'une cartographie sculptée, le même mécanisme déjà utilisé pour /api/voip/calls/- et /api/voip/enregistrements/- au-dessus de celui-ci: plus spécifique que le caractère générique, de sorte qu'il gagne indépendamment de l'ordre de déclaration, et retours 404 au lieu de transférer. kamo-internal n'appelle rien dans ce sens le chemin d'aujourd'hui (confirmé contre l'origine/principal), donc rien de légitime utilisé cette passerelle pour l'atteindre. Séparément: InboundHeaders n'a jamais dépouillé X-Internal-Auth, donc un client qui devinait ou fuyait le secret partagé pouvait le faire passer en avant(), forwardWebhook() ou forwardCallback() juste passé quel que soit le service InternalAuthFilter était à l'autre extrémité. Il est ajouté à IDENTITY-HEADERS -- il affirme un privilège ("l'infrastructure interne de confiance") de la même manière que les entrées existantes affirment une identité, et la laisser tomber est sûre par construction: tout contrôleur de ce service qui agit légitimement en tant qu'appelant interne (PublicChatController, PublicApiController, SocialWebhookContrôleur, VoipRecordingUploadController, VoipCallEventController, PublicChatKeyResolver) construit son départ en-têtes à partir de zéro et définit le propre du service secret. Aucun d'entre eux n'appelle InboundHeaders.copyInto, donc aucun n'est affecté. C'est ce que L'entrée est plus large que le middleware de Traefik, qui ne le déshabille pas encore au bord de l'est également; en notant qu'à titre de suivi klusterservices plutôt que de deviner à un changement de croix ici. VoipSmsTemplatesCarveOutTest couvre la cartographie et son comportement 404. IdentityHeaderStrippingTest harnais de demande usurpée existante maintenant également envoie une X-InAuth devinée sur chaque cas qu'il conduit déjà (facturation, les droits, le webhook en texte en volume, le rappel OAuth), donc c'est sur chaque voie vers l'avant qui s'exerce, et pas seulement sur une nouvelle voie. L'une ou l'autre modification échoue immédiatement à l'épreuve correspondante.
