<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Pickle-Deserialization on CyberVeille</title>
    <link>https://cyberveille.ch/tags/pickle-deserialization/</link>
    <description>Recent content in Pickle-Deserialization on CyberVeille</description>
    <generator>Hugo -- 0.146.0</generator>
    <language>fr-fr</language>
    <copyright>Cyberveille CC BY-NC-SA 4.0</copyright>
    <lastBuildDate>Tue, 29 Sep 2026 00:00:00 +0200</lastBuildDate>
    <atom:link href="https://cyberveille.ch/tags/pickle-deserialization/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>RCE root et prise de contrôle cloud complète sur un service GraphRAG de Meta via chaîne de vulnérabilités</title>
      <link>https://cyberveille.ch/posts/2026-09-29-rce-root-et-prise-de-controle-cloud-complete-sur-un-service-graphrag-de-meta-via-chaine-de-vulnerabilites/</link>
      <pubDate>Tue, 29 Sep 2026 00:00:00 +0200</pubDate>
      <guid>https://cyberveille.ch/posts/2026-09-29-rce-root-et-prise-de-controle-cloud-complete-sur-un-service-graphrag-de-meta-via-chaine-de-vulnerabilites/</guid>
      <description>&lt;h2 id=&#34;-contexte&#34;&gt;🎯 Contexte&lt;/h2&gt;
&lt;p&gt;Article publié le 29 septembre 2026 sur le blog personnel du chercheur zonduu, décrivant une vulnérabilité critique découverte lors du live hacking event de Meta en mai 2026 à Taïwan. La cible était un service &lt;strong&gt;GraphRAG&lt;/strong&gt; (IA d&amp;rsquo;assistance aux réunions) hébergé sur &lt;strong&gt;AWS ECS Fargate&lt;/strong&gt;, dans un environnement de développement sous le domaine &lt;code&gt;*.aws.metafb.cloud&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;-chaîne-dexploitation&#34;&gt;🔗 Chaîne d&amp;rsquo;exploitation&lt;/h2&gt;
&lt;p&gt;Le chercheur a enchaîné quatre vulnérabilités distinctes :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Clé API hardcodée&lt;/strong&gt; dans un chunk JavaScript Next.js côté client (&lt;code&gt;apprunner_fast_graphrag_fgr_k3y_8x4n9p2q...&lt;/code&gt;), donnant accès à l&amp;rsquo;ensemble de l&amp;rsquo;API GraphRAG&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Path traversal sur le champ &lt;code&gt;filename&lt;/code&gt;&lt;/strong&gt; de l&amp;rsquo;endpoint &lt;code&gt;load_datasources&lt;/code&gt;, permettant une écriture arbitraire de fichiers (ex: &lt;code&gt;../../h1_rce_module4.py&lt;/code&gt; → &lt;code&gt;site-packages&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Path traversal sur le paramètre &lt;code&gt;dataset&lt;/code&gt;&lt;/strong&gt; de l&amp;rsquo;endpoint &lt;code&gt;/visualize&lt;/code&gt;, permettant de pointer vers un répertoire arbitraire&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Désérialisation pickle non sécurisée&lt;/strong&gt; (&lt;code&gt;pickle.loads()&lt;/code&gt; sans vérification de signature) sur l&amp;rsquo;endpoint &lt;code&gt;/visualize&lt;/code&gt;, chargeant un fichier &lt;code&gt;graph_igraph_data.pklz&lt;/code&gt; contrôlé par l&amp;rsquo;attaquant&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;-impact&#34;&gt;💥 Impact&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;RCE en tant que root&lt;/strong&gt; (&lt;code&gt;uid=0(root) gid=0(root)&lt;/code&gt;) sur le conteneur ECS Fargate&lt;/li&gt;
&lt;li&gt;Accès en lecture/écriture à &lt;strong&gt;3 287 sessions réelles&lt;/strong&gt; de transcriptions de réunions IA stockées dans S3 et DynamoDB&lt;/li&gt;
&lt;li&gt;Exfiltration des &lt;strong&gt;credentials AWS ECS task role&lt;/strong&gt; via le metadata service (&lt;code&gt;169.254.170.2&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Accès complet à &lt;strong&gt;17 secrets&lt;/strong&gt; dans AWS Secrets Manager, dont :
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;fb_client_secret&lt;/code&gt; (OAuth Meta/Facebook)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;okta/client-secret&lt;/code&gt; (SSO)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;JWT_SECRET&lt;/code&gt; (forgerie de tokens)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;OPENAI_API_KEY&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Plusieurs paires de clés &lt;strong&gt;LiveKit&lt;/strong&gt; (accès/enregistrement de rooms)&lt;/li&gt;
&lt;li&gt;Deux &lt;strong&gt;comptes de service GCP&lt;/strong&gt; (dont un nommé &lt;code&gt;sso-admin&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Validation des accès GCP via &lt;code&gt;gcloud auth print-access-token&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;-timeline&#34;&gt;⏱️ Timeline&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;19 avril&lt;/strong&gt; : Rapport initial → évaluation en 1h30, PoC complet demandé le soir même&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;20 avril ~4h40&lt;/strong&gt; : Rotation des credentials déjà en cours&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;8 mai&lt;/strong&gt; : Paiement de la prime : &lt;strong&gt;525 USD&lt;/strong&gt; (500 + 25 bonus)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;-type-darticle&#34;&gt;📄 Type d&amp;rsquo;article&lt;/h2&gt;
&lt;p&gt;Write-up technique détaillé de bug bounty (post-mortem offensif), dont le but est de documenter publiquement la chaîne d&amp;rsquo;exploitation, les preuves d&amp;rsquo;impact et le déroulement de la divulgation responsable.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
