Bug de integridad/metadata en apport 2.28.1 (Ubuntu 24.04 LTS). El método _check_interpreted() confía en argv[1] del proceso crash para sobrescribir ExecutablePath, verificando solo legibilidad (os.access(path, os.R_OK)) sin confirmar autenticidad. Esto permite atribuir un crash a cualquier archivo legible del sistema.
No es escalación de privilegios. Todo el parsing crítico corre como el usuario del crash, no como root.
- CWE-20 / CWE-345: Improper Input Validation / Insufficient Verification of Data Authenticity
- CVSS v3.1: 5.5 (AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:L)
- Vector:
report.py:_check_interpreted()(líneas 626-633)
if os.access(cmdargs[1], os.R_OK):
self["InterpreterPath"] = self["ExecutablePath"]
self["ExecutablePath"] = os.path.realpath(cmdargs[1])LD_PRELOAD=.so /usr/bin/bash /usr/bin/passwd
→ SIGILL → apport hook → _check_interpreted()
→ bash coincide como intérprete
→ ExecutablePath = argv[1] = /usr/bin/passwd
→ Crash report: _usr_bin_passwd.{uid}.crash
| Condición | Descripción |
|---|---|
| apport activo | systemctl is-active apport.service |
| Core dumps | ulimit -c unlimited |
| Nombre base del exe | Debe coincidir con patrón de intérprete (bash, python*, perl*, etc.) |
| argv[1] legible | El target debe ser legible por el usuario del crash |
git clone https://github.com/Ruby570bocadito/Breach-Entry.git
cd Breach-Entry
python3 exploit_apport.py # target: /usr/bin/passwd
python3 exploit_apport.py /usr/bin/su # target personalizadoSalida esperada:
[+] Report: ExecutablePath: /usr/bin/passwd → FALSE
[+] Report: InterpreterPath: /usr/bin/bash → TRUE (the real crashed process)
| Archivo | Descripción |
|---|---|
exploit_apport.py |
Exploit completo (Python, genera .so ELF64 sin gcc) |
poc_apport_override.py |
PoC básico (Python puro) |
pwn_apport.c |
PoC alternativo en C (requiere gcc + renombrar binario) |
security-advisory-apport-spoofing.md |
Reporte técnico detallado |
exploit_harness.c |
Harness de fuzzing kernel (15 tests) |
stress_race.c |
Race condition stress test (8 threads) |
uffd_race_poc.c |
userfaultfd + io_uring race PoC |
syz_runner.c |
Weighted kernel fuzzer |
| Fecha | Evento |
|---|---|
2026-04-15 |
Descubrimiento inicial |
2026-04-23 |
PoC funcional |
2026-04-28 |
Notificación a Ubuntu Security Team |
2026-04-29 |
Solicitud de CVE |
2026-05-20 |
Divulgación pública |
- Atribución falsa en crash reports y logs
- Contaminación de telemetría (Launchpad)
- DoS parcial en
/var/crash/ - Confusión forense (core dumps atribuidos a binario incorrecto)
Lo que NO permite:
- Escalación de privilegios (LPE)
- Ejecución remota (RCE)
- Escritura fuera de
/var/crash/ - Ejecución de hooks como root
- CWE-20: Improper Input Validation
- CWE-345: Insufficient Verification of Data Authenticity
- CVE-2019-15790 — apport ExecutablePath path sanitization bypass
- CVE-2020-11935 — apport directory traversal via ExecutablePath
- apport repository
© 2026 — Responsible Disclosure — Educational Purpose Only