memory safety
termoprogramaçãosegurança
A propriedade de nunca acessar memória fora do que um programa legitimamente possui, no espaço ou no tempo.
São duas metades: segurança espacial significa ficar dentro dos limites de um objeto, e segurança temporal significa tocá-lo apenas enquanto ele está vivo, e é por isso que estouro de buffer e use-after-free são o mesmo problema visto em eixos diferentes. A conclusão da indústria, afirmada por CISA, NSA e Microsoft igualmente, é que cerca de setenta por cento das vulnerabilidades sérias em grandes bases de código C e C++ são falhas de segurança de memória, e foi isso que colocou Rust, Go, Java e o C++ moderno no centro da conversa. Reescrever tudo não é realista, então a resposta prática é linguagens seguras quanto à memória para componentes novos, mais endurecimento e sanitizadores para o código que fica.
Segurança de memória significa que um programa não consegue ler ou escrever fora do que legitimamente possui. Linguagens que a garantem eliminam estouros, uso após liberação, liberações duplas e corridas de dados sobre memória por construção, e não por disciplina.
Os números por trás da virada da indústria são contundentes: vários grandes fabricantes relataram que cerca de dois terços de suas vulnerabilidades graves são questões de segurança de memória, e essa proporção se manteve estável por anos apesar de investimento enorme em encontrá-las. Esse é o argumento para mudar o material em vez de inspecioná-lo com mais afinco. O contrapeso honesto é que reescrever sistemas que funcionam é caro e arriscado, e é por isso que o conselho prático é escrever componentes novos em linguagens seguras e endurecer os antigos em vez de substituí-los.
Também conhecido como: memory-safe language, spatial safety, temporal safety