Prevenzione del confused deputy tra servizi
Con "confused deputy" si intende un problema di sicurezza in cui un'entità che non dispone dell'autorizzazione per eseguire una certa operazione può costringere un'entità con più privilegi a eseguire tale operazione. In AWS, la rappresentazione cross-service può comportare il problema confused deputy. La rappresentazione tra servizi può verificarsi quando un servizio (il servizio chiamante) effettua una chiamata a un altro servizio (il servizio chiamato). Il servizio chiamante può essere manipolato in modo da utilizzarne le autorizzazioni per agire sulle risorse di un altro cliente, a cui normalmente non avrebbe accesso, tramite il servizio stesso. Per evitare ciò, AWS fornisce strumenti per poterti a proteggere i tuoi dati per tutti i servizi con entità di servizio a cui è stato concesso l'accesso alle risorse del tuo account.
Sono tre le risorse cui AWS IoT Device Defender accede da parte tua che possono essere interessate dal problema di sicurezza "deputy confused": esecuzione di verifiche, invio di notifiche SNS per violazioni del profilo di sicurezza ed esecuzione di operazioni di mitigazione. Per ciascuna di queste operazioni, i valori per aws:SourceArn
devono essere i seguenti:
-
Per le risorse trasmesse all'API UpdateAccountAuditConfiguration (attributi RoleArn e notificationTarget RoleArn), è necessario esaminare la policy della risorsa utilizzando
aws:SourceArn
comearn:
.arnPartition
:iot:region
:accountId
: -
Per le risorse trasmesse all'API CreateMitigationAction (l'attributo RoleArn), è necessario esaminare la policy della risorsa utilizzando
aws:SourceArn
comearn:
.arnPartition
:iot:region
:accountId
:mitigationaction/mitigationActionName
-
Per le risorse trasmesse all'API CreateSecurityProfile (l'attributo alertTargets), è necessario esaminare la policy della risorsa utilizzando
aws:SourceArn
comearn:
.arnPartition
:iot:region
:accountId
:securityprofile/securityprofileName
Il modo più efficace per proteggersi dal problema "confused deputy" è quello di usare la chiave di contesto della condizione globale aws:SourceArn
con l'ARN completo della risorsa. Se non si conosce l'ARN completo della risorsa o si scelgono più risorse, è necessario utilizzare la chiave di contesto della condizione globale aws:SourceArn
con caratteri jolly (*
) per le parti sconosciute dell'ARN. Ad esempio, arn:aws:
.servicename
:*:123456789012
:*
L'esempio seguente mostra il modo in cui puoi utilizzare le chiavi di contesto delle condizioni globali aws:SourceArn
e aws:SourceAccount
in AWS IoT Device Defender per prevenire il problema "confused deputy".
{ "Version": "2012-10-17", "Statement": { "Sid": "ConfusedDeputyPreventionExamplePolicy", "Effect": "Allow", "Principal": { "Service": "iot.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:iot:*:
123456789012
::*" }, "StringEquals": { "aws:SourceAccount": "123456789012
:" } } } }