V7.3.1 Log Protection
Requirement:#
Verify that all logging components appropriately encode data to prevent log injection. (C9)
Explanation:#
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΠ°ΠΉΠ»Ρ ΠΆΡΡΠ½Π°Π»ΠΎΠ² Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈΡΡΠΎΡΠΈΠΈ ΡΠΎΠ±ΡΡΠΈΠΉ ΠΈΠ»ΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ Π΄Π»Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΠΌΠΎΡΡΠ°, ΡΠ±ΠΎΡΠ° ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ ΠΈΠ»ΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠΈ. Π Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π·Π°Π΄Π°ΡΠ° ΠΏΡΠΎΡΠΌΠΎΡΡΠ° ΡΠ°ΠΉΠ»ΠΎΠ² ΠΆΡΡΠ½Π°Π»ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π²ΡΡΡΠ½ΡΡ ΠΏΠΎ ΠΌΠ΅ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΈΠ»ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΎΠ±ΠΈΡΠ°Π΅Ρ ΠΆΡΡΠ½Π°Π»Ρ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° Π²Π°ΠΆΠ½ΡΡ ΡΠΎΠ±ΡΡΠΈΠΉ ΠΈΠ»ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΡΠ΅Π½Π΄Π΅Π½ΡΠΈΡΡ .
ΠΠ°ΠΏΠΈΡΡ Π²ΡΠ΅Π΄Π½ΠΎΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π° Π² ΡΠ°ΠΉΠ»Ρ ΠΆΡΡΠ½Π°Π»ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡΡ Π·Π»ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊΡ ΠΏΠΎΠ΄Π΄Π΅Π»Π°ΡΡ Π·Π°ΠΏΠΈΡΠΈ ΠΆΡΡΠ½Π°Π»Π° ΠΈΠ»ΠΈ Π²Π½Π΅Π΄ΡΠΈΡΡ Π²ΡΠ΅Π΄ΠΎΠ½ΠΎΡΠ½ΠΎΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π² ΠΆΡΡΠ½Π°Π»Ρ. ΠΡΠΎ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Log Injection.
Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ Log injection Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ, ΠΊΠΎΠ³Π΄Π°:
- ΠΠ°Π½Π½ΡΠ΅ ΠΏΠΎΠΏΠ°Π΄Π°ΡΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ· Π½Π΅Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠ³ΠΎ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°
- ΠΡΠΈ Π΄Π°Π½Π½ΡΠ΅ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Π² ΡΠ°ΠΉΠ» ΠΆΡΡΠ½Π°Π»Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΡΠΈΡΡΠ΅ΠΌΡ.
Π£ΡΠΏΠ΅ΡΠ½ΡΠ΅ Π°ΡΠ°ΠΊΠΈ Π½Π° Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ ΠΆΡΡΠ½Π°Π»Π° ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ:
- ΠΠ²ΠΎΠ΄ Π½ΠΎΠ²ΡΡ /Π·Π°ΠΏΡΡΠ΅Π½Π½ΡΡ ΡΠΎΠ±ΡΡΠΈΠΉ ΠΆΡΡΠ½Π°Π»Π° (ΠΏΠΎΠ΄Π΄Π΅Π»ΠΊΠ° ΠΆΡΡΠ½Π°Π»Π° ΡΠ΅ΡΠ΅Π· Log Injection).
- ΠΠ½ΡΠ΅ΠΊΡΠΈΡ XSS-Π°ΡΠ°ΠΊ Π² Π½Π°Π΄Π΅ΠΆΠ΄Π΅, ΡΡΠΎ Π²ΡΠ΅Π΄ΠΎΠ½ΠΎΡΠ½ΠΎΠ΅ ΡΠΎΠ±ΡΡΠΈΠ΅ ΠΆΡΡΠ½Π°Π»Π° Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅Π½ΠΎ Π² ΡΡΠ·Π²ΠΈΠΌΠΎΠΌ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.
- ΠΠ½ΡΠ΅ΠΊΡΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Ρ ΠΏΠ°ΡΡΠ΅ΡΠ°ΠΌΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠ°ΡΡΠ΅ΡΠ°ΠΌΠΈ PHP)
Remediation:#
ΠΠ»ΡΡ ΠΊ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ΅Π½ΠΈΡ Log Injection ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π΄Π²ΡΡ ΡΠ°ΡΡΠ΅ΠΉ:
- ΠΡΠΏΠΎΠ»Π½ΡΠΉΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ Π²Π²ΠΎΠ΄Π°: ΠΠ³ΡΠ°Π½ΠΈΡΡΡΠ΅ Π½Π°Π±ΠΎΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΈ ΡΠΎΡΠΌΠ°Ρ, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°Π»ΠΈ Π²Π°ΡΠΈΠΌ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌ, ΠΈ ΠΎΡΠΊΠ»ΠΎΠ½ΡΠΉΡΠ΅ Π»ΡΠ±ΠΎΠΉ Π²Π²ΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡΠΌ. Β ΠΡΠΏΠΎΠ»Π½ΡΠΉΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ Π²Π²ΠΎΠ΄Π° ΠΊΠ°ΠΊ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ΅, ΡΠ°ΠΊ ΠΈ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ (Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΈΡΡΠ°ΡΠΈΠΈ).
- ΠΠ΅ΠΉΡΡΠ°Π»ΠΈΠ·ΡΠΉΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ: Π‘Π»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ "ΡΠΊΡΠ°Π½ΠΈΡΠΎΠ²Π°Π½Ρ" ΠΈΠ»ΠΈ Π·Π°ΠΌΠ΅Π½Π΅Π½Ρ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ Π²ΠΎ Π²Ρ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Π² ΡΠ°ΠΉΠ»Ρ/Π·Π°ΠΏΠΈΡΠΈ ΠΆΡΡΠ½Π°Π»Π°:
| Π‘ΠΈΠΌΠ²ΠΎΠ» | ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ |
|---|---|
| \r | Carriage Return |
| \n | Newline |
| 0x8 (octal 8) | Backspace |
| < | Less than |
| > | Greater than |
| & | Ampersand |
| β | Quote |
| β | Apostrophe |