Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
gitea-artifact-v4-readall — Preuve de concept et laboratoire pour un DoS de l'artefact Gitea Actions v4 : un io.ReadAll non borné dans parseProtobufBody permet à un jeton de job de POSTer des corps CreateArtifact surdimensionnés. | Kitploit
Outils/GitHubGitHub/abraxas/gitea-artifact-v4-readall
Analyse des VulnérabilitésExploitationVirtualisation de SécuritéSécurité WebLabs et Pratique
GitHubabraxas/gitea-artifact-v4-readall

gitea-artifact-v4-readall

Preuve de concept et laboratoire pour un DoS de l'artefact Gitea Actions v4 : un io.ReadAll non borné dans parseProtobufBody permet à un jeton de job de POSTer des corps CreateArtifact surdimensionnés.

Voir le dépôt
1il y a 15 joursPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Abraxas Labs - gitea-artifact-v4-readall

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  gitea-artifact-v4-readall

gitea-artifact-v4-readall

Gitea 1.27.3 - Gitea

job_summary.go plafonne déjà à MaxJobSummarySize (1 MiB) avec io.LimitReader. parseProtobufBody dans artifact v4 fait io.ReadAll(ctx.Req.Body) sans plafond. CreateArtifact, Finalize, List, Get, Delete passent tous par là. Un PAT utilisateur aléatoire ne suffit pas. Il faut un token de job Actions en cours d'exécution. Les jobs fork-PR restent en NeedApproval sur 1.27.3.

Le job-summary a appris LimitReader. Artifact v4 ne l'a pas copié. Un job actif peut POSTer un CreateArtifact de 12 MiB et Gitea bufferise le tout.

IDpas encore de CVE
CWECWE-400
CVSSMoyen : 6.5 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
ProduitGitea
Affectéjusqu'à v1.27.3 (146cc3e) avec Actions activé
Authtoken de job Actions en cours d'exécution
LicenceGNU Affero GPL v3.0
Lab127.0.0.1 uniquement

Ce qu'un attaquant peut faire

Depuis un job Actions en cours d'exécution (son propre dépôt, ou un fork-PR ayant déjà passé NeedApproval), POSTer un corps CreateArtifact v4 arbitrairement volumineux et forcer Gitea à le bufferiser entièrement. Le job-summary sur la même instance rejette déjà tout ce qui dépasse 1 MiB.

C'est une pression mémoire sur le processus Gitea. Le lab a prouvé l'absence de plafond (12 MiB -> 200). Il n'a pas tué le processus. Ce n'est pas du RCE. Ce n'est pas non authentifié. Un PAT utilisateur volé sans job actif n'atteint pas ce chemin.

Comment je l'ai trouvé

La carte résiduelle après la vague GHSA incluait la gestion des corps Actions. Les jobs fork-PR restent en NeedApproval sur 1.27.3, donc ce n'est pas un contournement fork-PR non authentifié. J'ai examiné comment l'API Actions lit les corps de requête. Le job-summary a une limite. Artifact v4 n'en a pas.

J'ai monté gitea/act_runner:0.2.13, amorcé un workflow de maintien pour qu'un token de job existe, et POSTé un CreateArtifact de 12 MiB. HTTP 200 ok plus signedUploadUrl. Puis un job-summary de 8 MiB : 400 invalid summary. GET /api/v1/version toujours 200. Gitea est resté debout. Le mem_limit du lab est 1g. Corps plafonné à 12 MiB pour que l'hôte ne soit pas l'expérience. Exécuteur hôte uniquement. Pas de docker.sock.

Fausses pistes déjà consignées : CreateArtifact sans token de job (401 n'est pas le bug) ; kill du processus / OOM (SUCCESS est 12 MiB -> 200 tandis que 8 MiB summary -> 400) ; traiter signedUploadUrl comme du RCE ; fork-PR non authentifié ; un reverse shell. Du théâtre.

Lab

cd lab
./run.sh

Cible uniquement http://127.0.0.1:18135. Le ROOT_URL in-compose est http://gitea:3000/ pour que le runner puisse s'enregistrer.

v4-create status=200 sent=12582912
v4-unbounded-readall=1
job-summary status=400 sent=8388608 invalid summary cap=MaxJobSummarySize=1048576
gitea-still-up status=200
SUCCESS GITEA-ARTIFACT-V4-READALL

Le correctif

Envelopper parseProtobufBody dans io.LimitReader avec un plafond de taille proto, même schéma que MaxJobSummarySize. Un CreateArtifact de 12 MiB doit échouer de la même classe de manière qu'un job-summary de 8 MiB le fait déjà.

Références

  • github.com/go-gitea/gitea tag v1.27.3
  • artifactsv4.go · job_summary.go · MaxJobSummarySize
  • CWE-400

Licence

GNU Affero GPL v3.0. Voir LICENSE. Lab en boucle locale uniquement. Aucune garantie.

Télécharger l’outil