V5.1.2 Input Validation
Requirement:#
Verify that frameworks protect against mass parameter assignment attacks, or that the application has countermeasures to protect against unsafe parameter assignment, such as marking fields private or similar. (C5)
Explanation:#
ΠΡΠ»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π°ΡΡΠΈΠ±ΡΡΡ, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠ΅ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ, ΡΠΎ ΠΈΡ Π½Π΅ΠΏΡΠ΅Π΄Π²ΠΈΠ΄Π΅Π½Π½Π°Ρ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ.Β ΠΡΠ° ΡΠ»Π°Π±ΠΎΡΡΡ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΈΠ·Π²Π΅ΡΡΠ½Π° Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΠΌ Π΄Π»Ρ ΡΠ·ΡΠΊΠ° ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ°ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π΅Π»Π°ΡΡ Π΅Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΌΠ°ΡΡΠΎΠ²ΠΎΠ΅ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ².Β
HTTP parameter pollution - ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΡΠ΅Π°ΠΊΡΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² HTTP Ρ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ ΡΠ΅ΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π²Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΠΉ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° HTTP (http://example.com/?color=red&color=blue)
Remediation:#
ΠΡΠ°ΠΊΠΈ Ρ ΠΌΠ°ΡΡΠΎΠ²ΡΠΌ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠ΅ ΠΊΠ°ΠΊ Π°ΡΠ°ΠΊΠΈ Ρ ΠΌΠ°ΡΡΠΎΠ²ΡΠΌ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ, ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΡΡ, ΠΊΠΎΠ³Π΄Π° Π·Π»ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ HTTP-Π·Π°ΠΏΡΠΎΡΠ°ΠΌΠΈ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΠΎΠΏΠ°ΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡΠΌ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ, ΡΠ°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠΎΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π° ΡΠΎΠ»Ρ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ° ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ΅Π½Ρ ΠΏΡΠΎΠ΄ΡΠΊΡΠ° Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΊΠΎΠΌΠΌΠ΅ΡΡΠΈΠΈ. ΠΠ»Ρ Π·Π°ΡΠΈΡΡ ΠΎΡ ΡΡΠΈΡ Π°ΡΠ°ΠΊ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π½Π°Π΄Π»Π΅ΠΆΠ°ΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ Π΄Π°Π½Π½ΡΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ Π·Π°ΡΠΈΡΡ ΠΎΡ ΠΌΠ°ΡΡΠΎΠ²ΠΎΠ³ΠΎ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΠΎΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ². Π Ruby on Rails Π°ΡΡΠΈΠ±ΡΡΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π·Π°ΡΠΈΡΠ΅Π½Ρ, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΈΡ Π½Π΅Π»ΡΠ·Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΈΠ· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π·Π°ΠΏΡΠΎΡΠ°. ΠΡΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡΡ Π°ΡΠ°ΠΊΠΈ Ρ ΠΌΠ°ΡΡΠΎΠ²ΡΠΌ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ. Π§ΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ Π°ΡΡΠΈΠ±ΡΡ Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΌΠ΅ΡΠΎΠ΄ attr_accessible. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
Π Django ΠΏΠΎΠ»Ρ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΡΠ°ΠΊΠΆΠ΅ Π·Π°ΡΠΈΡΠ΅Π½Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Π½ΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠ΅ΠΌΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΏΠΎΠ»Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
Π ASP.NET MVC Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π°ΡΡΠΈΠ±ΡΡ Bind, ΡΡΠΎΠ±Ρ ΡΠΊΠ°Π·Π°ΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° Π² Π²Π°ΡΠ΅ΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½Ρ Π΄Π»Ρ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ ΠΈΠ· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π·Π°ΠΏΡΠΎΡΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ: