[Перевод] Вы используете ненадежный код

В декабре прошлого года Log4Shell сократил ночи многих людей в мире JVM. Хуже того, используя аналогию с землетрясением, после первоначального землетрясения возникло множество афтершоков.

Я сразу установил связь между Log4Shell и Security Manager. Сначала я не хотел об этом писать. Но ко мне поступили просьбы, и я не мог обойти это стороной.

Насколько я помню команда Oracle отказалась от Security Manager в Java 17. Один из аргументов, на котором основывалось это решение, заключается в том, что он изначально был разработан для защиты апплетов. 

Апплеты загружались из Интернета, поэтому их нужно было считать ненадежным кодом. Следовательно, нам пришлось запускать их в песочнице.

Хотя они никогда этого не говорили, из этого утверждения следует неявное следствие: поскольку апплеты теперь устарели, мы запускаем только доверенный код. Следовательно, мы можем отказаться от диспетчера безопасности. 

Это просто неправильно, и я объясню почему в этом посте.

Предположение о том, что коду, работающему внутри вашей инфраструктуры, можно доверять, опасно как локально, так и в облаке. Позвольте мне перечислить некоторые аргументы в поддержку этого утверждения.

Читать далее