Server-side rendering vulnerabilities could allow attackers to steal authorization headers or perpetrate phishing and SEO hacking.
The Angular team from Google has announced the release of two security updates to the Angular web framework, both pertaining to SSR (server-side rendering) vulnerabilities. Developers are advised to update SSR applications as soon as possible. Patching can help users avoid the theft of authorization headers as well as phishing scams.
A bulletin on the issues was published
February 28. One of the vulnerabilities, labeled as critical,
pertains to SSRF (server-side request forgery) and
header injection. The patched version can be found
here. The second vulnerability, labeled as moderate,
pertains to an open redirect via the
X-Forwarded-Prefix header. That patch can
be found
here.
The SSRF vulnerability found in the Angular SSR
request handling pipeline exists because Angular’s
internal URL reconstruction logic directly trusts and
consumes user-controlled HTTP headers, specifically
the host and X-Forwarded-* family, to
determine the application’s base origin without
validation of the destination domain. This
vulnerability manifests through implicit relative URL
resolution, explicit manual construction, and
confidentiality breach, the Angular team said. When
exploited successfully, this SSRF vulnerability allows
for arbitrary internal request steering. This can lead
to the stealing sensitive
Authorizationheaders or session cookies
by redirecting them to an attacker’s server. Attackers
also can access and transmit data from internal
services, databases, or cloud metadata endpoints not
exposed to the public internet. Also, attackers could
access sensitive information processed within the
application’s server-side context.
The open redirect vulnerability, meanwhile, exists in the internal URL processing logic in Angular SSR. This vulnerability allows attackers to conduct large-scale phishing and SEO hijacking, the Angular team said.
The team recommends updating SSR applications to the
latest patch version as soon as possible. If an app
does not deploy SSR to production, there is no
immediate need to update, they said. Developers on an
unsupported version of Angular or unable to update
quickly are advised to avoid using req.headers for URL
construction. Instead, they should use trusted
variables for base API paths. Another workaround is
implementing a middleware in the server.ts to enforce
numeric ports and validated hostnames.
@font-face<br>
{font-family:"Cambria Math";<br>
panose-1:2 4 5 3 5 4 6 3 2 4;<br>
mso-font-charset:0;<br>
mso-generic-font-family:roman;<br>
mso-font-pitch:variable;<br>
mso-font-signature:-536870145 1107305727 0 0 415
0;}@font-face<br>
{font-family:Aptos;<br> panose-1:2 11 0
4 2 2 2 2 2 4;<br>
mso-font-charset:0;<br>
mso-generic-font-family:swiss;<br>
mso-font-pitch:variable;<br>
mso-font-signature:536871559 3 0 0 415 0;}p.MsoNormal,
li.MsoNormal, div.MsoNormal<br>
{mso-style-unhide:no;<br>
mso-style-qformat:yes;<br>
mso-style-parent:"";<br>
margin-top:0in;<br>
margin-right:0in;<br>
margin-bottom:8.0pt;<br>
margin-left:0in;<br>
line-height:115%;<br>
mso-pagination:widow-orphan;<br>
font-size:12.0pt;<br>
font-family:"Aptos",sans-serif;<br>
mso-ascii-font-family:Aptos;<br>
mso-ascii-theme-font:minor-latin;<br>
mso-fareast-font-family:Aptos;<br>
mso-fareast-theme-font:minor-latin;<br>
mso-hansi-font-family:Aptos;<br>
mso-hansi-theme-font:minor-latin;<br>
mso-bidi-font-family:"Times New
Roman";<br>
mso-bidi-theme-font:minor-bidi;<br>
mso-font-kerning:1.0pt;<br>
mso-ligatures:standardcontextual;}a:link,
span.MsoHyperlink<br>
{mso-style-priority:99;<br>
color:#467886;<br>
mso-themecolor:hyperlink;<br>
text-decoration:underline;<br>
text-underline:single;}a:visited,
span.MsoHyperlinkFollowed<br>
{mso-style-noshow:yes;<br>
mso-style-priority:99;<br>
color:#96607D;<br>
mso-themecolor:followedhyperlink;<br>
text-decoration:underline;<br>
text-underline:single;}p<br>
{mso-style-priority:99;<br>
mso-margin-top-alt:auto;<br>
margin-right:0in;<br>
mso-margin-bottom-alt:auto;<br>
margin-left:0in;<br>
mso-pagination:widow-orphan;<br>
font-size:12.0pt;<br> font-family:"Times
New Roman",serif;<br>
mso-fareast-font-family:"Times New
Roman";}code<br>
{mso-style-noshow:yes;<br>
mso-style-priority:99;<br>
font-family:"Courier New";<br>
mso-ascii-font-family:"Courier New";<br>
mso-fareast-font-family:"Times New
Roman";<br>
mso-hansi-font-family:"Courier New";<br>
mso-bidi-font-family:"Courier
New";}.MsoChpDefault<br>
{mso-style-type:export-only;<br>
mso-default-props:yes;<br>
font-family:"Aptos",sans-serif;<br>
mso-ascii-font-family:Aptos;<br>
mso-ascii-theme-font:minor-latin;<br>
mso-fareast-font-family:Aptos;<br>
mso-fareast-theme-font:minor-latin;<br>
mso-hansi-font-family:Aptos;<br>
mso-hansi-theme-font:minor-latin;<br>
mso-bidi-font-family:"Times New
Roman";<br>
mso-bidi-theme-font:minor-bidi;}.MsoPapDefault<br>
{mso-style-type:export-only;<br>
margin-bottom:8.0pt;<br>
line-height:115%;}div.WordSection1<br>
{page:WordSection1;}