Dynamic attribute access via getattr()
Low
- Category
- Dangerous Code Execution
- Content
if filters: for key, value in filters.items(): query = query.filter(getattr(self.__model__, key) == value) if offset: query = query.offset(offset)- Confidence
- 83% confidence
- Finding
- Using getattr(self.__model__, key) on caller-supplied filter keys allows untrusted input to select arbitrary model attributes for query construction. While this is not SQL injection because SQLAlchemy parameterizes values, it can enable unauthorized querying on sensitive columns, trigger errors/DoS via invalid attributes, and bypass intended field-level restrictions if higher layers pass user-controlled filters directly.
