Analyse de l'agrégat de 700 millions de comptes Linkedin de Juin 2021

Table des matières :

Introduction

Le 22 juin 2021, un agrégat de données concernant 700 millions de comptes LinkedIn a été proposé à la vente sur un forum. Cet agrégat ne contient pas de mots de passe, mais une grande quantité de données publiques sur des profils d’utilisateurs LinkedIn.

Un agrégat de données très similaire à celui-ci avait déjà été rendu public en avril 2021, et contenait près de 500 millions de comptes ! L’entreprise LinkedIn avait publié un communiqué concernant cet agrégat de données, indiquant qu’il ne s’agissait que de données publiquement accessibles sur les profils publiques de ses utilisateurs.

L’agrégat de données du 22 juin 2021 contient des informations très similaires à celui d’avril 2021. Cependant, cette fois ce sont 700 millions de comptes qui sont concernés. Il a été publié sur un forum, et y est vendu pour 5000$. L’entreprise LinkedIn a également publié un communiqué au sujet de ce nouvel agrégat de données

Nous allons nous plonger en détail dans les données que contiennent cet agrégat. Les données présentées ci-après ont été anonymisées, mais reprennent exactement le type de contenu présent dans le véritable jeu de données (voir ce fichier d’exemple, données anonymisées d’un compte utilisateur de cet agrégat de données).

Analyse des données présentes dans l’agrégat

L’agrégat de données se présente sous forme d’une liste de structures JSON, séparées par des sauts de ligne comme ceci :

{"id":"ok50x4jDJULSRUyHWx3DzV_0000","full_name":"john doe","first_name":"john",...}
{"id":"Do4v+vBouxldLUfBrLAFPj_0000","full_name":"john doe","first_name":"john",...}
{"id":"YRLmYhSnfJtjEZ5bXxKANC_0000","full_name":"john doe","first_name":"john",...}

La structure JSON de chaque ligne correspond à un utilisateur, et contient une grande quantité d’informations que nous allons explorer en détail dans les sections suivantes.

Informations générales

Au tout début de chaque structure JSON nous trouvons les informations générales concernant le compte de l’utilisateur LinkedIn. Ce sont des données personnelles comportant le nom, le prénom, le genre et la date de naissance de l’utilisateur :

{
  "id": "pQrFO2uEETAb0WxOT9mdLh_0000",
  "full_name": "john doe",
  "first_name": "john",
  "middle_initial": "j",
  "middle_name": "peter",
  "last_name": "doe",
  "gender": "male",
  "birth_year": "1985",
  "birth_date": "1985-07-13",
  ...
}

Réseaux sociaux

Ensuite nous trouvons toutes les informations relatives aux réseaux sociaux liés à ce profil. Les informations sont présentées avec le lien complet vers le profil, et le nom d’utilisateur sur la plateforme. Les réseaux sociaux que nous avons trouvés dans l’agrégat de données sont LinkedIn, Facebook, Twitter et GitHub :

{
  ...
  "linkedin_url": "linkedin.com/in/john-doe-b93431ea",
  "linkedin_username": "john-doe-b93431ea",
  "linkedin_id": "36950119",
  "facebook_url": "facebook.com/john.doe",
  "facebook_username": "john.doe",
  "facebook_id": "100002605726632",
  "twitter_url": "twitter.com/john.doe",
  "twitter_username": "john.doe",
  "github_url": "github.com/john.doe",
  "github_username": "john.doe",
  ...
}

Secteur d’activité et informations sur l’entreprise

Après les réseaux sociaux associés au profil de l’utilisateurs, nous trouvons toutes les informations relatives au poste qu’il occupe actuellement. Nous trouvons notamment dedans son rôle, son email et son téléphone professionnel, ainsi que toutes les informations sur son entreprise actuelle (taille, date de fondation, réseaux sociaux, localisation géographique) :

{
  ...
  "industry": "computer software",
  "job_title": "security engineer",
  "job_title_role": "engineering",
  "job_title_sub_role": "software",
  "job_title_levels": ["manager", "senior"],
  "job_company_id": "evilcorp",
  "job_company_name": "evilcorp",
  "job_company_website": "evilcorp.us",
  "job_company_size": "1001-5000",
  "job_company_founded": "1995",
  "job_company_industry": "government administration",
  "job_company_linkedin_url": "linkedin.com/company/evilcorp",
  "job_company_linkedin_id": "123456",
  "job_company_facebook_url": "facebook.com/evilcorp",
  "job_company_twitter_url": "twitter.com/evilcorp",
  "job_company_location_name": "washington, district of columbia, united states",
  "job_company_location_locality": "washington",
  "job_company_location_metro": "washington",
  "job_company_location_region": "district of columbia",
  "job_company_location_geo": "46.7,-74.76",
  "job_company_location_street_address": "46 St Peter's road",
  "job_company_location_address_line_2": "3rd floor",
  "job_company_location_postal_code": "dh3 1rb",
  "job_company_location_country": "united states",
  "job_company_location_continent": "north america",
  "job_last_updated": "2019-07-01",
  "job_start_date": "2012-07-03",
  "job_summary": "Long text describing my job",
  ...
}

Données de géolocalisation de l’entreprise

A la suite des informations sur l’entreprise actuelle de l’utilisateur, on retrouve les informations de géolocalisation de son entreprise :

{
  ...
  "location_name": "washington, district of columbia, united states",
  "location_locality": "washington",
  "location_metro": "washington, district of columbia",
  "location_region": "district of columbia",
  "location_country": "united states",
  "location_continent": "north america",
  "location_street_address": "46 St Peter's road",
  "location_address_line_2": "3rd floor",
  "location_postal_code": "dh3 1rb",
  "location_geo": "46.7,-74.76",
  "location_last_updated": "2020-10-01",
  ...
}

Nombre de relations LinkedIn et salaire

Nous trouvons ensuite le nombre de relations LinkedIn et le salaire estimé de l’utilisateur :

{
  ...
  "linkedin_connections": 768,
  "inferred_salary": "55,000-70,000",
  ...
}

Nombre d’années d’expérience et description du profil

Ensuite nous trouvons le nombre d’années d’expérience de l’utilisateur, ainsi que la description générale de son profil :

{
  ...
  "inferred_years_experience": 15,
  "summary": "Long text describing my profile",
  ...
}

Adresses email et numéros de téléphone

La section suivante contient tous les numéros de téléphone et les emails associés au compte de l’utilisateur :

{
  ...
  "phone_numbers": [
    "+14839950305",
    "+13549658422",
    "+14131851328",
    "+14676644426",
    "+14855411518"
  ],
  "emails": [
    {
      "address": "john.doe@gmail.com",
      "type": "personal"
    },
    {
      "address": "johndoe@hotmail.com",
      "type": "personal"
    }
  ],
  ...
}

Centres d’intérêts et compétences

Après cela nous trouvons la liste des centres d’intérêts et la liste des compétences de l’utilisateur:

{
  ...
  "interests": [
    "sport",
    "science",
    "photography",
    "running",
    "nature"
  ],
  "skills": [
    "microsoft office",
    "python",
    "scrapping",
    "security",
    "pentesting"
  ],
  ...
}

Données de géolocalisation

Nous trouvons ensuite les données de géolocalisation de l’utilisateur :

{
  ...
  "location_names": [
    "washington, district of columbia, united states"
  ],
  "regions": [
    "district of columbia, united states"
  ],
  "countries": [
    "united states"
  ],
  "street_addresses": [],
  ...
}

Expériences professionelles

Après les données de géolocalisation du profil, nous trouvons la liste des expériences professionelles de l’utilisateur :

{
  ...
  "experience": [
    {
      "company": {
        "name": "evilcorp",
        "size": "1001-5000",
        "id": "evilcorp",
        "founded": "1995",
        "industry": "government administration",
        "location": {
          "name": "washington, district of columbia, united states",
          "locality": "washington",
          "region": "district of columbia",
          "metro": "washington",
          "country": "united states",
          "continent": "north america",
          "street_address": "46 St Peter's road",
          "address_line_2": "3rd floor",
          "postal_code": "dh3 1rb",
          "geo": "46.7,-74.76",
        },
        "linkedin_url": "linkedin.com/company/evilcorp",
        "linkedin_id": "123456",
        "facebook_url": "facebook.com/evilcorp",
        "twitter_url": "twitter.com/evilcorp",
        "website": "evilcorp.us"
      },
      "location_names": [],
      "end_date": "2015-01",
      "start_date": "1996-01",
      "title": {
        "name": "chief executive officer",
        "role": null,
        "sub_role": null,
        "levels": []
      },
      "is_primary": true,
      "summary": "Long description of my job"
    }
  ],
  ...
}

Parcours de formation

Après les données de géolocalisation du profil, nous trouvons la liste des expériences professionnelles de l’utilisateur :

{
  ...
  "education": [
    {
      "school": {
        "name": "washington university",
        "type": "post-secondary institution",
        "id": "9ud0aPNCMhSRuPHi7mg3p9_0",
        "location": {
          "name": "canada",
          "locality": "washington",
          "region": "washington",
          "country": "united states",
          "continent": "north america"
        },
        "linkedin_url": "linkedin.com/school/washington-university",
        "facebook_url": "facebook.com/washington-university",
        "twitter_url": "twitter.com/washington-university",
        "linkedin_id": "123456",
        "website": "washington-university.us",
        "domain": "washington-university.us"
      },
      "end_date": "1986",
      "start_date": "1983",
      "gpa": null,
      "degrees": [],
      "majors": [
        "computer security"
      ],
      "minors": [],
      "summary": null
    }
  ],
  ...
}

Profils connexes

Cette partie contient une liste des profils attachés à cet utilisateur. Cette liste contient son profil LinkedIn, mais aussi des profils sur d’autres réseaux sociaux :

{
  ...
  "profiles": [
    {
      "network": "facebook",
      "id": "100002605726632",
      "url": "facebook.com/john.doe",
      "username": "john.doe"
    },
    {
      "network": "linkedin",
      "id": "36950119",
      "url": "linkedin.com/in/john-doe-b93431ea",
      "username": "john-doe-b93431ea"
    },
  ],
  ...
}

Certifications

Les données contiennent également la liste des certifications passées par l’utilisateur, avec le nom, l’organisme de délivrance de la certification, la date de certification et la date d’expiration de celle-ci :

{
  ...
  "certifications": [
    {
      "organization": "offensive security",
      "start_date": None,
      "end_date": None,
      "name": "OSCE"
    },
    {
      "organization": "offensive security",
      "start_date": None,
      "end_date": None,
      "name": "OSCP"
    }
  ],
  ...
}

Langages connus par l’utilisateur

Enfin nous trouvons la liste des langages connus par l’utilisateur, ainsi que son niveau de maîtrise pour chacun d’eux :

{
  ...
  "languages": [
    {"name": "french", "proficiency": 5},
    {"name": "dutch", "proficiency": 5},
    {"name": "english", "proficiency": 3},
    {"name": "german", "proficiency": 3}
  ],
  ...
}

Conclusion

Bien que cet agrégat de données comporte de nombreuses informations sur un très grand nombre d’utilisateurs, il semble qu’il ne contienne que des informations déjà présentes publiquement sur les profils des utilisateurs (excepté les emails).

Les informations qui sont présentes dans cet agrégat de données :

Les informations qui ne sont pas présentes dans cet agrégat de données :

  • Les mots de passes des comptes Linkedin

Les impacts potentiels de cet agrégat de données sont majoritairement liés à la publication des emails. Les adresses emails personnelles et professionelles des utilisateurs présentes dans cet agrégat de données peuvent être ciblées par des campagnes de phishing.

Les mots de passes ne sont pas présents dans cet agrégat de données, cependant, il est grandement recommandé de changer vos mots de passes sur LinkedIn et les autres plateformes utilisant le même mot de passe. En effet, grâce aux informations fournies dans l’agrégat de données, un attaquant peut potentiellement trouver le mot de passe des utilisateurs à partir de listes de mots de passe personnalisées. L’attaquant peut ensuite tenter de bruteforcer le mot de passe du compte LinkedIn ou sur d’autres services utilisés par l’utilisateur. Il est aussi possible d’exploiter ces données pour demander à reset le mot de passe d’un compte de l’utilisateur sur un site, en répondant aux questions de sécurité.

Références