"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[5351],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>y});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function c(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},o=Object.keys(e);for(a=0;a<o.length;a++)r=o[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)r=o[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var s=a.createContext({}),i=function(e){var t=a.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):c(c({},t),e)),r},u=function(e){var t=i(e.components);return a.createElement(s.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),p=i(r),m=n,y=p["".concat(s,".").concat(m)]||p[m]||d[m]||o;return r?a.createElement(y,c(c({ref:t},u),{},{components:r})):a.createElement(y,c({ref:t},u))}));function y(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,c=new Array(o);c[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[p]="string"==typeof e?e:n,c[1]=l;for(var i=2;i<o;i++)c[i]=r[i];return a.createElement.apply(null,c)}return a.createElement.apply(null,r)}m.displayName="MDXCreateElement"},47176:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>c,default:()=>d,frontMatter:()=>o,metadata:()=>l,toc:()=>i});var a=r(87462),n=(r(67294),r(3905));const o={layout:"post",title:"[ADVISORY] Apache CloudStack Security Releases 4.18.1.1 and 4.19.0.1",tags:["announcement"],authors:["rohit"],slug:"security-release-advisory-4.19.0.1-4.18.1.1"},c=void 0,l={permalink:"/blog/security-release-advisory-4.19.0.1-4.18.1.1",editUrl:"https://github.com/apache/cloudstack-www/tree/main/blog/2024-04-04-security-release-advisory-4.19.0.1-4.18.1.1/index.md",source:"@site/blog/2024-04-04-security-release-advisory-4.19.0.1-4.18.1.1/index.md",title:"[ADVISORY] Apache CloudStack Security Releases 4.18.1.1 and 4.19.0.1",description:"Apache CloudStack security releases",date:"2024-04-04T00:00:00.000Z",formattedDate:"April 4, 2024",tags:[{label:"announcement",permalink:"/blog/tags/announcement"}],hasTruncateMarker:!0,authors:[{name:"Rohit Yadav",title:"PMC Member",url:"https://github.com/rohityadavcloud",imageURL:"https://github.com/rohityadavcloud.png",key:"rohit"}],frontMatter:{layout:"post",title:"[ADVISORY] Apache CloudStack Security Releases 4.18.1.1 and 4.19.0.1",tags:["announcement"],authors:["rohit"],slug:"security-release-advisory-4.19.0.1-4.18.1.1"},prevItem:{title:"CloudStack European User Group \u2013 September 12th, Frankfurt, Germany",permalink:"/blog/cseug-2024"},nextItem:{title:"CloudStack at CloudFest 2024",permalink:"/blog/cloudfest-2024-roundup"}},s={authorsImageUrls:[void 0]},i=[],u={toc:i},p="wrapper";function d(e){let{components:t,...r}=e;return(0,n.kt)(p,(0,a.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"Apache CloudStack security releases\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/apache/cloudstack/releases/tag/4.18.1.1"},"4.18.1.1")," and\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/apache/cloudstack/releases/tag/4.19.0.1"},"4.19.0.1")," address the CVEs\nlisted below. Affected users are recommended to\n",(0,n.kt)("a",{parentName:"p",href:"https://cloudstack.apache.org/downloads"},"upgrade")," their CloudStack\ninstallations."))}d.isMDXComponent=!0}}]);