| Summary: | SQL Injection через лог Squid | ||||||
|---|---|---|---|---|---|---|---|
| Product: | Sisyphus | Reporter: | Sergey Vlasov <vsu> | ||||
| Component: | squidmill | Assignee: | manowar <manowar> | ||||
| Status: | ASSIGNED --- | QA Contact: | qa-sisyphus | ||||
| Severity: | major | ||||||
| Priority: | P5 | CC: | manowar | ||||
| Version: | unstable | ||||||
| Hardware: | all | ||||||
| OS: | Linux | ||||||
| Attachments: |
|
||||||
Created attachment 20455 [details] bad.log — строка из access.log, на которой падает squidmill squidmill-2.7.0-alt2 Текстовые поля из access.log (например, поле ident) вставляются в SQL-запрос без экранирования символа "'", что приводит как минимум к падению squidmill при обработке строки лога, содержащей этот символ в одном из полей (Squid считает, что этот символ допустимо писать в лог без дополнительного экранирования). $ /usr/sbin/squidmill -d bad.db bad.log SQLite3 error (1): near "', '": syntax error *** ERROR -- This object was raised: (sqlite3-err 1 "near \"', '\": syntax error") Отдельный вопрос — нужно ли вообще обрабатывать строки с TCP_DENIED/407 (в них в поле ident пишется любое значение, присланное клиентом, даже если аутентификация не пройдена, но текущая реализация squidmill просто добавляет эти записи в статистику, учитывая в качестве трафика выданное Squid сообщение об ошибке аутентификации).