Этот поток ycombinator утверждает, что
env X='() { (a)=>\' sh -c "echo date"
позволяет отбросить первый токен, а затем запустить результат, посылая вывод на упавший токен. Я вижу, что магия находится в части () { (a)=>\'
, но это довольно сложно найти, так что было бы здорово, если бы кто-то мог объяснить внутреннюю работу.
В связанном возможном дублированном вопросе переменная экспортируется в переменную среды, используя
env X="() { :;} ;
который действительно не совпадает с
env X='{ (a)=>\'
которая является той частью, которую я пытаюсь понять. Итак, что делают части (a)
и =>\'
? Очевидно, что он делает что-то очень похожее, но отличается тем, что получил первый патч этой уязвимости, см. Комментарии от chepner.