Да, есть такая штука, что если ID элемента правильный, а SECTION_ID нет, все равно будет показан этот элемент.
Что тут можно сделать (ну вот ни когда таким вопросом не задавался - даже в голову не приходило, что элемент будет индексироваться по другому юрлу, а сейчас раз возник вопрос, попробую поразмышлять)
1. создаем карту сайта и скармливаем ее поисковикам.
2. для того, чтобы не выдавало страницу по неверному адресу можно:
2.1. Построить юрлы вида: /catalog/#ELEMNT_ID#/ - для элемента и /catalog/#SECTION_ID#/ (т.е. исключаем каталог из полной длины юрла, а это уже позволяет сделать проверку на использование в юрле SECTION_ID совместно с ELEMENT_ID и 301 редирект(LocalRedirect) на верную страницу элемента)
2.2. Либо переписываем компонент детальной страницы - в общем случае добавится 1 запрос к базе, но его можно закешировать и нагрузка вырастет не значительно. В этой модификации (файл компонента component.php) в самом начале определяем по ID-элемента его реальный раздел и сравниваем с переданным параметром $_REQUEST["SECTION_ID"], если не совпадает, 301 редирект на правильную страницу.
Но хочу еще раз сказать - а зачем это? Каким образом вдруг кто-то и зачем-то будет вводить не верный номер раздела? Это раз. И два - элементы могут находиться сразу в нескольких разделах и тогда вариант 2.2 будет не приемлем.
Собсно говоря, чем мешает то элемент в другом разделе? Может его и помещали сразу в несколько разделов одновременно?
(Сорри за некоторую сумбурность, но я же обещал подумать - вот и наразмышлял тут :))
Можете сами посмотреть код component.php и увидеть последовательность операций, приводящих к такому результату. Компонент изначально делается как универсальный, в том числе и для работы с множественной принадлежностью элементов к разным разделам.