SAML
O que é SAML?
SAMLNorma aberta baseada em XML para troca de asserções de autenticação e autorização entre um fornecedor de identidade e um fornecedor de serviço.
O SAML (Security Assertion Markup Language), normalizado como OASIS SAML 2.0 em 2005, define como um fornecedor de identidade (IdP) de confiança emite asserções XML assinadas digitalmente que descrevem a identidade e os atributos de um utilizador para um fornecedor de serviço (SP), permitindo o single sign-on web entre domínios de segurança. O SAML 2.0 suporta os bindings HTTP-Redirect e HTTP-POST; o SP deve validar a assinatura XML da asserção, o Audience, as condições temporais NotOnOrAfter e o InResponseTo antes de criar uma sessão.
Ataques e fraquezas
Dominam duas classes de falhas. O XML Signature Wrapping (XSW) e os bugs de injeção de comentários permitem que um atacante contrabandeie dados por si controlados através da verificação da assinatura. Em fevereiro de 2018, a Duo Labs divulgou uma ampla classe destas falhas em toolkits populares — CVE-2017-11427 (python-saml), CVE-2017-11428 (ruby-saml), CVE-2017-11429 (saml2-js) e CVE-2017-11430 (omniauth-saml) — em que um comentário <!-- --> inserido no NameID truncava o sujeito interpretado, permitindo que um utilizador autenticado iniciasse sessão como outro. O Golden SAML, descrito pela CyberArk em 2017, é pós-comprometimento: um atacante que roube a chave privada de assinatura de tokens do AD FS pode forjar asserções arbitrárias que contornam palavras-passe e MFA. O APT29 usou exatamente isto na campanha SolarWinds/SUNBURST de 2020 para gerar tokens federados que apareciam como logins normais.
Defesas: exigir respostas e asserções assinadas, verificações estritas de audiência/destinatário, proteger a chave de assinatura de tokens por hardware (HSM), rotacioná-la e monitorizar logins federados anómalos. Para novas integrações, o OpenID Connect é frequentemente preferível.
flowchart LR U[Navegador do utilizador] -->|1 acede ao recurso| SP[Fornecedor de serviço] SP -->|2 redirect com AuthnRequest| IdP[Fornecedor de identidade] IdP -->|3 autentica o utilizador| IdP IdP -->|4 asserção SAML assinada| U U -->|5 POST da asserção| SP SP -->|6 verifica assinatura + condições| SP SP -->|7 sessão concedida| U
● Exemplos
- 01
Um IdP corporativo emite uma asserção SAML para login no Salesforce.
- 02
Um fornecedor de serviço valida um AuthnResponse assinado pelo Microsoft Entra ID.
● Perguntas frequentes
O que é SAML?
Norma aberta baseada em XML para troca de asserções de autenticação e autorização entre um fornecedor de identidade e um fornecedor de serviço. Pertence à categoria Identidade e acesso da cibersegurança.
O que significa SAML?
Norma aberta baseada em XML para troca de asserções de autenticação e autorização entre um fornecedor de identidade e um fornecedor de serviço.
Como se defender contra SAML?
As defesas contra SAML costumam combinar controles técnicos e práticas operacionais, conforme detalhado na definição acima.
Quais são outros nomes para SAML?
Nomes alternativos comuns: SAML 2.0, Security Assertion Markup Language.