Thanks for confirming it works for you now Elemir. We should improve the documentation of this and have a guide for setting up NiFi in common proxy environments which clearly shows these steps to help people avoid this issue in the future.
Andy LoPresto [email protected] [email protected] PGP Fingerprint: 70EC B3E5 98A6 5A3F D3C4 BACE 3C6E F65B 2F7D EF69 > On Feb 24, 2019, at 2:58 PM, Elemir Stevko <[email protected]> > wrote: > > Thanks a lot for your explanation, Andy! I’ve tested Denes’ workaround and it > fixes the problem. > > Best regards, > Elemir > > From: Andy LoPresto <[email protected]> > Reply-To: "[email protected]" <[email protected]> > Date: Saturday, 23 February 2019 at 12:06 pm > To: "[email protected]" <[email protected]> > Subject: Re: Invalid CORS request error on NiFi v1.8.0 and 1.9.0 behind nginx > > The change was made to mitigate CVE-2018-17195 [1], which allowed a malicious > actor in a specific scenario to upload a template without authorization. This > could result in RCE. Denes’ suggestion about rewriting the Origin header in > your proxy should work. > > [1] https://nifi.apache.org/security.html#CVE-2018-17195 > <https://nifi.apache.org/security.html#CVE-2018-17195> > > > Andy LoPresto > [email protected] <mailto:[email protected]> > [email protected] > PGP Fingerprint: 70EC B3E5 98A6 5A3F D3C4 BACE 3C6E F65B 2F7D EF69 > > > On Feb 22, 2019, at 3:01 AM, Denes Arvay <[email protected] > <mailto:[email protected]>> wrote: > > Hi Elemir, > > As a workaround you can try to overwrite the Origin header in the request to > the value which is expected by NiFi, in your case it should be > https://localhost <https://localhost/>. (i.e. add proxy_set_header Origin > https://localhost <https://localhost/>; to your nginx config). > > I hope this helps, > Denes > > On Fri, Feb 22, 2019 at 11:00 AM Denes Arvay <[email protected] > <mailto:[email protected]>> wrote: > Hi Elemir, > > I was able to reproduce your issue with a simple nginx-NiFi setup, both > running on localhost. > My guess is that the cause is that POST is missing from allowed methods list > from the /process-groups/*/templates/upload path [1]. > The commit which introduced this change explicitly states that POSTs need to > come from the same origin but I don't know the reason behind this decision. > I'll file a Jira ticket to discuss the issue there (or on the dev@ list). > I'm not sure if there is any workaround for this. > > Best, > Denes > > [1] > https://github.com/apache/nifi/blob/master/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/NiFiWebApiSecurityConfiguration.java#L125 > > <https://github.com/apache/nifi/blob/master/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/NiFiWebApiSecurityConfiguration.java#L125> > > On Fri, Feb 22, 2019 at 7:06 AM Elemir Stevko <[email protected] > <mailto:[email protected]>> wrote: > Hello, > > I have been running a single instance of NiFi server v1.7.1 on AWS behind ALB > and nginx: > > ALB -> nginx -> NiFi > > The configuration has been working fine, but since NiFi v1.8.0, I get Invalid > CORS request error when I try uploading a template file. Is there anything I > need to change in the proxy configuration as compared to NiFi v1.7.1? > > Here are more details on the NiFi configuration: > > - ALB terminates the HTTPS connection and opens a new HTTPS connection to > nginx which then proxies the request to NiFi server. > > - NiFi server is configured with OIDC authentication. Neither ALB nor nginx > authenticate the clients, they just proxy the requests to NiFi. > > - nginx is configured similarly to Koji's repo ijokarumawak/nifi-reverseproxy > (nginx/standalone-plain-http/nginx.conf): > > server_names_hash_bucket_size 128; > > upstream localhost { > server localhost:9443; > } > > server { > listen 443 ssl; > server_name _; > ssl_certificate /usr/local/etc/ssl/public.pem; > ssl_certificate_key /usr/local/etc/ssl/private.key; > ssl_protocols TLSv1 TLSv1.1 TLSv1.2; > ssl_ciphers HIGH:!aNULL:!MD5; > > proxy_ssl_trusted_certificate /opt/nifi/cert/nifi-cert.pem; > > access_log /var/log/nginx/nifi.access.log combined; > > location / { > proxy_pass https://localhost <https://localhost/>; > proxy_set_header X-ProxyScheme https; > proxy_set_header X-ProxyHost $host; > proxy_set_header X-ProxyPort 443; > proxy_set_header X-ProxyContextPath /; > } > } > > Best regards, > Elemir
