{"id":4129,"date":"2026-11-10T09:50:35","date_gmt":"2026-11-10T17:50:35","guid":{"rendered":"https:\/\/cyber.mag212.com\/?p=4129"},"modified":"2026-11-10T09:50:35","modified_gmt":"2026-11-10T17:50:35","slug":"qubole-aws-account-abused-customer-iam-roles-cross-account","status":"publish","type":"post","link":"https:\/\/cyber.mag212.com\/fr\/qubole-aws-account-abused-customer-iam-roles-cross-account\/","title":{"rendered":"Le compte AWS personnel de Qubole a \u00e9t\u00e9 utilis\u00e9 pour usurper les r\u00f4les IAM des clients et d\u00e9rober des secrets li\u00e9s au cloud et \u00e0 l'identit\u00e9."},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">An attacker holding credentials for the AWS account of Qubole, a data lake platform owned by Idera, used that account to step into the AWS environments of Qubole\u2019s customers. They did it the way Qubole itself would: by assuming the IAM roles customers had created to trust Qubole, complete with the correct External ID. Research by Wiz, reported by The Hacker News on 9 November, says the attacker then read secrets, tested the credentials they found and copied S3 data (<a href=\"https:\/\/thehackernews.com\/2026\/11\/hackers-exploit-quboles-trusted-aws.html\" target=\"_blank\" rel=\"noopener\">The Hacker News<\/a>). Many of the roles had not been used in years but still trusted the vendor.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>What<\/strong><\/td><td>Abuse of customer IAM roles that trust Qubole\u2019s AWS account <code>805246085872<\/code><\/td><\/tr><tr><td><strong>When<\/strong><\/td><td>AssumeRole intrusions 14\u201326 October 2026; a separate, unlinked access-key campaign 8\u201311 October<\/td><\/tr><tr><td><strong>Data at risk<\/strong><\/td><td>Lambda environment variables, Secrets Manager, SSM Parameter Store, S3 buckets, plus AWS, Entra ID and Okta credentials found there<\/td><\/tr><tr><td><strong>Victims<\/strong><\/td><td>\u201cMultiple\u201d, number not disclosed<\/td><\/tr><tr><td><strong>Vendor statement<\/strong><\/td><td>None from Qubole or Idera when The Hacker News checked<\/td><\/tr><tr><td><strong>Evidence<\/strong><\/td><td>Reported (The Hacker News summarising Wiz; Wiz\u2019s own post not retrieved at press time)<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">What happened<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">According to the reporting, Sentra noticed the activity in several of its customers\u2019 environments and alerted Wiz. The attacker made AssumeRole calls from Qubole\u2019s account into customer-created roles, supplying the right External ID each time. Most of the roles involved were no longer in use, yet still trusted Qubole. From 18 October the attacker also used a Qubole IAM user. Separately, between 8 and 11 October, an actor not linked to the first used customers\u2019 own AWS access keys, an access option Qubole supports (<a href=\"https:\/\/thehackernews.com\/2026\/11\/hackers-exploit-quboles-trusted-aws.html\" target=\"_blank\" rel=\"noopener\">The Hacker News<\/a>; primary: <a href=\"https:\/\/www.wiz.io\/blog\/qubole-cross-account-access-abused-in-the-wild\" target=\"_blank\" rel=\"noopener\">Wiz<\/a>).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Who is affected<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Any AWS account that contains an IAM role trusting Qubole\u2019s account is in scope, <strong>including roles nobody uses any more<\/strong>. The reporting notes that Qubole\u2019s setup guide includes a sample S3 policy that lets the role read every bucket in the account (<a href=\"https:\/\/thehackernews.com\/2026\/11\/hackers-exploit-quboles-trusted-aws.html\" target=\"_blank\" rel=\"noopener\">The Hacker News<\/a>; <a href=\"https:\/\/docs.qubole.com\/en\/latest\/user-guide\/managing-accounts\/aws\/iam-roles\/create-iam-roles.html\" target=\"_blank\" rel=\"noopener\">Qubole documentation<\/a>). <strong>MAG212 CYBER analysis:<\/strong> MSPs should assume a forgotten vendor role exists in at least some client accounts until an inventory proves otherwise, and the lesson applies to every third-party integration, not just Qubole.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How the attack works<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The reported sequence:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Assume the customer\u2019s role from Qubole\u2019s AWS account, presenting the expected External ID.<\/li>\n\n\n<li>Read Lambda environment variables, Secrets Manager secrets and SSM Parameter Store values.<\/li>\n\n\n<li>Validate harvested credentials with the open-source tool TruffleHog. They included victims\u2019 AWS keys, Entra ID client secrets and Okta client credentials.<\/li>\n\n\n<li>Copy S3 data, sometimes an entire bucket in a single session.<\/li>\n\n<\/ol>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1600\" height=\"640\" src=\"https:\/\/cyber.mag212.com\/wp-content\/uploads\/2026\/11\/05-qubole-aws-account-abused-customer-iam-roles-cross-account-diagram.jpg\" alt=\"Flow diagram: Qubole&#x27;s AWS account assumes customer IAM roles with an External ID, reads Lambda, Secrets Manager, SSM and S3, then validates AWS, Entra ID and Okta credentials with TruffleHog; a band lists six defences.\" class=\"wp-image-4128\" srcset=\"https:\/\/cyber.mag212.com\/wp-content\/uploads\/2026\/11\/05-qubole-aws-account-abused-customer-iam-roles-cross-account-diagram.jpg 1600w, https:\/\/cyber.mag212.com\/wp-content\/uploads\/2026\/11\/05-qubole-aws-account-abused-customer-iam-roles-cross-account-diagram-300x120.jpg 300w, https:\/\/cyber.mag212.com\/wp-content\/uploads\/2026\/11\/05-qubole-aws-account-abused-customer-iam-roles-cross-account-diagram-1024x410.jpg 1024w, https:\/\/cyber.mag212.com\/wp-content\/uploads\/2026\/11\/05-qubole-aws-account-abused-customer-iam-roles-cross-account-diagram-768x307.jpg 768w, https:\/\/cyber.mag212.com\/wp-content\/uploads\/2026\/11\/05-qubole-aws-account-abused-customer-iam-roles-cross-account-diagram-1536x614.jpg 1536w, https:\/\/cyber.mag212.com\/wp-content\/uploads\/2026\/11\/05-qubole-aws-account-abused-customer-iam-roles-cross-account-diagram-18x7.jpg 18w\" sizes=\"auto, (max-width: 1600px) 100vw, 1600px\" \/><figcaption class=\"wp-element-caption\">How trusted vendor access became the attack path, with the defences that would have blocked it. Based on Wiz research as reported by The Hacker News. Diagram: MAG212 CYBER<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The step from AWS secrets to Entra ID and Okta credentials matters: a cloud-storage incident can become an identity incident. We do not know how the attacker obtained Qubole\u2019s credentials, how many organisations were affected, or whether Qubole will publish its own account.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What to look for<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Wiz published indicators, as reported by The Hacker News (<a href=\"https:\/\/thehackernews.com\/2026\/11\/hackers-exploit-quboles-trusted-aws.html\" target=\"_blank\" rel=\"noopener\">The Hacker News<\/a>):<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Indicator<\/th><th>Context<\/th><\/tr><\/thead><tbody><tr><td>Account <code>805246085872<\/code><\/td><td>Qubole\u2019s account; flag AssumeRole calls from non-AWS IP addresses<\/td><\/tr><tr><td>Principal <code>AIDA3W7DIFLYOLTK63SFS<\/code><\/td><td>Seen only with the attacker; investigate all of its activity<\/td><\/tr><tr><td>Principal <code>AIDAJYRRH5Y3A7AAJM2HW<\/code><\/td><td>Also used legitimately by Qubole; suspicious only from outside AWS<\/td><\/tr><tr><td><code>57.129.54[.]120<\/code>, <code>2001:41d0:70d[:]7800::<\/code><\/td><td>OVH addresses<\/td><\/tr><tr><td><code>45.83.220[.]211<\/code>, <code>185.209.199[.]73<\/code>, <code>89.37.63[.]175<\/code><\/td><td>Mullvad shared VPN exits; not proof on their own<\/td><\/tr><tr><td>Role session names starting <code>quiam-<\/code><\/td><td>Attacker session naming, e.g. <code>quiam-enum<\/code><\/td><\/tr><tr><td>TruffleHog user agent on <code>GetCallerIdentity<\/code><\/td><td>Credential validation<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Wiz\u2019s exact detection queries were in its primary post, which we could not retrieve, so we are not reproducing any queries.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Investigate, contain and fix<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Review CloudTrail from 1 October 2026 in every account that holds a role trusting Qubole.<\/li>\n\n\n<li>Revoke active sessions for any abused role. Rotating keys alone does not end sessions already issued.<\/li>\n\n\n<li>Rotate everything the role could reach, including Entra ID and Okta application credentials stored in AWS.<\/li>\n\n\n<li>Delete vendor roles you no longer need.<\/li>\n\n\n<li>Where Qubole supports it, replace a <code>:root<\/code> trust principal with Qubole\u2019s specific principal.<\/li>\n\n\n<li>Add an <code>aws:SourceIp<\/code> or <code>aws:SourceVpce<\/code> condition. The researchers say \u201ca source IP condition alone would have blocked every role assumption we observed\u201d (<a href=\"https:\/\/thehackernews.com\/2026\/11\/hackers-exploit-quboles-trusted-aws.html\" target=\"_blank\" rel=\"noopener\">The Hacker News<\/a>).<\/li>\n\n\n<li>Turn on an organisation-wide CloudTrail and S3 data events or server access logs; management events don\u2019t show object reads.<\/li>\n\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Why the External ID did not help<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">An External ID exists to stop the \u201cconfused deputy\u201d problem: it makes sure a vendor acting on behalf of one customer cannot be tricked into using another customer\u2019s role. It was never designed to protect against someone who controls the vendor\u2019s own account, because that party already has the External ID it would normally present (<a href=\"https:\/\/docs.aws.amazon.com\/IAM\/latest\/UserGuide\/id_roles_common-scenarios_third-party.html\" target=\"_blank\" rel=\"noopener\">AWS guidance<\/a>). In this case the attacker was, in effect, Qubole, so every check the customer had configured was satisfied. A network condition such as <code>aws:SourceIp<\/code> adds something the vendor\u2019s stolen credentials cannot supply on their own.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Questions to ask your other cloud vendors<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>MAG212 CYBER analysis:<\/strong> the same pattern can apply to any SaaS product that reaches into your cloud through a cross-account role. Useful questions for each one:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Which fixed IP ranges or VPC endpoints do you use, so we can pin the role to them?<\/li>\n\n\n<li>Can the trust policy name a specific principal rather than your whole account?<\/li>\n\n\n<li>What is the least-privilege policy you actually need, instead of the sample in your setup guide?<\/li>\n\n\n<li>How will you notify us if your own AWS account is compromised?<\/li>\n\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">How to confirm you\u2019re clean<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>No role trusting Qubole, or any other vendor, remains without a source condition or a current business owner.<\/li>\n\n\n<li>The rotated secrets are the ones applications now use, and old ones are disabled.<\/li>\n\n\n<li>S3 data-event logging is active, and CloudTrail shows no further activity from the indicators above.<\/li>\n\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Lessons for admins, staff and leaders<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cloud admins:<\/strong> don\u2019t treat an External ID as a secret; it prevents confused-deputy mix-ups, not theft of the vendor\u2019s own access (<a href=\"https:\/\/docs.aws.amazon.com\/IAM\/latest\/UserGuide\/id_roles_common-scenarios_third-party.html\" target=\"_blank\" rel=\"noopener\">AWS guidance<\/a>).<\/li>\n\n\n<li><strong>MSPs:<\/strong> today\u2019s task is an inventory of vendor cross-account roles across every client AWS account, with an owner and a last-used date for each.<\/li>\n\n\n<li><strong>Leaders:<\/strong> every integration you approve leaves a standing door. Ask for a list of vendor access that has not been used in 90 days, and close it.<\/li>\n\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">What we still don\u2019t know<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>How the attacker obtained Qubole\u2019s account credentials.<\/li>\n\n\n<li>How many customers were affected.<\/li>\n\n\n<li>Whether Qubole or Idera will issue guidance or notifications.<\/li>\n\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Related on MAG212 CYBER<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/cyber.mag212.com\/mag212-cyber-daily-2026-11-10-openssh-sshole-sonicwall-qubole\/\">MAG212 CYBER Daily, 10 November 2026<\/a><\/li>\n\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Sources<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/thehackernews.com\/2026\/11\/hackers-exploit-quboles-trusted-aws.html\" target=\"_blank\" rel=\"noopener\">The Hacker News: Hackers exploit Qubole\u2019s trusted AWS access (9 Nov 2026)<\/a><\/li>\n\n\n<li><a href=\"https:\/\/www.wiz.io\/blog\/qubole-cross-account-access-abused-in-the-wild\" target=\"_blank\" rel=\"noopener\">Wiz: Qubole cross-account access abused in the wild (not retrieved at press time)<\/a><\/li>\n\n\n<li><a href=\"https:\/\/docs.qubole.com\/en\/latest\/user-guide\/managing-accounts\/aws\/iam-roles\/create-iam-roles.html\" target=\"_blank\" rel=\"noopener\">Qubole documentation: creating IAM roles<\/a><\/li>\n\n\n<li><a href=\"https:\/\/docs.aws.amazon.com\/IAM\/latest\/UserGuide\/id_roles_common-scenarios_third-party.html\" target=\"_blank\" rel=\"noopener\">AWS: Access for third parties using an External ID<\/a><\/li>\n\n<\/ul>\n\n","protected":false},"excerpt":{"rendered":"<p>Un attaquant a utilis\u00e9 le compte AWS de Qubole pour usurper des r\u00f4les IAM cr\u00e9\u00e9s par les clients pour le fournisseur, dont beaucoup \u00e9taient inutilis\u00e9s depuis longtemps. Il a ensuite acc\u00e9d\u00e9 aux secrets, valid\u00e9 les identifiants AWS, Entra ID et Okta, et copi\u00e9 les donn\u00e9es S3. Les indicateurs publi\u00e9s, le rapport CloudTrail et les mesures de renforcement de la s\u00e9curit\u00e9 sont disponibles.<\/p>","protected":false},"author":1,"featured_media":4127,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[13,15],"tags":[193,281,104,292,293,149],"class_list":["post-4129","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cyber-incidents","category-threat-intelligence","tag-aws","tag-cloud-security","tag-entra-id","tag-iam","tag-okta","tag-supply-chain"],"_links":{"self":[{"href":"https:\/\/cyber.mag212.com\/fr\/wp-json\/wp\/v2\/posts\/4129","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cyber.mag212.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cyber.mag212.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cyber.mag212.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cyber.mag212.com\/fr\/wp-json\/wp\/v2\/comments?post=4129"}],"version-history":[{"count":1,"href":"https:\/\/cyber.mag212.com\/fr\/wp-json\/wp\/v2\/posts\/4129\/revisions"}],"predecessor-version":[{"id":4143,"href":"https:\/\/cyber.mag212.com\/fr\/wp-json\/wp\/v2\/posts\/4129\/revisions\/4143"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cyber.mag212.com\/fr\/wp-json\/wp\/v2\/media\/4127"}],"wp:attachment":[{"href":"https:\/\/cyber.mag212.com\/fr\/wp-json\/wp\/v2\/media?parent=4129"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cyber.mag212.com\/fr\/wp-json\/wp\/v2\/categories?post=4129"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cyber.mag212.com\/fr\/wp-json\/wp\/v2\/tags?post=4129"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}