Maja Rudolph

48 papers A* 8Journal 36Unranked 3
YearRankTypeTitle / Venue / Authors
2025 J jnl
CoRR
Dennis Wagner, Arjun Nair, Billy Joe Franks, Justus Arweiler, Aparna Muraleedharan, Indra Jungjohann, Fabian Hartung, Mayank C. Ahuja, Andriy Balinskyy, Saurabh Varshneya, Nabeel Hussain Syed, Mayank Nagda, Philipp Liznerski, Steffen Reithermann, Maja Rudolph, Sebastian J. Vollmer, Ralf Schulz, Torsten Katz, Stephan Mandt, Michael Bortz, Heike Leitte, Daniel Neider, Jakob Burger, Fabian Jirasek, Hans Hasse, Sophie Fellenz, Marius Kloft
2025 J jnl
IEEE Trans. Artif. Intell.
Clement Fung, Chen Qiu, Aodong Li, Maja Rudolph
2025 J jnl
Trans. Mach. Learn. Res.
Laura Manduchi, Clara Meister, Kushagra Pandey, Robert Bamler, Ryan Cotterell, Sina Däubener, Sophie Fellenz, Asja Fischer, Thomas Gärtner, Matthias Kirchler, Marius Kloft, Yingzhen Li, Christoph Lippert, Gerard de Melo, Eric T. Nalisnick, Björn Ommer, Rajesh Ranganath, Maja Rudolph, Karen Ullrich, Guy Van den Broeck, Julia E. Vogt, Yixin Wang, Florian Wenzel, Frank Wood, Stephan Mandt, Vincent Fortuin
2025 J jnl
IEEE Trans. Pattern Anal. Mach. Intell.
Chen Qiu, Marius Kloft, Stephan Mandt, Maja Rudolph
2025 J jnl
CoRR
Zhiqi Gao, Tianyi Li, Yurii Kvasiuk, Sai Chaitanya Tadepalli, Maja Rudolph, Daniel J. H. Chung, Frederic Sala, Moritz Münchmeyer
2025 J jnl
CoRR
Daniel J. H. Chung, Zhiqi Gao, Yurii Kvasiuk, Tianyi Li, Moritz Münchmeyer, Maja Rudolph, Frederic Sala, Sai Chaitanya Tadepalli
2025 J jnl
Mach. Learn. Sci. Technol.
Daniel J. H. Chung, Zhiqi Gao, Yurii Kvasiuk, Tianyi Li, Moritz Münchmeyer, Maja Rudolph, Frederic Sala, Sai Chaitanya Tadepalli
2025 J jnl
Trans. Mach. Learn. Res.
Lorenzo Perini, Maja Rudolph, Sabrina Schmedding, Chen Qiu
2024 J jnl
CoRR
Aodong Li, Yunhan Zhao, Chen Qiu, Marius Kloft, Padhraic Smyth, Maja Rudolph, Stephan Mandt
2024 A* conf
ICLR
Kushagra Pandey, Maja Rudolph, Stephan Mandt
2024 J jnl
CoRR
Maja Rudolph, Stefan Kurz, Barbara Rakitsch
2024 J jnl
CoRR
Laura Manduchi, Kushagra Pandey, Robert Bamler, Ryan Cotterell, Sina Däubener, Sophie Fellenz, Asja Fischer, Thomas Gärtner, Matthias Kirchler, Marius Kloft, Yingzhen Li, Christoph Lippert, Gerard de Melo, Eric T. Nalisnick, Björn Ommer, Rajesh Ranganath, Maja Rudolph, Karen Ullrich, Guy Van den Broeck, Julia E. Vogt, Yixin Wang, Florian Wenzel, Frank Wood, Stephan Mandt, Vincent Fortuin
2024 J jnl
CoRR
Kushagra Pandey, Maja Rudolph, Stephan Mandt
2024 J jnl
CoRR
Lorenzo Perini, Maja Rudolph, Sabrina Schmedding, Chen Qiu
2023 J jnl
CoRR
Fabian Hartung, Billy Joe Franks, Tobias Michels, Dennis Wagner, Philipp Liznerski, Steffen Reithermann, Sophie Fellenz, Fabian Jirasek, Maja Rudolph, Daniel Neider, Heike Leitte, Chen Song, Benjamin Klöpper, Stephan Mandt, Michael Bortz, Jakob Burger, Hans Hasse, Marius Kloft
2023 A* conf
ICML
Aodong Li, Chen Qiu, Marius Kloft, Padhraic Smyth, Stephan Mandt, Maja Rudolph
2023 J jnl
CoRR
Aodong Li, Chen Qiu, Padhraic Smyth, Marius Kloft, Stephan Mandt, Maja Rudolph
2023 J jnl
CoRR
Kushagra Pandey, Maja Rudolph, Stephan Mandt
2023 J jnl
CoRR
Xi Wang, Laurence Aitchison, Maja Rudolph
2023 J jnl
CoRR
Clement Fung, Chen Qiu, Aodong Li, Maja Rudolph
2023 J jnl
Trans. Mach. Learn. Res.
Dennis Wagner, Tobias Michels, Florian C. F. Schulz, Arjun Nair, Maja Rudolph, Marius Kloft
2023 A* conf
NeurIPS
Aodong Li, Chen Qiu, Marius Kloft, Padhraic Smyth, Maja Rudolph, Stephan Mandt
2023 J jnl
CoRR
Aodong Li, Chen Qiu, Marius Kloft, Padhraic Smyth, Maja Rudolph, Stephan Mandt
2022 J jnl
CoRR
Sindy Löwe, Phillip Lippe, Maja Rudolph, Max Welling
2022 J jnl
Trans. Mach. Learn. Res.
Sindy Löwe, Phillip Lippe, Maja Rudolph, Max Welling
2022 J jnl
CoRR
Tim Schneider, Chen Qiu, Marius Kloft, Decky Aspandi-Latif, Steffen Staab, Stephan Mandt, Maja Rudolph
2022 A* conf
ICML
Chen Qiu, Aodong Li, Marius Kloft, Maja Rudolph, Stephan Mandt
2022 J jnl
CoRR
Chen Qiu, Aodong Li, Marius Kloft, Maja Rudolph, Stephan Mandt
2022 A* conf
ICML
Mona Schirmer, Mazin Eltayeb, Stefan Lessmann, Maja Rudolph
2022 A* conf
IJCAI
Chen Qiu, Marius Kloft, Stephan Mandt, Maja Rudolph
2022 J jnl
CoRR
Chen Qiu, Marius Kloft, Stephan Mandt, Maja Rudolph
2021 conf
PKDD/ECML Workshops (1)
Mona Schirmer, Mazin Eltayeb, Maja Rudolph
2021 J jnl
Entropy
Chen Qiu, Stephan Mandt, Maja Rudolph
2021 J jnl
CoRR
Mona Schirmer, Mazin Eltayeb, Stefan Lessmann, Maja Rudolph
2021 A* conf
ICML
Chen Qiu, Timo Pfrommer, Marius Kloft, Stephan Mandt, Maja Rudolph
2021 J jnl
CoRR
Chen Qiu, Timo Pfrommer, Marius Kloft, Stephan Mandt, Maja Rudolph
2021 J jnl
CoRR
Giao Nguyen-Quynh, Philipp Becker, Chen Qiu, Maja Rudolph, Gerhard Neumann
2020 J jnl
CoRR
Andreas Look, Chen Qiu, Maja Rudolph, Jan Peters, Melih Kandemir
2020 J jnl
CoRR
Chen Qiu, Stephan Mandt, Maja Rudolph
2019 J jnl
CoRR
James L. McClelland, Felix Hill, Maja Rudolph, Jason Baldridge, Hinrich Schütze
2018 A* conf
WWW
Maja Rudolph, David M. Blei
2018
Maja Rudolph
2017 J jnl
CoRR
Maja Rudolph, David M. Blei
2017 conf
NIPS
Maja Rudolph, Francisco J. R. Ruiz, Susan Athey, David M. Blei
2017 J jnl
CoRR
Maja Rudolph, Francisco J. R. Ruiz, Susan Athey, David M. Blei
2016 J jnl
CoRR
Dustin Tran, Alp Kucukelbir, Adji B. Dieng, Maja Rudolph, Dawen Liang, David M. Blei
2016 conf
NIPS
Maja Rudolph, Francisco J. R. Ruiz, Stephan Mandt, David M. Blei
2016 J jnl
CoRR
Maja Rudolph, Francisco J. R. Ruiz, Stephan Mandt, David M. Blei
redb/extractors/elf_extractors/elf_dependencies.py
← Index redb/extractors/elf_extractors/elf_dependencies.py python
import inspect
from datetime import datetime, timezone
from typing import Any, List, Dict

from elftools.elf.elffile import ELFFile
from elftools.common.exceptions import ELFError

from redb.extractors.enum import Tag
from redb.extractors.elf_extractor import ELFExtractor
from redb.models.dataclasses import ELFDependency


class ELFDependencyExtractor(ELFExtractor):

    def __init__(
        self,
        filepath,
        log,
        exporters=None,
        index_prefix=None,
        elastic_index=None,
        known_benign=False,
        known_malicious=False,
        elf=None,
    ):
        super().__init__(
            filepath,
            log,
            exporters,
            index_prefix,
            elastic_index,
            known_benign,
            known_malicious,
            elf,
        )
        self.elf_dependencies = []
        self.elastic_index = self.index_prefix + "-elf_dependencies"
        self.log.debug(inspect.currentframe().f_code.co_name)

    def _map_dependency_type(self, dt_tag_str: str) -> int:
        """Map dynamic tag string to enum value."""
        type_map = {
            'DT_NEEDED': 1,
            'DT_SONAME': 14,
            'DT_RPATH': 15,
            'DT_RUNPATH': 29
        }
        return type_map.get(dt_tag_str, 0)

    def _extract_dynamic_dependencies(self, elf) -> List[Dict]:
        """Extract dependencies from the dynamic section."""
        dependencies = []

        try:
            # Get the dynamic section
            dynamic_section = elf.get_section_by_name('.dynamic')
            if not dynamic_section:
                self.log.debug("No .dynamic section found")
                return dependencies

            # Iterate through dynamic tags
            for tag in dynamic_section.iter_tags():
                dt_tag = tag.entry.d_tag

                # Handle different dependency types
                if dt_tag == 'DT_NEEDED':
                    # Required library
                    dependency_name = tag.needed
                    dependencies.append(ELFDependency(
                        dependency_name=dependency_name,
                        dependency_type=self._map_dependency_type('DT_NEEDED'),
                        dependency_type_str='NEEDED'
                    ))

                elif dt_tag == 'DT_SONAME':
                    # Shared object name
                    dependency_name = tag.soname
                    dependencies.append(ELFDependency(
                        dependency_name=dependency_name,
                        dependency_type=self._map_dependency_type('DT_SONAME'),
                        dependency_type_str='SONAME'
                    ))

                elif dt_tag == 'DT_RPATH':
                    # Runtime library search path
                    dependency_name = tag.rpath
                    dependencies.append(ELFDependency(
                        dependency_name=dependency_name,
                        dependency_type=self._map_dependency_type('DT_RPATH'),
                        dependency_type_str='RPATH'
                    ))

                elif dt_tag == 'DT_RUNPATH':
                    # Runtime library search path (newer)
                    dependency_name = tag.runpath
                    dependencies.append(ELFDependency(
                        dependency_name=dependency_name,
                        dependency_type=self._map_dependency_type('DT_RUNPATH'),
                        dependency_type_str='RUNPATH'
                    ))

        except Exception as e:
            self.log.error(f"Error extracting dynamic dependencies: {e}")

        return dependencies

    def tag(self):
        return Tag.ELF_DEPENDENCIES.value if hasattr(Tag, 'ELF_DEPENDENCIES') else "elf_dependencies"

    def extract(self):
        try:
            self.log.debug(inspect.currentframe().f_code.co_name)

            def extract_data(elf):
                # Extract dependencies - returns list of ELFDependency dataclasses
                dependencies = self._extract_dynamic_dependencies(elf)
                return dependencies

            if not self._is_elf_file():
                return None

            result = self._with_elf_file(extract_data)
            if result is None:
                return None

            self.elf_dependencies = result
            return self.elf_dependencies

        except Exception as e:
            self.log.error(f"Error extracting ELF dependencies {self.hash.sha256}: {e}")
            return None

    def prepare_export_data(self, exporter_type: str) -> Any:
        self.log.debug(inspect.currentframe().f_code.co_name)

        if exporter_type == "ElasticsearchExporter":
            return self.elf_dependencies
        elif exporter_type == "ClickHouseExporter":
            try:
                # Return valid empty structure if no dependencies (e.g., statically linked binary)
                # None is reserved for actual errors

                # Prepare data arrays for all dependencies
                data = []
                current_time = datetime.now(timezone.utc)
                for dep in self.elf_dependencies:
                    row = [
                        self.sha256,
                        self.md5,
                        self.sha1,
                        dep.dependency_name,
                        dep.dependency_type,
                        dep.dependency_type_str,
                        current_time
                    ]
                    data.append(row)

                column_names = [
                    'sha256', 'md5', 'sha1',
                    'dependency_name', 'dependency_type', 'dependency_type_str',
                    'analysis_date'
                ]

                if not data:
                    return None

                column_type_names = [
                    'FixedString(64)', 'FixedString(32)', 'FixedString(40)',
                    'LowCardinality(String)',
                    "Enum8('NEEDED'=1, 'SONAME'=14, 'RPATH'=15, 'RUNPATH'=29)",
                    'LowCardinality(String)',
                    'DateTime64(3, \'UTC\')'
                ]

                return (data, column_names, column_type_names)

            except Exception as e:
                self.log.error(f"Error preparing export data: {e}")
                raise

    def get_clickhouse_table(self) -> str:
        return "redb_elf_dependencies"