พบช่องโหว่บน AWS ECR ทำให้สามารถแก้ไข้ Public images ของ Account ใดก็ได้

สรุปรายละเอียดของช่องโหว่

  • ช่องโหว่เกิดขึ้นบน undocumented API ที่เกี่ยวข้องกับการเขียน Image
  • ช่องโหว่ทำให้สามารถแก้ไข้ Public ECR images ของ AWS account ใดก็ได้
  • ช่องโหว่ทำให้สามารถใช้โจมตี Image ที่เป็นนิยมเช่น Nginx, Amazon Linux, Ubuntu เพื่อใช้โจมตีแบบ Supply chain attack ได้

Amazon ECR Public Gallery เป็น public container repositories ให้บริษัทต่าง ๆ สามารถนำ Container Image มา Host เพื่อให้บริการกับลูกค้าเช่น NGINX, Ubuntu, Amazon Linux และ HashiCorp

นักวิจัยจาก Lightspin ค้นหา Internal API action ใน Amazon ECR Public Gallery JavaScript File พบว่ามี Action Name บางตัวที่ไม่ได้ถูก Document ไว้ และเป็น Action ที่เกียวข้องกับการเขียน Image 4 ตัวดังนี้

- DeleteImageForConvergentReplicationInternal
- DeleteTagForConvergentReplicationInternal
- PutImageForConvergentReplicationInternal
- PutLayerForConvergentReplicationInternal

แต่ว่า Internal API จำเป็นต้องมี identity credentials นักวิจัยจึงทำการ Intercept ECR Public Gallery request พบว่า ECR Public Gallery ใช้ credentials ที่ได้มาจาก API ของ Amazon Cognito

Amazon Cognito เป็น service ทีช่วยเรื่องการ authentication เพื่อให้ user สามารถเข้าใช้ resources บน AWS ได้ โดยที่ API ในการ Get Credentials เป็น Public API ทำให้นักวิจัยสามารถนำ Credentials นี้ไปใช้กับ ECR Internal API ได้

นักวิจัยจึงทำการทดลองส่ง Internal API 4 ตัวดังกล่าว ทำให้พบว่า Credentials ที่ได้มาจาก Cognito มีสิทธ์เขียน Public Image ใด ๆ ก็ได้ ชึ่งทำให้ช่องโหว่นี้อาจนำมาใช้โจมตีแบบ Supply chain attack กับ Public Image ที่มีผู้ใช้งานหลายล้านคนได้ ทาง Lightspin จึงได้รายงานช่องโหว่นี้กับทีม AWS Security

วิธีแก้ไข:

AWS ได้ทำการแก้ไขช่องโหว่ดังกล่าวเรียบร้อยแล้ว โดยที่ผู้ใช้งานไม่ต้องดำเนินการใด ๆ

ที่มา: blog.lightspin, aws.amazon