GH Actions - Cache Poisoning

Support HackTricks

For further details check the original post https://scribesecurity.com/blog/github-cache-poisoning/

Cache Poisoning

Git action action/cache рдирд┐рд░рдВрддрд░ рдПрдХреАрдХрд░рдг (CI) рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдПрдХ рдХреИрд╢рд┐рдВрдЧ рддрдВрддреНрд░ рдкреЗрд╢ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рджреЛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЪрд░рдг рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

  1. Run Action: рдЗрд╕ рдЪрд░рдг рдореЗрдВ CI рд░рди рдХреЗ рджреМрд░рд╛рди рдХреИрд╢ рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХреА рдЦреЛрдЬ рдФрд░ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ рд╢рд╛рдорд┐рд▓ рд╣реИред рдЦреЛрдЬ рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдХреИрд╢ рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ, рдЬрд┐рд╕рд╕реЗ рджреЛ рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓рддреЗ рд╣реИрдВ:

  • Cache-hit: рдЕрдиреБрд░реЛрдзрд┐рдд рдбреЗрдЯрд╛ рдХреИрд╢ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рддрджрдиреБрд╕рд╛рд░ рддрддреНрдХрд╛рд▓ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

  • Cache-miss: рдХреИрд╢ рдореЗрдВ рдХреЛрдИ рдореЗрд▓ рдЦрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдбреЗрдЯрд╛ рдирд╣реАрдВ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рдФрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХрд╛ рддрд╛рдЬрд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдкрд╣рд▓реА рдмрд╛рд░ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛред

  1. Post Workflow Action: рдпрд╣ рдЪрд░рдг CI рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣ рдХреЗ рдмрд╛рдж рдбреЗрдЯрд╛ рдХреЛ рдХреИрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдпрджрд┐ рд░рди рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди рдПрдХ рдХреИрд╢-рдорд┐рд╕ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреЛ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреИрд╢ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╣реИ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЖрд╣реНрд╡рд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

Security Measures: Cache Isolation and Access Restrictions

рд╕реБрд░рдХреНрд╖рд╛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдФрд░ рдХреИрд╢ рдЕрд▓рдЧрд╛рд╡ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд╣реБрдВрдЪ рдкреНрд░рддрд┐рдмрдВрдз рд▓рд╛рдЧреВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рд╢рд╛рдЦрд╛рдУрдВ рдХреЗ рдмреАрдЪ рдПрдХ рддрд╛рд░реНрдХрд┐рдХ рд╡рд┐рднрд╛рдЬрди рдмрдирд╛рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╢рд╛рдЦрд╛ Feature-A (рдЬрд┐рд╕рдХрд╛ рдЖрдзрд╛рд░ рдореБрдЦреНрдп рд╢рд╛рдЦрд╛ рд╣реИ) рдХреЗ рд▓рд┐рдП рдмрдирд╛рдП рдЧрдП рдХреИрд╢ рдХреЛ рд╢рд╛рдЦрд╛ Feature-B (рдЬреЛ рднреА рдореБрдЦреНрдп рд╢рд╛рдЦрд╛ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ) рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдЕрдиреБрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛ред

рдХреИрд╢ рдХреНрд░рд┐рдпрд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЦреЛрдЬ рдХреНрд░рдо рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреА рд╣реИ:

  • рдпрд╣ рдкрд╣рд▓реЗ рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣ рд░рди рдХреЗ рд╕рдорд╛рди рд╢рд╛рдЦрд╛ рдореЗрдВ рдХреИрд╢ рд╣рд┐рдЯ рдХреА рдЦреЛрдЬ рдХрд░рддреА рд╣реИред

  • рдпрджрд┐ рдЕрд╕рдлрд▓, рддреЛ рдпрд╣ рдЦреЛрдЬ рдХреЛ рдорд╛рддрд╛-рдкрд┐рддрд╛ рд╢рд╛рдЦрд╛ рдФрд░ рдЕрдиреНрдп рдЕрдкрд╕реНрдЯреНрд░реАрдо рд╢рд╛рдЦрд╛рдУрдВ рддрдХ рдмрдврд╝рд╛рддреА рд╣реИред

рдорд╣рддреНрд╡рдкреВрд░реНрдг рд░реВрдк рд╕реЗ, рдХреИрд╢ рдкрд╣реБрдВрдЪ рд╢рд╛рдЦрд╛-рд╕реНрдХреЛрдкреНрдб рд╣реИ, рдЬреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╢рд╛рдЦрд╛ рдХреЗ рд╕рднреА рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣реЛрдВ рдФрд░ рд░рдиреЛрдВ рдореЗрдВ рдлреИрд▓реА рд╣реБрдИ рд╣реИред рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, GitHub рдПрдХ рдмрд╛рд░ рдмрдирд╛рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдХреИрд╢ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЗрд╡рд▓-рдкрдврд╝рдиреЗ рдХреА рдиреАрддрд┐ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐рд╕реА рднреА рд╕рдВрд╢реЛрдзрди рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рддрд╛ рд╣реИред

Real-World Implication: From Low to High-Permission Workflow Attack

рдПрдХ рдЙрджрд╛рд╣рд░рдг CI рдкрд░рд┐рджреГрд╢реНрдп рдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╣рдорд▓рд╛рд╡рд░ рдХреИрд╕реЗ рдХреИрд╢ рд╡рд┐рд╖рд╛рдХреНрддрддрд╛ рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдХрд░ рдПрдХ рдирд┐рдореНрди-рдЕрдиреБрдорддрд┐ рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣ рд╕реЗ рдЙрдЪреНрдЪ-рдЕрдиреБрдорддрд┐ рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣ рдореЗрдВ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдмрдврд╝рд╛ рд╕рдХрддрд╛ рд╣реИ:

  • Unit-test рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣, рдЬреЛ рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг рдФрд░ рдХреЛрдб рдХрд╡рд░реЗрдЬ рдЙрдкрдХрд░рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рдпрд╣ рдорд╛рди рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд╕рдордЭреМрддрд╛ рдХрд┐рдП рдЧрдП рдпрд╛ рдХрдордЬреЛрд░ рдЙрдкрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣ action/cache Git рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдХреИрд╢ рдХрд┐рд╕реА рднреА рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣ рдХреЗ рд▓рд┐рдП рд╕реБрд▓рдн рд╣реЛрддрд╛ рд╣реИред

  • Release рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣, рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд▓рд╛рдХреГрддрд┐ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдФрд░ рд░рд┐рд▓реАрдЬрд╝ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ, рдЕрдкрдиреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдЧреЛрд▓реЗрдирд╛рдВрдЧ рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рдХреИрд╢ рдХрд░рдХреЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИред

рдЗрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ, рдпреВрдирд┐рдЯ-рдЯреЗрд╕реНрдЯ рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣ рдПрдХ рд╡реИрдз рдЧреЛрд▓реЗрдирд╛рдВрдЧ рд▓реЙрдЧрд┐рдВрдЧ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдХреЗ рдПрдХ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рдХреИрд╢ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдкреЗрд╢ рдХрд░рддрд╛ рд╣реИ (`go

Last updated