Miggo Logo

CVE-2021-30185: Indico Tampering with links (e.g. password reset) in sent emails

7.5

CVSS Score
3.1

Basic Information

EPSS Score
0.46742%
Published
4/8/2021
Updated
9/23/2024
KEV Status
No
Technology
TechnologyPython

Technical Details

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
Package NameEcosystemVulnerable VersionsFirst Patched Version
indicopip< 2.3.42.3.4

Vulnerability Intelligence
Miggo AIMiggo AI

Miggo AIRoot Cause Analysis

The vulnerability stemmed from Indico's URL generation using the Host header instead of enforcing BASE_URL. The key changes in the patch:

  1. configure_app() was modified to always set SERVER_NAME/APPLICATION_ROOT from BASE_URL, removing the 'set_path' conditional
  2. make_app() was updated to stop passing 'set_path=True'

In vulnerable versions, these functions allowed Flask's URL generation to use attacker-controlled Host headers when:

  • configure_app didn't set SERVER_NAME (due to set_path=False)
  • make_app didn't enforce the configuration This would manifest in runtime profiles during email generation flows (like password reset) using Flask's url_for with incorrect host information.

Vulnerable functions

Only Mi**o us*rs **n s** t*is s**tion

WAF Protection Rules

WAF Rule

### Imp**t *n *xt*rn*l *u*it o* t** In*i*o *o****s* **s *is*ov*r** * vuln*r**ility in In*i*o's URL **n*r*tion lo*i* w*i** *oul* **v* *llow** *n *tt**k*r to m*k* In*i*o s*n* * p*sswor* r*s*t link wit* * v*li* tok*n pointin* to *n *tt**k*r-*ontroll** *

Reasoning

T** vuln*r**ility st*mm** *rom In*i*o's URL **n*r*tion usin* t** *ost *****r inst*** o* *n*or*in* **S*_URL. T** k*y ***n**s in t** p*t**: *. *on*i*ur*_*pp() w*s mo*i*i** to *lw*ys s*t S*RV*R_N*M*/*PPLI**TION_ROOT *rom **S*_URL, r*movin* t** 's*t_p*t*