{"id":"IL-0092","org":"UK Ministry of Justice","date":"2026-03-30","docs":[],"title":{"en":"Upgrading ingress-nginx from 1.12.0 to 1.14.3 brought a newer ModSecurity and OWASP Core Rule Set whose false positives blocked HMPPS Auth, so users could not sign in to their applications","ko":"ingress-nginx 를 1.12.0 에서 1.14.3 으로 올리자 새 ModSecurity 와 OWASP Core Rule Set 이 정상 요청을 오탐으로 막아 HMPPS 사용자가 인증하지 못했다."},"domain":["kubernetes","security"],"impact":{"scope":"HMPPS users could not authenticate to HMPPS Auth and so could not reach their line-of-business applications; users in other parts of the MoJ may also have been unable to reach applications on the Cloud Platform","users":"unknown","region":"unknown"},"review":{"written_by":"session","reviewed_at":null,"reviewed_by":null},"lessons":{"en":"An ingress controller upgrade that bundles a web application firewall also changes which requests are allowed, not only how they are routed. A beta or non-production ingress only catches false positives for traffic that actually passes through it, and teams that keep their test workloads on the production ingress miss them.\n\nA fix on the client side, such as rescoping a cookie, takes effect only when old cookies have expired in users' browsers, so the rule change has to wait for it or ship with an exclusion.","ko":"WAF 규칙 세트 업데이트는 보안을 높이려는 변경이어도 정상 트래픽을 막을 수 있다. 베타 인그레스와 비운영 배포로 시험 기회를 줬어도 서비스 팀들이 개발과 테스트에 비운영 인그레스를 실제로 쓰지 않으면 Expect 헤더 같은 오탐은 운영에서야 드러난다. 시험에서 찾은 문제라도 쿠키처럼 사용자 브라우저에 남는 값이면 대응이 효과를 내기까지 시간이 걸린다. 팀은 롤백으로 먼저 영향을 끊고 예외를 준비한 뒤 다시 배포해 같은 날 업그레이드를 마쳤다."},"related":[],"sources":[{"url":"https://runbooks.cloud-platform.service.justice.gov.uk/incidents/2026-03-30-ingress-nginx-rollback.html","kind":"official-status","license":"unknown","archived":null}],"summary":{"en":"The MoJ Cloud Platform team was moving its ingress-nginx from version 1.12.0 to 1.14.3, and from images maintained by the Kubernetes project to images maintained by Chainguard, because the Kubernetes project was retiring ingress-nginx and its images. Version 1.14.3 bundled a newer ModSecurity web application firewall and a newer OWASP Core Rule Set with better detection of malicious traffic. The team had offered a beta ingress for testing from 12 March, told service teams about it on 13 March, deployed a release candidate to the non-production ingresses on 23 March, and published a summary of the ModSecurity and CRS changes the same day.\n\nThe rollout to the three production ingresses started at 07:11 on 30 March. The new rules produced two false positives: one on the contents of a PostHog analytics cookie and one on an Expect header sent to HMPPS Auth. The cookie problem had been found in testing, but the mitigation was not enough: the cookie was rescoped so it would no longer be sent to all *.justice.gov.uk services, yet too little time passed before the new rules went live for the old cookie to expire or be replaced in users' browsers. The Expect header problem was not found in testing by the affected service teams, and the report says it is not yet clear why. The specific rule changes behind each block were not identified.\n\nAt 09:14 the team began rolling ingress-nginx back, and the rollback completed at 09:43. HMPPS developers had added a local exclusion for the rules blocking HMPPS Auth at 09:22, and at 09:49 confirmed the elevated blocking had stopped. At 11:23 the Cloud Platform team created a temporary global exclusion for the rule triggered by the PostHog cookie, using findings from HMPPS and from LAA's testing. With both exclusions in place the update was redeployed and completed at 14:00, and at 14:39 HMPPS confirmed the problem had not returned.","ko":"UK Ministry of Justice 의 Cloud Platform 팀은 플랫폼의 ingress-nginx 를 1.12.0 에서 1.14.3 으로 올리면서, 이미지를 Kubernetes 팀이 관리하던 것에서 Chainguard 가 관리하는 것으로 바꾸고 있었다. Kubernetes 팀이 프로젝트와 이미지의 지원을 종료하고 있었기 때문이다. ingress-nginx 는 인터넷에서 들어오는 트래픽을 플랫폼의 서비스로 보내며, ModSecurity WAF 와 OWASP Core Rule Set 규칙을 함께 담고 있다.\n\n팀은 3월 12일 새 ModSecurity 와 CRS 를 쓰는 베타 인그레스를 열어 서비스 팀들이 시험하게 했고, 3월 23일 비운영 인그레스에 릴리스 후보를 배포하고 변경 요약을 공개했다. 3월 30일 07:11 운영 인그레스 세 개에 배포를 시작하자 HMPPS Auth 로 가는 요청이 오탐으로 막혔다. 새 버전은 악성 트래픽 탐지를 강화했는데, posthog 쿠키 내용과 Expect 헤더가 오탐을 일으켰다. 쿠키 문제는 시험에서 발견해 대응했지만 문제의 성격 때문에 그 대응으로는 부족했다. Expect 헤더 문제는 해당 서비스 팀들의 시험에서 발견되지 않았고 그 이유는 아직 밝혀지지 않았다. 어떤 규칙 변경이 각 요청을 막았는지도 특정하지 못했다.\n\n팀은 09:14 에 롤백을 시작해 09:43 에 마쳤고, 09:49 에 HMPPS 개발자들이 차단이 더는 늘지 않는다고 확인했다. HMPPS 는 자기 서비스에 규칙 예외를 넣었고, Cloud Platform 팀은 posthog 쿠키가 걸리는 규칙을 플랫폼 전체에서 임시로 예외 처리했다. 이 예외를 둔 상태로 14:00 에 다시 배포를 마쳤고, 14:39 에 HMPPS 개발자들이 문제가 다시 나지 않았다고 확인했다."},"trigger":{"en":"The Cloud Platform team began deploying ingress-nginx 1.14.3, on images maintained by Chainguard, to the three production ingresses at 07:11 on 30 March 2026.","ko":"Cloud Platform 팀이 ingress-nginx 1.14.3 을 운영 인그레스 세 개에 배포했다. 이 버전에는 새 ModSecurity WAF 와 새 OWASP Core Rule Set 이 들어 있었다."},"severity":"unknown","symptoms":["high-error-rate","service-unavailable"],"timeline":{"detected_after":"1h 45m","resolved_after":"2h 32m"},"date_kind":"incident","detection":{"en":"At 08:56 the Cloud Platform team saw messages in the #hmpps-auth-audit-registers Slack channel showing ModSecurity blocking requests unexpectedly; HMPPS users also raised incidents with the MoJ service desk.","ko":"Cloud Platform 팀은 HMPPS Auth 팀 슬랙 채널의 메시지로 장애를 알았다. 팀은 08:56 에 #hmpps-auth-audit-registers 채널에서 ModSecurity 가 요청을 예상치 못하게 막는다는 메시지를 봤고, 09:14 에 장애를 선언했다."},"components":["ingress","waf"],"root_cause":"upgrade-breaking-change","remediation":[{"text":{"en":"rolled the ingress-nginx deployment back to the previous version, from 09:14 to 09:43","ko":"09:14 에 ingress-nginx 롤백을 시작해 09:43 에 마쳤다."}},{"text":{"en":"HMPPS applied ModSecurity rule exclusions for the rules blocking traffic to HMPPS Auth","ko":"HMPPS 개발자들이 HMPPS Auth 로 가는 트래픽을 막는 규칙을 자기 ModSecurity 설정에서 예외 처리했다."}},{"text":{"en":"added a temporary global exclusion for the CRS rule triggered by the PostHog cookie","ko":"Cloud Platform 팀이 posthog 쿠키가 걸리는 규칙을 플랫폼의 모든 서비스에서 임시로 예외 처리했다."}},{"text":{"en":"redeployed ingress-nginx 1.14.3 with both exclusions in place, completed at 14:00","ko":"두 예외를 둔 상태로 새 ingress-nginx 를 다시 배포해 14:00 에 마쳤다."}}],"action_items":[{"text":{"en":"Rescope the PostHog cookie so it is no longer sent with requests to all *.justice.gov.uk services","ko":"posthog 쿠키의 범위를 줄여 모든 *.justice.gov.uk 서비스로 가는 요청에 실리지 않게 했다. 다만 이 변경과 CRS 규칙 배포 사이가 짧아 사용자 브라우저의 쿠키가 만료되거나 바뀔 시간이 모자랐다."}},{"text":{"en":"Remove the temporary global exclusion once the PostHog cookie has expired from enough users' browsers","ko":"posthog 쿠키가 충분히 많은 사용자 브라우저에서 만료되면 플랫폼 전체에 넣은 임시 예외를 없앤다."}},{"text":{"en":"Remind service teams to run dev and test workloads through the non-production ingress controllers so future ModSecurity and CRS updates are tested","ko":"서비스 팀들에게 개발과 테스트 워크로드에 비운영 인그레스 컨트롤러를 쓰라고 다시 강조해, 이후 ModSecurity 와 CRS 업데이트에서 생길 문제를 미리 찾게 한다."}},{"text":{"en":"Run production and non-production workloads in separate clusters in Cloud Platform 3.0, so non-production workloads must use the non-production ingress","ko":"Cloud Platform 3.0 에서는 운영과 비운영 워크로드를 다른 클러스터로 나눠 비운영 워크로드가 반드시 비운영 인그레스를 거치게 한다."}}],"contributing":["staging-not-representative"],"recurrence_of":null,"symptoms_text":{"en":"At 08:56 on 30 March 2026, about an hour and three quarters after the rollout of a new ingress-nginx to production began, the MoJ Cloud Platform team noticed messages in the #hmpps-auth-audit-registers Slack channel about ModSecurity unexpectedly blocking requests. Users in HMPPS also raised incidents with the MoJ service desk.\n\nThe web application firewall was rejecting requests to the HMPPS Auth application as false positives. Users across HMPPS could not authenticate and so could not reach their line-of-business applications. Because of the nature of one of the false positives, users in other parts of the MoJ may also have been unable to reach applications running on the Cloud Platform.\n\nHMPPS developers identified the OWASP Core Rule Set (CRS) rules that were blocking requests. Two payloads triggered them: the contents of a cookie used by the PostHog analytics service, and an Expect header in requests sent to HMPPS Auth.","ko":"2026년 3월 30일 08:56 에 Cloud Platform 팀은 #hmpps-auth-audit-registers 슬랙 채널에서 ModSecurity 가 요청을 예상치 못하게 막는다는 메시지를 봤다. 같은 날 07:11 에 운영 인그레스 세 개에 새 ingress-nginx 를 배포하기 시작한 뒤였다.\n\nHMPPS 사용자들은 HMPPS Auth 로 가는 요청이 WAF 오탐으로 거부돼 인증에 실패했고, 그 때문에 업무용 애플리케이션에 들어가지 못했다. 사용자들은 MoJ 서비스 데스크에 장애를 접수했다. HMPPS 팀들은 슬랙에서 ModSecurity 의 차단이 늘어 일부 HMPPS 서비스를 사실상 쓸 수 없게 됐다는 메시지를 주고받았다.\n\nHMPPS 개발자들은 요청을 막는 CRS 규칙 몇 개를 찾아냈다. 오탐은 두 가지였다. 하나는 posthog 분석 서비스가 쓰는 쿠키의 내용이었고, 다른 하나는 HMPPS Auth 로 가는 요청의 Expect 헤더였다. posthog 쿠키 오탐은 성격상 MoJ 의 다른 부서 사용자에게도 번져, 그들도 Cloud Platform 의 애플리케이션에 들어가지 못했을 수 있다."},"updated_at":"2026-11-10T00:00:32.469820Z","url":"https://benchlet.com/incidentlib/app/cases/IL-0092","org_slug":"uk-ministry-of-justice"}