Translated ['src/pentesting-web/deserialization/nodejs-proto-prototype-p

This commit is contained in:
Translator 2025-08-19 22:04:16 +00:00
parent eb2e43bfcd
commit 7fac557cb9

View File

@ -31,7 +31,7 @@ var employee1 = new Employee("Generic Employee", "Developer")
employee1.__proto__ employee1.__proto__
``` ```
### Prototipagem em JavaScript ### Prototypes em JavaScript
JavaScript permite a modificação, adição ou exclusão de atributos de protótipo em tempo de execução. Essa flexibilidade possibilita a extensão dinâmica das funcionalidades de classes. JavaScript permite a modificação, adição ou exclusão de atributos de protótipo em tempo de execução. Essa flexibilidade possibilita a extensão dinâmica das funcionalidades de classes.
@ -41,9 +41,9 @@ Funções como `toString` e `valueOf` podem ser alteradas para mudar seu comport
Na programação baseada em protótipos, propriedades/métodos são herdados por objetos de classes. Essas classes são criadas adicionando propriedades/métodos a uma instância de outra classe ou a um objeto vazio. Na programação baseada em protótipos, propriedades/métodos são herdados por objetos de classes. Essas classes são criadas adicionando propriedades/métodos a uma instância de outra classe ou a um objeto vazio.
Deve-se notar que, quando uma propriedade é adicionada a um objeto que serve como protótipo para outros objetos (como `myPersonObj`), os objetos herdantes ganham acesso a essa nova propriedade. No entanto, essa propriedade não é exibida automaticamente, a menos que seja invocada explicitamente. Deve-se notar que, quando uma propriedade é adicionada a um objeto que serve como protótipo para outros objetos (como `myPersonObj`), os objetos que herdam ganham acesso a essa nova propriedade. No entanto, essa propriedade não é exibida automaticamente, a menos que seja invocada explicitamente.
## \_\_proto\_\_ poluição <a href="#id-0d0a" id="id-0d0a"></a> ## \_\_proto\_\_ pollution <a href="#id-0d0a" id="id-0d0a"></a>
## Explorando a Poluição de Protótipos em JavaScript ## Explorando a Poluição de Protótipos em JavaScript
@ -56,7 +56,7 @@ this.model = model
} }
var car1 = new Vehicle("Tesla Model S") var car1 = new Vehicle("Tesla Model S")
``` ```
O acesso ao protótipo Object é possível através de: O acesso ao protótipo do Object é possível através de:
```javascript ```javascript
car1.__proto__.__proto__ car1.__proto__.__proto__
Vehicle.__proto__.__proto__ Vehicle.__proto__.__proto__
@ -173,7 +173,7 @@ settings[root][ownerDocument][body][innerHTML]="<svg onload=alert(document.domai
Uma poluição de protótipo ocorre devido a uma falha na aplicação que permite sobrescrever propriedades em `Object.prototype`. Isso significa que, uma vez que a maioria dos objetos deriva suas propriedades de `Object.prototype` Uma poluição de protótipo ocorre devido a uma falha na aplicação que permite sobrescrever propriedades em `Object.prototype`. Isso significa que, uma vez que a maioria dos objetos deriva suas propriedades de `Object.prototype`
O exemplo mais fácil é adicionar um valor a um **atributo indefinido de um objeto** que será verificado, como: O exemplo mais fácil é adicionar um valor a um **atributo indefinido de um objeto** que vai ser verificado, como:
```javascript ```javascript
if (user.admin) { if (user.admin) {
``` ```
@ -228,9 +228,7 @@ Esta vulnerabilidade, identificada como CVE-201911358, ilustra como uma cópi
### Outro tutorial com CVEs ### Outro tutorial com CVEs
{{#ref}} - [https://infosecwriteups.com/javascript-prototype-pollution-practice-of-finding-and-exploitation-f97284333b2](https://infosecwriteups.com/javascript-prototype-pollution-practice-of-finding-and-exploitation-f97284333b2)
https://infosecwriteups.com/javascript-prototype-pollution-practice-of-finding-and-exploitation-f97284333b2
{{#endref}}
### Ferramentas para detectar Poluição de Protótipo ### Ferramentas para detectar Poluição de Protótipo
@ -285,7 +283,7 @@ Este código demonstra como um atacante poderia injetar código arbitrário em u
**Referência Externa**: Um problema relacionado à poluição de protótipos foi encontrado na biblioteca 'flat', conforme detalhado aqui: [Issue on GitHub](https://github.com/hughsk/flat/issues/105). **Referência Externa**: Um problema relacionado à poluição de protótipos foi encontrado na biblioteca 'flat', conforme detalhado aqui: [Issue on GitHub](https://github.com/hughsk/flat/issues/105).
**Referência Externa**: [Issue related to prototype pollution in the 'flat' library](https://github.com/hughsk/flat/issues/105) **Referência Externa**: [Issue relacionado à poluição de protótipos na biblioteca 'flat'](https://github.com/hughsk/flat/issues/105)
Exemplo de exploração de poluição de protótipos em Python: Exemplo de exploração de poluição de protótipos em Python:
```python ```python
@ -343,7 +341,7 @@ Para reduzir o risco de poluição de protótipos, as estratégias listadas abai
3. **Funções de Mesclagem Seguras**: O uso inseguro de funções de mesclagem recursivas deve ser evitado. 3. **Funções de Mesclagem Seguras**: O uso inseguro de funções de mesclagem recursivas deve ser evitado.
4. **Objetos Sem Protótipos**: Objetos sem propriedades de protótipo podem ser criados usando `Object.create(null)`. 4. **Objetos Sem Protótipos**: Objetos sem propriedades de protótipo podem ser criados usando `Object.create(null)`.
5. **Uso de Map**: Em vez de `Object`, `Map` deve ser usado para armazenar pares chave-valor. 5. **Uso de Map**: Em vez de `Object`, `Map` deve ser usado para armazenar pares chave-valor.
6. **Atualizações de Biblioteca**: Correções de segurança podem ser incorporadas atualizando regularmente as bibliotecas. 6. **Atualizações de Bibliotecas**: Correções de segurança podem ser incorporadas atualizando bibliotecas regularmente.
7. **Ferramentas de Linter e Análise Estática**: Use ferramentas como ESLint com plugins apropriados para detectar e prevenir vulnerabilidades de poluição de protótipos. 7. **Ferramentas de Linter e Análise Estática**: Use ferramentas como ESLint com plugins apropriados para detectar e prevenir vulnerabilidades de poluição de protótipos.
8. **Revisões de Código**: Implemente revisões de código minuciosas para identificar e remediar riscos potenciais relacionados à poluição de protótipos. 8. **Revisões de Código**: Implemente revisões de código minuciosas para identificar e remediar riscos potenciais relacionados à poluição de protótipos.
9. **Treinamento em Segurança**: Eduque os desenvolvedores sobre os riscos da poluição de protótipos e as melhores práticas para escrever código seguro. 9. **Treinamento em Segurança**: Eduque os desenvolvedores sobre os riscos da poluição de protótipos e as melhores práticas para escrever código seguro.